An implementation of Instagram utilizing NextJS - a React framework.
Live Demonstration: https://cyangram.vercel.app/
More about the project can be found at: https://www.theodinproject.com/paths/full-stack-javascript/courses/javascript/lessons/javascript-final-project
Category | Input Type | Min Length | Max Length | Others Constraints |
---|---|---|---|---|
Profile | Name | 8 | 30 | Only letters, numbers, underscores, and periods |
Username | 8 | 30 | Only letters, numbers, underscores, and periods | |
Bio | - | 200 | Can't start & end with whitespace | |
Account | Password | 6 | - | Can't start & end with whitespace |
Post | Description | - | 200 | Can't start & end with whitespace |
Comment | - | 200 | Can't start & end with whitespace | |
Messages | Message | - | 200 | Can't start & end with whitespace |
Images | Image | - | 5MB | Configurable in the environment variables. |
When logged in as the admin user, going to <site url>/admin
url will bring up the admin panel page. There, you can delete a user, post, or comment from knowing its id.
It's important to make sure you set the
ADMIN_ID
environment variable to the user that will have admin privileges.
The admin account will function like a normal account as well.
This utilizes NextJS which allows us to do both the back and frontend in the same project. The backend is done through the /api
page routes. I utilized MongoDB for the general storage of everything and Firebase for image storage.
Currently, we limit the use of the app to authenticated users (ie: users with an account).
We also utilize reCaptcha V3 to verify signup requests.
- "Realtime" Messaging โ to prevent pinging our backend too much, we have it update every 30 seconds (this can be changed in
components/pageLayouts/messagingPages/conversation.js
file by changing theREFRESH_TIME_MS
varaible).
- Edit profile (Profile Picture, Username, Name, Password, Bio, Delete Account)
- Follow/Unfollow People
- Home feed with option to show posts from those we follow or a discover feed
- Create/delete posts
- Like & comment on posts
- Get sharable link for posts
- You can search for other users!
- Supports Light/Dark Modes
- Mobile-friendly
Look in the
ENVFileInfo.md
file for more information.
To run the app locally, run npm run dev
;