Hard Mode — 75 Hard / 75 Soft Tracker
Daily-habit tracker for the 75 Hard and 75 Soft challenges. React SPA on Vite, Convex for auth + realtime data, deployed to Cloudflare Workers via the official Vite plugin.
A daily-habit tracker for the 75 Hard and 75 Soft challenges — every day you check off the tasks, and the streak persists across devices.
Built as a React 19 SPA on Vite. There’s no SSR — past the login screen the app is authenticated and personal, so the static build + client-side state model fits cleanly. Convex provides auth and the realtime database; tasks check off instantly in the UI and sync to every other device the user has open.
Deployed to Cloudflare Workers through the official @cloudflare/vite-plugin, which means one npm run deploy builds and ships in a single step — no separate static-hosting + API-backend pipeline.
Strict TypeScript throughout, ESLint configured with the React hooks + refresh rules so I catch dependency-array mistakes at lint-time instead of at runtime.