Features implemented: user authentication, profile viewing, posting, commenting, and following/unfollowing.
- Add option for user to post images
- Add option for user to change their avatar/background to a custom image
- Add social media login options (e.g. Facebook, Google, Twitter)
- Implement find users feature (i.e. find users by typing their name into a search field)
- Improve code organization
- Write more tests
First install the dependencies:
- Clone the repository.
cd
into the directory and runnpm install
.- Run
cd client && npm install
.
Next, set up the database credentials:
-
Log into or create an [MongoDB Atlas]
-
Create a new MongoDB cluster. You can go with the default settings or customize them as you wish. Once the cluster is created, click "Connect."
-
Whitelist a connection IP address and create a new MongoDB user.
-
Once connection security is set up, choose "Connect Your Application."
-
Replace the dbURI in
secrets.js
, located in backend folder, with the connection string. Replacedbname
, and<password>
with the user and password you created in step 2. -
cd
back into the main directory and runnpm start
. You can access the site atlocalhost:3000
.
- Express.js - Backend web framework
- JSON Web Token - A standard to securely authenticate HTTP requests
- Material-UI - UI library for React
- MongoDB - Database to store document-based data
- Mongoose - Object-modeling tool for Node.js
- Node.js - Runtime environment to help build fast server applications
- React - JavaScript library for building user interfaces
- Redux - JavaScript library to help better manage application state
- Design was inspired by preexisting projects like Qolzam's React Social Network and Shama Hoque's Mern Social.
- Authentication was implemented with the help of Krunal Lathiya's example, Brad Traversy's guide on building a login system, and Maximilian Schwarzmüller's guide on JWT (primarily episodes 11 and 12).
- Restful CRUD API builds on concepts explained in Andrew Mead's Node.js course.
- Material-UI, React, Redux, Mongoose documentation.