Task Manager is a full-stack web application designed to help users efficiently manage their tasks. The application provides features such as user authentication, task creation, task management, and profile customization. It is built using modern web technologies, including React, Redux, Node.js, Express, and MongoDB.
- Sign Up & Login: Secure user authentication using JSON Web Tokens (JWT).
- Profile Management: Update user details, upload profile pictures, and delete accounts.
- Task Management:
- Create, edit, and delete tasks.
- Mark tasks as completed or pending.
- Set task priorities (Low, Medium, High).
- View tasks in a responsive dashboard.
- Modular and scalable project structure.
- Lightweight and efficient, powered by Express.js.
- React: For building the user interface.
- Redux Toolkit: For state management.
- React Router: For client-side routing.
- Tailwind CSS: For styling.
- Vite: For fast development and build tooling.
- Node.js: For server-side JavaScript runtime.
- Express: For building RESTful APIs.
- MongoDB: For database storage.
- Mongoose: For object data modeling (ODM).
- JWT: For secure user authentication.
- Multer: For handling file uploads.
Follow these instructions to set up and run the project on your local machine.
Ensure you have the following installed on your system:
-
Clone the repository:
git clone https://github.com/bhatarshid/task-manager-app.git cd task-manager-app -
Backend Server
-
cd task-manager npm install - Create .env file in this directory
- Add the following environment variable to your .env file:
This secret string will be used to sign JSON Web Tokens. Make sure to replace your_secret_string with a strong, unique secret and mongodb_url with your database url.
PORT=3000 JWT_SECRET=your_secret_string MONGODB_URL= mongodb_url
- Start the Server
npm run dev
-
-
Client:
-
cd task-manager-client npm install - Create .env file in this directory
- Add the following environment variable to your .env file:
VITE_API_URL=http://localhost:3000
- Start the Client
npm run dev
-
Once both the frontend and backend are running, you can interact with the backend using API clients like Postman or cURL. The client will be running on http://localhost:5173.
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
| POST | /users |
Create a new user (Sign Up) | No |
| POST | /users/login |
Login an existing user | No |
| POST | /users/logout |
Logout the current user | Yes |
| GET | /users/me |
Get the logged-in user's profile | Yes |
| PATCH | /users/me |
Update the logged-in user's profile | Yes |
| DELETE | /users/me |
Delete the logged-in user's account | Yes |
| POST | /users/me/avatar |
Upload a profile picture | Yes |
| DELETE | /users/me/avatar |
Delete the profile picture | Yes |
| Method | Endpoint | Description | Authentication |
|---|---|---|---|
| POST | /tasks |
Create a new task | Yes |
| GET | /tasks |
Get all tasks for the user | Yes |
| GET | /tasks/:id |
Get a specific task by ID | Yes |
| PATCH | /tasks/:id |
Update a task by ID | Yes |
| DELETE | /tasks/:id |
Delete a task by ID | Yes |
Contributions are welcome! To contribute:
-
Fork the repository.
-
Create a new branch for your feature or bug fix:
git checkout -b feature-name
-
Commit your changes and push to your forked repository:
git commit -m "Add your descriptive commit message here" git push origin feature-name -
Open a pull request to the
masterbranch of this repository.
This project is licensed under the MIT License. See the LICENSE file for more details.