A comprehensive task management application built with React, Node.js, and MongoDB. This application allows users to manage their tasks, projects, and team collaborations efficiently.
- User Authentication: Secure login and registration system.
- Task Management: Create, read, update, and delete tasks.
- Project Management: Organize tasks into projects.
- Team Collaboration: Assign tasks to team members and track progress.
- Dashboard: Overview of all tasks and projects.
- Responsive Design: Works seamlessly on desktop and mobile devices.
- React: UI library for building the user interface.
- Redux Toolkit: State management.
- React Router: Navigation between pages.
- Material-UI: UI components and styling.
- Axios: HTTP client for API requests.
- Node.js: JavaScript runtime for the server.
- Express.js: Web framework for building the API.
- MongoDB: NoSQL database for data storage.
- Mongoose: ODM for MongoDB.
- JWT (JSON Web Tokens): Authentication and authorization.
- Bcrypt: Password hashing.
task-management-app/
├── client/ # Frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── redux/ # Redux store and slices
│ │ ├── services/ # API service layer
│ │ └── App.js # Main application component
│ └── package.json
├── server/ # Backend application
│ ├── config/ # Configuration files
│ ├── controllers/ # Request handlers
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── middleware/ # Custom middleware
│ └── server.js # Express server entry point
├── .env # Environment variables
├── package.json # Root project dependencies
└── README.md # Project documentation
- Node.js (v14 or higher)
- npm (or yarn)
- MongoDB (running locally or a MongoDB Atlas connection string)
git clone <repository-url>
cd task-management-appcd server
npm installcd ../client
npm installCreate a .env file in the root directory with the following variables:
# Server configuration
PORT=5000
# MongoDB configuration
MONGO_URI=mongodb://localhost:27017/task_management
# JWT configuration
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=24hNote: Replace the placeholder values with your actual configuration.
cd server
npm startThe server will start on http://localhost:5000.
cd client
npm startThe application will open in your browser at http://localhost:3000.
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user profile
GET /api/tasks- Get all tasksPOST /api/tasks- Create a new taskGET /api/tasks/:id- Get task by IDPUT /api/tasks/:id- Update taskDELETE /api/tasks/:id- Delete task
GET /api/projects- Get all projectsPOST /api/projects- Create a new projectGET /api/projects/:id- Get project by IDPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
For development, you can use nodemon to automatically restart the server on code changes:
cd server
npm run devYou can use a tool like concurrently to run both the frontend and backend simultaneously:
# Install concurrently in the root directory
npm install -g concurrently
# Run both from the root directory
concurrently "cd server && npm run dev" "cd client && npm start"To build the frontend for production:
cd client
npm run buildTo run the application in production mode, ensure your production environment variables are set and start the server:
cd server
npm startThis project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For questions or support, please open an issue or contact the maintainers.