Skip to content

TanishSharma151/task-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task Manager

A full-stack task management web app built as part of the XRISE AI Systems take-home assignment. Users can create and manage tasks, organize them with tags, filter and search through them, and get AI-powered suggestions — all behind JWT auth with strict data isolation between users.

Live: https://task-manager-theta-virid.vercel.app
API: https://task-manager-server-wlf7.onrender.com


Features

  • JWT-based authentication — sign up, sign in, protected routes
  • Full task lifecycle — create, edit, delete, mark done, reopen
  • Task fields: title, description, due date, priority (low/medium/high), status (todo/in-progress/done), and tags
  • Tag management — create, rename, delete. Deleting a tag never deletes associated tasks
  • Filter by status, priority, or tag. Search by title
  • Strict data isolation — users only ever see their own tasks and tags
  • 🌙 Dark mode with localStorage persistence
  • ↩ Reopen tasks that were marked as done
  • ✨ AI Smart Suggest — enter a task title and get suggested sub-tasks and tags instantly. Clicking a suggested tag creates and assigns it in one click

Tech Stack

Layer Technology
Frontend React, React Router, Axios
Backend Node.js, Express.js
Database MongoDB Atlas
Auth JWT + bcrypt
AI Groq Cloud (llama-3.3-70b-versatile)
Deployment Vercel (frontend), Render (backend)

AI Provider

The Smart Suggest feature uses Groq Cloud with the llama-3.3-70b-versatile model.

Google Gemini was evaluated first but hit free tier quota limits during development. Groq was chosen as the alternative — no credit card required, genuinely free, and faster response times for this use case.

Get a free API key at https://console.groq.com


Running Locally

Prerequisites: Node.js v18+, MongoDB Atlas URI, Groq API key

Backend:

cd server
npm install
cp .env.example .env
# Fill in your values (MONGO_URI, JWT_SECRET, GROQ_API_KEY, CLIENT_URL)
npm run dev
cd client
npm install
cp .env.example .env
# Set REACT_APP_API_URL=http://localhost:5000/api
npm start

server/.env

MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5000
GROQ_API_KEY=your_groq_api_key

client/.env

REACT_APP_API_URL=http://localhost:5000/api

Architecture Decisions

  • MongoDB: Flexible schema design. Storing tag ObjectIds as an array on each task is idiomatic in MongoDB and avoids unnecessary joins.
  • JWT Authentication: Managed via localStorage for this assignment. In a high-security production environment, I would transition to httpOnly cookies to mitigate XSS risks.
  • CORS Policy: Restricted to your specific frontend origin via environment variables for security.
  • Groq over Gemini: Gemini's free tier quota ran out quickly during testing. Groq offers unlimited free usage with faster inference for this use case, making it the better fit.
  • Vercel + Render: Both deploy directly from GitHub and offer free tiers that comfortably handle this project's load.

Known Issues

  • Render free tier instances spin down after inactivity. The first request after an idle period can take up to 60 seconds to respond while the server wakes up.

Next Steps & Future Enhancements

  • Automated Reminders: Implementing node-cron workers to scan for upcoming deadlines and trigger email alerts.
  • Email Notifications: Integrating the Resend API to proactively notify users of task due dates (an architecture I have successfully deployed in previous SLA-tracking projects).
  • Push Notifications: Using Web Push API for real-time browser alerts.

Author

Tanish Raj Sharma
[email protected]
github.com/TanishSharma151
linkedin.com/in/tanish-raj-sharma-02933b27b


For a deep dive into the data model, indexing strategy, and scalability plans, see DESIGN.md.

About

AI-powered task manager with Groq (llama-3.3-70b) smart suggestions — React, Node.js, Express, MongoDB, JWT auth.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages