A functional task management application built using the MERN (MongoDB, Express, React, Node.js) stack. The app allows users to manage tasks with features like user authentication (JWT & Google OAuth), task creation, task arrangement using drag-and-drop, and much more.
- User Authentication: Secure login, registration, and logout using JWT (HttpOnly cookies) for protection against XSS attacks. Google OAuth is also integrated.
- Task Management: Users can create, search, update, and delete tasks.
- Drag-and-Drop: Easily manage tasks between "To Do", "In Progress", and "Done" columns.
- Protected Routes: Only authenticated users can access protected pages, and already logged-in users cannot access login or signup pages.
- Optimistic Updates: React Query is used for server-side caching and optimistic UI updates.
- Responsive UI: Developed with React Beautiful DnD and customized UI components.
- React (v18.3.1)
- Redux Toolkit for global state management
- React Router for routing
- React Query for handling server data and caching
- React Hook Form (with Zod validation)
- React Beautiful DnD for drag-and-drop interactions
- Axios for HTTP requests
- Flowbite-React for UI components
- React Toastify for user notifications
- Node.js (v18.x)
- Express.js (v4.19.2) for the API
- MongoDB with Mongoose for the database
- JWT for user authentication
- Bcrypt.js for password hashing
- Cookie-Parser for handling JWT cookies
Check out the live deployed version here.
To get this project running on your local machine, follow these steps:
- Node.js (v18.x or later)
- MongoDB (local installation or MongoDB Atlas)
-
Clone the repository:
git clone https://github.com/razak571/mern_task_manager_app.git
-
Navigate into the project directory:
cd mern_task_manager_app
-
Navigate to the backend folder:
cd backend
-
Install backend dependencies:
npm install
-
Create a
.env
file in thebackend
folder and set the following environment variables:MONGO_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret
-
Start the backend server:
npm start
The backend server will start at http://localhost:5000
.
-
Navigate to the frontend folder:
cd ../frontend
-
Install frontend dependencies:
npm install
-
Create a
.env
file in thefrontend
folder and add the backend URL:REACT_APP_API_URL=http://localhost:5000
-
Start the frontend development server:
npm start
The app will be running at http://localhost:3000
.
Once both servers (backend and frontend) are running, you can test the application by navigating to http://localhost:3000
in your browser.
In the project directories, you can run:
npm start
: Starts the development server.npm build
: Builds the app for production.
- User Avatar: Implement profile avatars for users.
- Notifications: Add real-time notifications for task updates.
- Improved UI: Align UI elements like search button and filters with a more polished design.
- Minor alignment issues with the search button and add task button.
- A small bug with cookies in production when using JWT (will be fixed soon).
Feel free to fork the repository, submit issues, or make pull requests. Any contributions are welcome!
This project is licensed under the MIT License.
Razak - GitHub
⭐️ If you found this project helpful, please give it a star on GitHub! ⭐️