Help Tool v1 is a Next.js + PostgreSQL application.
The long-term goal is a broader personal help tool with multiple feature areas. Current implemented scope is car management.
- Vehicle and car-related data management
- Car maintenance and expense tracking flows
- User access/auth support used by the car domain
- Next.js (App Router)
- TypeScript
- Prisma + PostgreSQL
- Vitest + Testing Library
- Tailwind CSS
- Install dependencies:
pnpm install- Create local env file from template:
cp example.env .env.local-
Add your local values to
.env.local. -
Run database migrations (if needed):
pnpm prisma migrate dev- Start development server:
pnpm devApp runs at http://localhost:3000.
pnpm devstarts local development serverpnpm buildcreates production buildpnpm startruns production buildpnpm lintruns lintingpnpm type-checkruns TypeScript checkspnpm formatruns Prettierpnpm testruns test suite with coveragepnpm checkruns format, lint, and type-check
Script: scripts/backup-to-r2.sh
Run manually:
pnpm backup:r2The backup script dumps the app's public schema only and strips schema creation statements. It intentionally excludes Neon-managed schemas such as neon_auth so restores remain portable across local and Neon environments.
Required environment variables:
DATABASE_URLR2_BUCKETR2_ACCOUNT_IDR2_ACCESS_KEY_IDR2_SECRET_ACCESS_KEY
Optional environment variables:
R2_REGION(default:auto)R2_PREFIX(default:db-backups)R2_ENDPOINT(default:https://<ACCOUNT_ID>.r2.cloudflarestorage.com)BACKUP_LOCAL_DIR(default:.tmp/backups)BACKUP_KEEP_LOCAL(1keeps local dump; default removes local file after upload)
GitHub Action workflow: .github/workflows/db-backup-r2.yml
- Manual trigger:
workflow_dispatch - Scheduled trigger: Sundays at
02:00 UTC
GitHub Actions secrets needed by the workflow:
DATABASE_URLR2_BUCKETR2_ACCOUNT_IDR2_ACCESS_KEY_IDR2_SECRET_ACCESS_KEY- Optional:
R2_REGION,R2_PREFIX,R2_ENDPOINT
If you use Proton Pass CLI (pass-cli), use pass:// references in .env.local and run commands through pass-cli.
Use example.env as the source of truth for env keys and Proton Pass pass:// examples.
Direct commands:
- Local:
pass-cli run --env-file .env.local -- pnpm dev - Local:
pass-cli run --env-file .env.local -- pnpm backup:r2 - Staging:
pass-cli run --env-file .env.staging -- pnpm dev - Staging:
pass-cli run --env-file .env.staging -- pnpm backup:r2 - Production:
pass-cli run --env-file .env.prod -- pnpm dev - Production:
pass-cli run --env-file .env.prod -- pnpm backup:r2