β¨πFull-stack forum website built with MERN Stack (ReactJS, NodeJS, ExpressJS, MongoDB).β¨π
- User authentication using JSON Web Tokens (JWT) with BFF (Backend-For-Frontend) security pattern.
- Allow users to create, read and delete topics.
- Allow users to create, read and delete comments.
- Allow users to create, read and delete replies.
- Search engine for searching topics supported with sorting filters.
- Allow users to upvote and downvote topics and comments.
- Allow users to see their published comments, created topics, upvoted topics, their following list and their followers list.
- Allow users to reset their account password if they forgot it.
- Nested comments threading.
- Homepage feed (Front Page).
- Allow users to follow each other.
- Allow users to edit their profile informations and change their profile avatar and cover.
- Users can't access their account after signin-up till they activate it from the link sent to the email associated with their account.
- Sending users an email in case they request a password reset or an email verification.
- ... And more to come with next updates!
- ReactJS
- ExpressJS
- NodeJS
- MongoDB
- Redux
- Redux Toolkit
- React Bootstrap
1- Clone this repo.
git clone https://github.com/ilyasbelfar/ONetwork-Forum.git
cd ONetwork-Forum
2- Install Client dependencies.
cd client/
npm i
3- Install Server dependencies.
cd server/
npm i
4- Configure environment variables by creating .env file in the server directory and copy the content of env.example file in .env file, and fill it with your own secrets.
cd server/
cp env.example .env
5- Create a MongoDB database and name it 'my_app', You can use MongoDB Atlas cloud free tier.
6- Start server.
cd server/
npm start
7- Start client in another terminal while the server is running.
cd client/
npm start
I encourages contributions! Feel free to discuss any bug fixes/features in the issues section. And if you wish to work on this project:
- Fork this project
- Create a branch (
git checkout -b new-branch
) - Commit your changes (
git commit -am 'add new feature'
) - Push to the branch (
git push origin new-branch
) - Submit a pull request!