A data-powered fitness companion to track your workouts, focus your training, and give you powerful insights.
# set the environment, then run in dev mode
nvm use && pnpm i && pnpm dev
# to run checks (also run on commit / push)
pnpm check && pnpm lint
# to run tests
pnpm cy:component
To run the debug profile from VS Code, navigate to "Run and Debug"
and select the desired profile.
Every technology used in this project has been intentionally selected.
Next (App Router | Tailwind | TypeScript) - clean structure, based on React Server Components, enables Vercel for easy setup and continuous deployments.
Zustand - simplest way to handle complex client state.
Drizzle - chosen for the focus on performance and its intuitive syntax.
Biome JS - eliminates the need for all the ESLint, Prettier, etc... and provides a single config to handle it all.
Lefthook - much easier to set up than husky, and doesn't require lint-staged (also husky refused to run).
Knip - eliminates dead code at commit time, reducing bloat and preserving codebase quality.
Cypress - handles component and E2E testing, fast.\
Clerk - never roll your own auth, especially not when Clerk makes it so incredibly easy to do so, on top of managing your users.
Vercel - combines the deployment pipeline, hosting, and database layers greatly reducing the overhead for small, solo applications.
Shadcn/UI - clean, simple UI components that can easily be extended.\
During this project, I also sampled various AI enhancements to my workflow.
Codeium - I found this to be a bit intrusive, in terms of generation it's certainly helpful (cut my time spent writing tests and significantly) but the JSDoc feature kept triggering and certain suggestions got in the way.\ V0.dev - I absolutely love this, and for personal projects, this will be my "UX Developer" from now on. I think there remains a large area where we as devs are responsible for cohesion and debugging, but this is invaluable for a personal project.\