Live demo → https://mosambiswas.com/To-Do/
Welcome! This repo is where I’m building and polishing a Trello‑style Kanban To‑Do app while practicing real-world frontend + backend patterns.
It includes two ways to use the app:
- Offline mode: fast, zero-login board that saves to
localStorage - Account mode: login + Google Sign‑In, backed by an API and MongoDB so your tasks persist across devices
Also available:
- GitHub Pages mirror: https://biswasmosam.github.io/To-Do/
- Backend health check: https://to-do-i8qi.onrender.com/api/health
- Manage tasks across a Kanban workflow: Not Started → In Progress → Done
- Auto-clean completed tasks: items in Done are automatically deleted after 7 days
- Drag & drop tasks between columns
- Create task groups (with emoji support)
- Use it offline (no backend needed)
- Sign in and sync tasks to the cloud (MongoDB)
The UI follows an editorial dark design system:
- Near-black canvas with ivory type and hairline borders
- Electric lime accent, with amber/mint status colors
- Space Grotesk display headings + Inter body text (Google Fonts)
- CSS design tokens (custom properties) drive the whole theme from
styles.css - Board header with eyebrow label and large display title
- Mobile-friendly: compact top bar with avatar-only profile chip
Frontend
- HTML + CSS (design tokens via custom properties)
- Vanilla JavaScript
- Google Fonts (Space Grotesk, Inter)
- Browser Drag & Drop API
localStoragefor offline persistence
Backend
- Node.js + Express
- MongoDB + Mongoose
- JWT auth
- Google Sign‑In (Google Identity)
Hosting / Deployment
- Frontend: GitHub Pages + custom domain
- Backend: Render
Frontend
index.html+app.js— offline board (localStorage)login.html— login/register + Google Sign‑Inboard.html+app-backend.js— authenticated board (API + MongoDB)config.js— API base URL (dev vs prod)
Backend
backend/server.js— Express APIbackend/routes/*— auth + tasks/workflow endpoints
cd backend
npm installCreate backend/.env:
PORT=5000
MONGODB_URI=mongodb+srv://<db_user>:<db_password>@<cluster-host>/todo-db?retryWrites=true&w=majority
JWT_SECRET=<any-long-random-string>
GOOGLE_CLIENT_ID=<your-google-web-client-id>.apps.googleusercontent.com
NODE_ENV=developmentRun:
npm run dev
# or
npm startFrom the project root (this folder):
python -m http.server 8000- Offline board:
http://localhost:8000/index.html - Login + backend board:
http://localhost:8000/login.html
config.js controls which API base URL the frontend uses (localhost for development, Render in production).
Auth:
POST /api/auth/registerPOST /api/auth/loginPOST /api/auth/googleGET /api/auth/me(JWT required)
Tasks + workflow (JWT required):
GET /api/tasksPOST /api/tasksPUT /api/tasks/:idDELETE /api/tasks/:idGET /api/workflowPOST /api/workflow
- Secrets live in
backend/.env(don’t commit real keys) - MongoDB Network Access should be restricted for production use