A student assignment & deadline tracker — organize your semester, log deadlines by class and category, and watch your workload take shape as a graph.
Built with React + Vite + TypeScript, styled with Tailwind CSS + shadcn/ui, and backed by Supabase (Postgres + Auth).
Live app: (add your deployed URL here)
- Timelines (semesters) — create, activate, and edit timeframes; the active timeline scopes everything on the dashboard.
- Deadline tracking — organize deadlines by class/category, set due dates and statuses (not started, in progress, completed), or bulk-add a whole syllabus.
- Workload graph — a dashboard chart that visualizes how much work lands on each day so you can spot crunch weeks before they arrive.
- Theming — multiple accent themes plus light/dark mode.
- Auth — email/password sign-in, password recovery, and in-app account management (change password, delete account).
- Node.js 18+ (or Bun)
- A Supabase project (the free tier is plenty)
-
Install dependencies:
npm install
-
Create your local env file from the template and fill in your Supabase project's URL and publishable (anon) key:
cp .env.example .env
See
.env.examplefor where to find these values and why only the publishable key belongs in the client bundle. -
Apply the database migrations in
supabase/migrations/to your project. With the Supabase CLI:supabase link --project-ref <your-project-ref> supabase db push
Or paste the migration SQL into the Supabase SQL editor.
-
Run the dev server:
npm run dev # http://localhost:8080
| Command | Description |
|---|---|
npm run dev |
Start the dev server |
npm run build |
Production build |
npm run preview |
Preview the production build |
npm run lint |
Run ESLint |
npm run typecheck |
Run the TypeScript compiler |
src/
components/ UI components (dashboard, forms, dialogs, shadcn/ui primitives)
pages/ Route-level screens (Dashboard, Deadlines, Auth, Getting Started)
hooks/ Data hooks (useSemesters, useAssignments, useAuth, ...)
integrations/ Supabase client + generated database types
lib/ Utilities (theme colors, changelog, helpers)
supabase/
migrations/ SQL migrations — the source of truth for the schema
config.toml Local Supabase CLI configuration
The schema lives in supabase/migrations/. It defines three tables:
public.semesters— a user's timelines (name, start/end date, active flag)public.assignments— deadlines, FK tosemesters(ON DELETE CASCADE)public.profiles— per-user profile row, auto-created on signup
Row Level Security is enabled on every table, so each user can only read and
write their own rows. A trigger maintains updated_at, and an auth.users
insert trigger provisions the matching profile row.
See CONTRIBUTING.md for the branch / PR / preview workflow.