A modern full-stack task management application that helps users organize their lives with deadlines and automated email reminders.
This project includes:
- 🌐 Frontend – Built with Next.js (App Router), TypeScript, Tailwind CSS
- ⚙️ Backend API – Node.js, Express 5, TypeScript, MongoDB
- 📧 Automated Email Reminder System (24 hours before deadline)
- User registration & login
- JWT-based secure authentication
- Protected task routes
- Create tasks with title, description & deadline
- Edit & update tasks
- Mark tasks as completed
- Delete tasks
- Filter tasks (completed / incomplete)
- Automatic reminder scheduling when a task is created
- Reminder sent 24 hours before deadline (configurable)
- Cron job runs every 15 minutes
- Reminder auto-cleanup when task is completed
- Password hashing with bcrypt
- Helmet.js security headers
- Input validation (express-validator + Zod)
- Structured error handling
- CORS configuration
- Production-ready architecture
notesapp/
├── backend/ # Node.js + Express + MongoDB API
└── frontend/ # Next.js 15 App Router (Deployed on Vercel)
- Next.js (App Router)
- TypeScript
- Tailwind CSS
- Zustand (state management)
- Axios (API calls)
- Deployed on Vercel
- Clean hero landing page
- Login & registration flow
- Task dashboard
- Deadline tracking
- Responsive layout
cd frontend
pnpm install
pnpm devNEXT_PUBLIC_API_URL=http://localhost:3001/apiA robust task management backend built with Node.js, Express, TypeScript, and MongoDB.
- JWT Authentication
- CRUD Task Management
- Automatic Reminder Scheduling
- Cron-based Email Processing
- Secure Password Hashing
- Modular Architecture
- Production-ready structure
Refer backend docs README.md
- bcrypt password hashing
- JWT authentication
- Helmet security headers
- CORS configuration
- Input validation
- Structured error responses
flowchart LR
R([start])
--> A[Task is created]
--> B[Reminder is scheduled]
--> C[Cron runs every 15 minutes]
--> D[Email is sent 24 hours before deadline]
--> E[Status is updated]
--> F[If task is completed → reminder is removed]
--> G([END])
This repository is licensed under MIT



