A modern, full-stack task management application featuring AI-powered task classification, priority-based insights, and a polished dashboard interface that adapts dynamically to your lifestyle.
Explore Demo β’ Quick Start β’ API Docs β’ UX Philosophy
- π€ AI Task Classification - Auto-categorize tasks with confidence scoring & reasoning.
- π Smart Dashboard - Priority-based AI insights that adapt dynamically to task state.
- π User Authentication - Secure sign-up, login, profile updates, and password resets using robust bcryptjs hashing.
- π¨ Four-Column Layout - Streamlined categorization:
TodayβTomorrowβOverdueβUpcoming. - β‘ Intelligent Navigation - Context-aware scrolling, section highlighting, and smart collapses.
- π± Responsive Design - Mobile-optimized layouts with butter-smooth micro-animations.
- π€ User Isolation - Multi-tenant isolation ensuring users only access their personal tasks.
- π Instant UI Sync - State-driven updates reflected immediately without annoying page reloads.
- Priority-based AI insights (Overdue > Active > Completed > Empty)
- State-aware navigation (no surprise scrolling, predictable toggle animations)
- Zero-blink transitions (pure CSS transitions +
requestAnimationFrame) - Pristine Modal state management (full resets on opening to prevent stale data)
- High-fidelity visual feedback (green pulse highlights, chevron rotations, interactive hover states)
- ποΈ Architecture
- π Project Structure
- π Quick Start
- π¨ Features Walkthrough
- π€ AI Task Categorization
- π‘ API Reference
- π§ͺ Testing
- π‘οΈ Security Analysis
βββββββββββββββββββ HTTP ββββββββββββββββββββ HTTP ββββββββββββββββββββ
β Frontend βββββββββββββββββ>β Backend βββββββββββββββββ>β AI Service β
β (Next.js) β<βββββββββββββββββ (Plain Node) β<βββββββββββββββββ (Flask) β
β Port 3000 β REST API β Port 5000 β Classify API β Port 8000 β
β β β β β β
β β’ Dashboard β β β’ Task CRUD β β β’ NLP Classifier β
β β’ Auth Interfaceβ β β’ User Profile β β β’ Confidence β
β β β β β β’ Explainability β
βββββββββββββββββββ ββββββββββ¬ββββββββββ ββββββββββββββββββββ
β
β MongoDB Driver
βΌ
ββββββββββββββββββββ
β MongoDB Atlas β
β (Cloud DB) β
ββββββββββββββββββββ
TaskPilot/
βββ backend/ # Node.js REST API (Plain HTTP Server, No Express)
β βββ src/
β β βββ models/ # MongoDB Schemas (Task, User)
β β βββ controllers/ # Business Controllers (task, user)
β β βββ utils/ # Helper utilities (HTTP parsers, CORS headers)
β β βββ router.js # Custom lightweight HTTP router
β βββ .env.example # Environment template
β βββ package.json
β
βββ frontend/ # Next.js 16.1.6 (Turbopack layout directly at root)
β βββ app/ # Dashboard, login, register, and page layouts
β βββ components/ # Task card components, task modals, register helpers
β βββ contexts/ # Authentication & global application state
β βββ utils/ # Frontend helpers (API handlers, browser storage)
β βββ package.json
β
βββ ai-service/ # Python Flask AI Service
β βββ app.py # Flask server
β βββ classifier.py # NLP task classifier
β βββ requirements.txt
β
βββ start-services.bat # Windows helper to start all services
βββ test_services.py # Service connectivity tester
βββ README.md # You are here
start-services.bat- Windows batch script to launch all three services simultaneously (Windows only)test_services.py- Python script to verify backend, frontend, and AI service connectivity
- Node.js v18+ (Download)
- Python 3.12+ (Download)
- MongoDB Atlas account (Sign up free)
- Git (Download)
git clone https://github.com/abhijithk-ak/TaskPilot.git
cd TaskPilotcd backend
npm install
# Create .env file from template
cp .env.example .env
# Edit .env and add your MongoDB credentials:
# MONGODB_URI=mongodb+srv://<username>:<password>@<cluster-url>/taskpilot?retryWrites=true&w=majority
# Start backend server
npm run devπ Backend running on http://localhost:5000
cd ../ai-service
# Create virtual environment
python -m venv venv
# Activate (Windows)
.\venv\Scripts\Activate.ps1
# Activate (Mac/Linux)
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Start AI service
python app.pyπ AI Service running on http://localhost:8000
cd ../frontend
npm install
# Start development server
npm run devπ Frontend running on http://localhost:3000
Open your browser and navigate to:
http://localhost:3000
Four Dynamic Columns:
- π΅ Today - Active + completed tasks due today (blue gradient highlight)
- π‘ Tomorrow - Tasks due tomorrow (yellow gradient highlight)
- π΄ Overdue - Past due tasks requiring attention (red gradient highlight)
- π£ Upcoming - Future tasks (purple gradient highlight)
Adaptive Layout:
- Columns automatically appear/disappear based on task availability.
- Grid auto-adjusts layout dynamically (2-4 columns based on current content).
- Fully mobile-responsive with single-column layout transitions.
Priority-Based Intelligence Engine:
1οΈβ£ Overdue tasks exist β β οΈ Warning tone (Red alert styling)
"You have 3 overdue tasks..."
2οΈβ£ Active tasks today β π― Focus tone (Blue accent styling)
"Peak hours: 10-12 PM. Focus on..."
3οΈβ£ Today complete β π Success tone (Green accent styling)
"Great work! All tasks completed..."
4οΈβ£ No tasks β π‘ Neutral tone (Slate/gray styling)
"Clean slate! Add tasks..."
POST /auth/register # Sign up a new user (with password hashing)
POST /auth/login # Log in and check credentials
POST /auth/reset-password # Reset account password
GET /auth/profile?email={email} # Retrieve user profile & settings
PUT /auth/profile # Update name & custom preferencesGET /tasks?userEmail={email} # Fetch all tasks scoped to email
POST /tasks # Create a new task
PUT /tasks/:id # Update an existing task
DELETE /tasks/:id # Delete a task
POST /tasks/classify # AI Task classificationBefore committing and pushing this codebase to public Git repositories, please review the security audit checklist below:
- Missing Authentication/Authorization Middleware:
- Observation: The custom backend routing structure processes data operations (e.g., retrieving tasks) by matching parameters such as
?userEmail={email}directly from query inputs. There is no active validation check like a JWT authorization header or session validation. - Mitigation: Implement standard token-based validation (JWT signature checks) on routes mapping parameters other than
/auth/loginand/auth/register.
- Observation: The custom backend routing structure processes data operations (e.g., retrieving tasks) by matching parameters such as
- No Payload Size Limit (Potential Denial of Service):
- Observation: The manual
parseBody(req)function insidebackend/src/utils/http.jsprocesses requests by continuously appending incoming chunks without restriction:req.on('data', chunk => { data += chunk; });
- Mitigation: Implement a boundary check (e.g., limit incoming strings to
1MBmaximum size limit) to prevent memory exhaustion crashes.
- Observation: The manual
- Global CORS Policy:
- Observation: The headers inside
http.jsexportAccess-Control-Allow-Origin: '*'to all origins. - Mitigation: Restrict cross-origin rules to production domains instead of using the wildcard parameter.
- Observation: The headers inside
- Database Credentials: Actual Database connections are pulled from
process.env.MONGODB_URI. Make sure your activebackend/.envfile containing secrets is never committed to version control. - Ignore Patterns: The global
.gitignorecontains rule blocks for.env,node_modules/, andvenv/, ensuring standard build configs and secrets are safely ignored duringgit add .staging routines.
We welcome contributions! Here's how:
- Fork the repository
- Create your feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m 'feat: add AmazingFeature' - Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
This project is open source and available under the MIT License.