Full-stack focus session tracker with calendar navigation, Pomodoro-style timers, drag-and-drop task reordering, and multi-user auth.
- Calendar view with month navigation and per-day task counts
- Day view with drag-and-drop task reordering
- Per-task timers with focus interval notifications
- Day/Night session grouping for tasks
- Task templates with auto-populate
- Settings page (focus interval, notifications, overflow behavior)
- Light/Dark mode
- Multi-user auth via Clerk
- Optimistic updates with React Query
- Frontend: React 19, TypeScript, Vite, Tailwind CSS, React Query, @dnd-kit
- Backend: Express.js, Prisma, PostgreSQL
- Auth: Clerk
- Testing: Vitest, React Testing Library (client), Supertest (server)
- Linting/Formatting: oxlint, oxfmt
- Package Manager: pnpm workspaces
- Deployment: Vercel (serverless functions + static client)
-
Clone the repo:
git clone https://github.com/sheikhlimon/focus-tracker.git cd focus-tracker -
Install dependencies:
pnpm install
-
Set up environment variables:
cp server/.env.example server/.env cp client/.env.example client/.env
Fill in
DATABASE_URL,CLERK_SECRET_KEY, andVITE_CLERK_PUBLISHABLE_KEY. -
Set up the database:
cd server && npx prisma migrate dev
-
Start dev servers:
pnpm dev # client on :5173 pnpm dev:server # server on :3001
client/
src/
components/ # calendar/, playlist/, settings/, layout/, ui/
hooks/ # useTimer, useCalendar, useNotification
api/ # React Query hooks + API client
pages/ # SettingsPage, LoginPage, SignupPage
context/ # ThemeProvider
server/
src/
routes/ # days, tasks, sessions, settings, templates
services/ # business logic
middleware/ # auth (Clerk), validation (Zod), error handling
prisma/ # schema and migrations
api/
index.ts # Vercel serverless entry point
pnpm dev— start client dev serverpnpm dev:server— start server dev serverpnpm build— build for productionpnpm test— run all testspnpm lint— lint all (oxlint)pnpm format— format all (oxfmt)
Connected to Vercel via GitHub. Pushes to main auto-deploy.
Required env vars in Vercel dashboard:
DATABASE_URLCLERK_SECRET_KEYVITE_CLERK_PUBLISHABLE_KEY
MIT