A full-stack Task Management application built with the MERN stack (MongoDB, Express.js, React.js, and Node.js) that allows users to register, log in, and manage their personal tasks with ease β along with automated email reminders.
- π Authentication β Register & Login functionality with hashed passwords using
bcrypt - π Task Management β Create, view, update, and delete your daily tasks
- π¦ RESTful API β Built using Express.js and connected to MongoDB via Mongoose
- π¦ Email Reminders β Automatically sends task reminders 1 hour before deadline using node-cron and nodemailer
- βοΈ Frontend β React.js with Axios for API integration
- πΎ Persistent Storage β MongoDB Atlas used to store user and task data
- π€ Deployed β Easily deployable to platforms like Render, Vercel
- Frontend: React.js, Axios, Tailwind CSS (if used)
- Backend: Node.js, Express.js
- Database: MongoDB (MongoDB Atlas)
- Authentication: JWT, bcrypt
- Email: Nodemailer
- Scheduling: node-cron
task-manager/
βββ backend/
β βββ controllers/
| βββ config/
β βββ models/
β βββ routes/
| βββ jobs/
β βββ server.js
βββ frontend/
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ App.jsx
βββ README.mdPrerequisites => Node.js and npm installed => MongoDB Atlas URI
cd backend
npm install
# Create a .env file with the following:
# MONGO_URI=your_mongodb_connection_string
# JWT_SECRET=your_secret_key
# EMAIL=your_email@example.com
# EMAIL_PASSWORD=your_app_password
npm run servercd frontend
npm install
npm startCreate a .env file in the backend directory:
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secretπ Email Reminder Job A background cron job runs every minute using node-cron, and sends email reminders for tasks that are:
Due within the next hour
Not yet reminded (reminderSent: false)
To ensure this works:
Add task dates in near-future (e.g., within 1 hour)
Verify email and task creation work correctly
Configure Gmail to allow app passwords
Coming Soon...
-
Fork the repo
-
Create your feature branch: git checkout -b feature/YourFeature
-
Commit your changes: git commit -m 'Add some feature'
-
Push to the branch: git push origin feature/YourFeature
-
Open a pull request
This project is licensed under the MIT License.
Suraj Chaudhary β @SurajCh6613