Local development
This page gets the Frigear repository running on your machine. Afterwards the Frigear website app and these docs run locally, and you can run the same lint, type checks and tests as CI.
Requirements
You need Node.js and pnpm as listed in Requirements. The repository pins
both: Node in .nvmrc and pnpm in packageManager of the root package.json. Run nvm use (or your own version
manager) for Node. Corepack then picks the pinned pnpm.
Install dependencies
From the repository root:
corepack enable
pnpm install
postinstall, which runs every package's dev:stub script: it stubs the module build
and runs nuxt prepare. Scaffold a module explains why packages have no
postinstall.pnpm command from the repository root, scoped with --filter. Packages resolve each other's
workspace:^ ranges from there. Conventions has the full rule.pnpm --filter @frigear-nu/website <command>
pnpm --filter ./apps/website <command>
Configure the environment
The Frigear website app reads its settings from apps/website/.env. Copy the example file and edit it:
cp apps/website/.env.example apps/website/.env
No variable is required to start the app in development. NUXT_APP_SECRET seals the session cookie: leave it empty
and Nuxt generates one in development; a value you set must be at least 32 characters (openssl rand -base64 32).
NUXT_SESSION_PASSWORD is the fallback encryption key for Forms and stored OAuth tokens. The other variables are
optional until you use their feature, such as Stripe, OAuth Server signing keys, email delivery or Sign in with
frigear.nu. Environment lists each one with the module that reads it.
The docs app needs no environment.
Run an app
pnpm --filter @frigear-nu/website dev
pnpm --filter @frigear-nu/docs dev
Each app starts its own Nuxt dev server, and the terminal shows its local URL. Packages resolve to their TypeScript source, so you do not build them first.
Database
In development the Frigear website app uses a local SQLite file, apps/website/.data/db/sqlite.db. NuxtHub applies the
committed migrations when the dev server starts. After you change a schema, or a module that extends one:
pnpm --filter @frigear-nu/website db:generate # write migration files from the schema changes
pnpm --filter @frigear-nu/website db:migrate # apply them to the development database
Commit the generated SQL, snapshot and journal together. Database explains
migrations for a host app. To start over, delete apps/website/.data.
Build and check
pnpm build:packages # every package under packages/ except the base layer
pnpm build:website # the Frigear website app, with Node's memory limit raised to 6 GB
pnpm --filter @frigear-nu/docs build
The root scripts run lint, type checks and tests across the repository with Turborepo:
pnpm lint
pnpm lint:fix
pnpm typecheck
pnpm test
Scope any of them to one package with --filter, for example pnpm --filter ./packages/forms test.
Next steps
- Scaffold a module – start a module of your own.
- Frigear website app – see how the app you just ran configures its modules.
- Publishing – release a package once your change is merged.