logit is a lightweight workout journal built with Next.js App Router and Prisma. It focuses on fast workout entry, exercise history, and progress views without turning the product into a full social or coaching platform.
- Next.js 16
- React 19
- Prisma + PostgreSQL
- Recharts
- Email/password auth with signed session cookies
- Workout logging with autosave on create
- Exercise suggestions and previous-session comparison while logging
- Dashboard views for weekly activity, history, and exercise progress
- Exercise detail pages with top-set and estimated 1RM trends
- Profile-level weight unit preference (
LBorKG) - Workout detail actions for edit, duplicate, and delete
- Install dependencies:
npm install- Create env files with your Postgres connection details:
cp .env.local .env- Apply migrations:
npm run db:deploy- Start the dev server:
npm run dev- Open
http://localhost:3000.
Use Prisma migrations as the default workflow:
npm run db:migrate
npm run db:deploy
npm run db:statusnpm run prisma:push is still available for quick local prototyping, but the
tracked migration history should be the source of truth.
If you already have an existing database that matches the current schema and need to baseline it against this repo, mark the baseline migration as applied:
npx prisma migrate resolve --applied 20260308120000_baselinenpm run dev
npm run lint
npm run test
npm run build
npm run db:migrate
npm run db:deploy
npm run db:statusThe repo uses a lightweight TypeScript-to-Node test flow for pure modules:
npm run testCurrent coverage focuses on:
- weight conversion helpers
- workout payload normalization and validation
- All persisted workout weights are stored in pounds for consistency.
- User-facing weight display and workout entry respect the profile preference.
- Duplicating a workout creates a new workout at the current time and opens it in the edit flow.
Before deploying, make sure:
AUTH_SECRETis set.DATABASE_URLandDIRECT_URLpoint at the correct Postgres instance.npm run db:deployhas been run for the target environment.npm run buildpasses locally.