Welcome to Friendzone! Friendzone is a fullstack application clone, inspired by Facebook. Create a user, create a post, like some posts, add some comments, and force someone to be your friend or ... friendzone someone!
Live site: https://friendzone-0ev3.onrender.com/
App Academy January 2023 Cohort
This was our first group project together. We decided to clone Facebook as we were a group of ambitious individuals.
Throughout this process, we learned many new skills and developed as software developers:
- This is was our first opportunity to implement Python/Flask in a project.
- This is our first time creating a project from scratch including creating the Database Schema, API Documentations, and creating the React app.
- We learned to work as a group and communicate better using proper Git work flow.
- We gained more experience in using React/Redux Store.
- We successfully created a git work flow to ensure proper versionc ontrol and team work flow
- Adanna Liu LinkedIn GitHub
- Albert Kim LinkedIn GitHub
- Katie Piele LinkedIn GitHub
- PJ Singh LinkedIn GitHub
- Python
- PostgresSQL
- Flask
- React/Redux
- AWS
- HTML/CSS
- Clone this repository:
https://github.com/KatiePee/FriendZone.git
-
Install denpendencies into the Backed and the Frontend
npm install and pipenv install
-
Create a .env file using the .envexample provided
-
Set up your database with information from your .env and then run the following to create your database, migrate, and seed:
pipenv run flask db migrate
pipenv run flask db upgrade
pipenv run flask seed all
- Start the app for both backend and frontend using:
pipenv run flask run
npm start
- Now you can use the Demo User or Create an account
- For setting up your AWS refer to this guide
- Users can sign up, log in, and log out.
- Users can use a demo log in to try the site.
- Users must be logged in to view, like, and comment on posts.
- Logged in users are directed to their timeline which displays posts from themselves and their friends.
- Logged out users are directed to the landing page where they can sign up or log in.
- Logged in users can see their own posts and friends' posts on the homepage.
- Logged in users can see all posts a user has made on a user's profile page.
- Logged in users can make posts from the home page.
- Logged in users can edit and delete their own posts.
- Logged in users can see comments on all visible posts.
- Logged in users can post comments on posts, including their own.
- Logged in users can edit and delete their own comments.
- Logged in users can see how many users have liked a post or comment.
- Logged in users can like posts and comments, including their own.
- Logged in users can remove their own like from posts and comments.
- Logged in users can make other users their friends.
- Logged in users can delete friends from their friends list.
- Users can view other users friends.
- Implement web sockets to enable users to live chat wuth each other
- Implement a music player so users can listen to music while browsing on FriendZone.
- Utilize the Spotify API, enabling users to connect to their own spotify account and play music
Request | Purpose | Return Value |
---|---|---|
GET '/api/auth/' | Fetches the current logged in user or returns null | { id: int, username: STRING, email: STRING } |
POST '/api/auth/login' | Logs in user | { id: int, email: STRING, firstName: STRING, lastName: STRING, profilePicURL: STRING, coverPhotoURL: STRING, gender: STRING, createdAt: DATETIME } |
GET '/api/auth/logout' | Logsout user | {'message': 'User logged out'} |
POST /api/auth/signup | Signs up user | { id: int, username: STRING, email: STRING } |
GET /api/likes/ | get likes of a post | { user_id: INT, listing_id: INT, totalReviews: INT, avgReviews: INT, owner: user obj, images: ARRAY } |
POST /api/likes/listing/:id | add like to listing | { "message": "listing added to likes" } |
DELETE /api/likes/listing/:id | remove like from listing | { "message": "listing removed from likes" } |
GET /api/listings | get all listings | { id: INT, name: STRING, userId: INT, price: INT, category: STRING, description: STRING, totalReviews: INT, avgRating: INT, owner: user, images: ARRAY } |