A full-stack MERN (MongoDB, Express, React, Node.js) application for managing your todos with user authentication, priority levels, categories, and statistics tracking.
- User Authentication: Secure registration and login system
- Todo Management: Create, read, update, and delete todos
- Priority Levels: Assign low, medium, or high priority to tasks
- Categories: Organize todos by work, personal, shopping, or other categories
- Due Dates: Set and track due dates for your todos
- Dashboard: View statistics about your todos, including completion rates
- Responsive Design: Works on desktop and mobile devices
- React 19
- React Router 6
- Axios for API requests
- CSS with support for Tailwind CSS
- Node.js with Express
- MongoDB with Mongoose ORM
- JWT for authentication
- bcrypt for password hashing
- Node.js (v16 or later)
- npm or yarn
- MongoDB (local or Atlas)
git clone https://github.com/yourusername/todo-app.git
cd todo-appCreate a .env file in the server directory:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRE=30d
PORT=5000
cd server
npm install
npm run devThe server will run on http://localhost:5000
cd client
npm install
npm startThe client will run on http://localhost:3000
todo-app/
├── client/ # React frontend
│ ├── public/ # Public assets
│ └── src/
│ ├── components/ # UI components
│ ├── context/ # React context providers
│ ├── pages/ # App pages
│ └── services/ # API services
├── server/ # Node.js backend
│ ├── config/ # Configuration files
│ ├── controllers/ # Route controllers
│ ├── middleware/ # Express middleware
│ ├── models/ # Mongoose models
│ └── routes/ # API routes
- Authentication: Users register or login to access the app
- Home Page: Main todo list with filtering and sorting options
- Add/Edit Todos: Form to create or edit todos with various options
- Dashboard: Statistics and charts showing todo completion rates
- Profile: User profile management
POST /api/users/register- Register a new userPOST /api/users/login- Login a userGET /api/users/me- Get current user profilePUT /api/users/profile- Update user profileDELETE /api/users/account- Delete user account
GET /api/todos- Get all todos for the current userPOST /api/todos- Create a new todoGET /api/todos/:id- Get a specific todoPUT /api/todos/:id- Update a todoDELETE /api/todos/:id- Delete a todoPATCH /api/todos/:id/toggle- Toggle todo completionGET /api/todos/stats- Get todo statisticsGET /api/todos/date-range- Get todos by date rangeGET /api/todos/count- Get todos count by priority and status
- Drag and drop reordering of todos
- Calendar view of todos
- Subtasks and nested todos
- Collaborative todos and sharing
- Email/push notifications for reminders
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.