Habit Pet
Bootstrap repo for the Calgary hackathon Habit Pet project.
Stack
- Next.js
- Supabase
- Vercel
- GitHub
Scope of this bootstrap
This repo currently stops at:
- Next.js app scaffold
- Supabase auth wiring from the starter
- environment variable template
- deployment-ready project structure
This repo does not yet include MVP feature pages, avatar logic, habits, streaks, or shop logic.
Local setup
-
Install dependencies:
npm install -
Create local environment file:
cp .env.example .env.local -
Add Supabase values to
.env.local:NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= -
Start the app:
npm run dev -
Create a production build when needed:
npm run build
Supabase
Create a Supabase project, then copy the project URL and anon key from Project Settings > API into .env.local and Vercel project environment variables.
The starter also supports Supabase's publishable key name, but this repo documents the anon key convention from the project plan.
Database workflow
- Schema migrations live under
supabase/migrations/. - Baseline catalog data lives in
supabase/seed.sqland is safe to rerun during deploys because it uses idempotent upserts. - Local CLI config lives in
supabase/config.tomlforsupabase start,supabase db reset, and related commands. - Production database sync runs from GitHub Actions on
mainusingsupabase db push --linked --include-seedbefore the app deploy relies on those changes.
Deploy
This repo includes .github/workflows/deploy.yml, which runs on pushes to main.
The workflow:
- checks out the repo
- runs
npm ci,npm run lint, andnpm run build - links the Supabase CLI to the production project
- applies pending database migrations and reruns
supabase/seed.sqlviasupabase db push --linked --include-seed - deploys the app to Vercel production only after the database sync succeeds
Required GitHub secrets
SUPABASE_ACCESS_TOKENSUPABASE_PROJECT_REFSUPABASE_DB_PASSWORDVERCEL_TOKENVERCEL_ORG_IDVERCEL_PROJECT_ID
Required Vercel environment variables
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
Frontend and backend are both served from this Next.js app. Supabase provides auth and database services.