A full-stack task management application built with React and Node.js, featuring user authentication, task management, and email notifications.
- User Authentication: Secure login/signup with JWT tokens
- Password Recovery: Forgot password with OTP verification via email
- Task Management: Create, read, update, and delete tasks
- Protected Routes: Secure access to authenticated features
- Responsive Design: Built with Tailwind CSS and modern animations
- Email Notifications: Powered by Nodemailer
- Security: Helmet, CORS, rate limiting, and input validation
- React 19 - UI framework
- Vite - Build tool and dev server
- React Router DOM - Client-side routing
- Tailwind CSS - Styling framework
- Framer Motion & GSAP - Animations
- Axios - HTTP client
- React Toastify - Notifications
- Lucide React - Icons
- Node.js - Runtime environment
- Express.js - Web framework
- MongoDB - Database (via Mongoose)
- JWT - Authentication tokens
- Bcrypt - Password hashing
- Nodemailer - Email service
- Express Validator - Input validation
- Helmet - Security middleware
Before running this project, make sure you have:
- Node.js (v16 or higher)
- npm or yarn
- MongoDB (local installation or MongoDB Atlas)
- Email service credentials (for password recovery)
git clone <your-repository-url>
cd TaskManagerProjectcd backend
npm installCreate a .env file in the backend directory:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/taskmanager
JWT_SECRET=your-super-secret-jwt-key
EMAIL_USER=your-email@gmail.com
EMAIL_PASS=your-app-passwordStart the backend server:
npm startcd ../frontend
npm installStart the development server:
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
TaskManagerProject/
├── backend/
│ ├── controllers/ # Request handlers
│ ├── database/ # Database connection
│ ├── middleware/ # Custom middleware
│ ├── models/ # MongoDB schemas
│ ├── routes/ # API routes
│ ├── utils/ # Utility functions
│ ├── app.js # Express app configuration
│ └── server.js # Server entry point
└── frontend/
├── src/
│ ├── components/ # React components
│ ├── App.jsx # Main app component
│ └── main.jsx # Entry point
└── public/ # Static assets
npm start # Start the server
npm test # Run tests (not configured yet)npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint| Variable | Description | Required |
|---|---|---|
PORT |
Server port | No (default: 5000) |
MONGODB_URI |
MongoDB connection string | Yes |
JWT_SECRET |
JWT signing secret | Yes |
EMAIL_USER |
Email service username | Yes |
EMAIL_PASS |
Email service password | Yes |
POST /auth/register- User registrationPOST /auth/login- User loginPOST /auth/forgot-password- Request password resetPOST /auth/verify-otp- Verify OTPPOST /auth/reset-password- Reset password
GET /api/task- Get all tasksPOST /api/task- Create new taskPUT /api/task/:id- Update taskDELETE /api/task/:id- Delete task
- Register: Create a new account on the signup page
- Login: Access your account with email and password
- Manage Tasks: Create, edit, and delete tasks in the main dashboard
- Password Recovery: Use forgot password feature if needed
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.
MongoDB Connection Error
- Ensure MongoDB is running locally or check your Atlas connection string
- Verify the
MONGODB_URIin your.envfile
CORS Issues
- Check that frontend URL matches the CORS origin in
backend/app.js - Default frontend runs on
http://localhost:5173
Email Service Not Working
- Verify email credentials in
.envfile - For Gmail, use App Passwords instead of regular password
If you encounter any issues or have questions, please open an issue in the repository.
Happy Task Managing! 🎉