Getting started
Run wovain locally with pnpm, Docker Postgres and Varlock-managed environment variables.
Requirements
- Node.js (see
.nvmrc) and pnpm - Docker, for the local PostgreSQL (
docker-compose.yml)
Run it
pnpm install
docker compose up -d # local PostgreSQL
pnpm run dev # web app and docs through Turborepo| App | Path | Port |
|---|---|---|
| Web app | apps/web | Next.js default (3000) |
| Docs | apps/fumadocs | 4000 |
Environment variables with Varlock
Each app owns a .env.schema file. Varlock validates the values at start-up and generates a typed src/env.ts, so code imports ENV instead of reading process.env.
The web app needs:
| Variable | Meaning |
|---|---|
NODE_ENV | development, production or test |
BETTER_AUTH_SECRET | At least 32 characters; signs sessions |
BETTER_AUTH_URL | Public URL of the web app |
DATABASE_URL | PostgreSQL connection string (Cloud SQL in production) |
The docs app has one optional pair, OPENROUTER_API_KEY and OPENROUTER_MODEL, for the AI chat. Without the key the chat endpoint answers 503.
Provider keys for the integrations (Nebius, Qloo, Tavily, fal) are described on each integration page.
Database
Drizzle owns the schema in packages/db. Generate migrations with pnpm run db:generate. The auth tables are generated with pnpm run auth:generate; do not edit them by hand.
Before you commit
pnpm run check # Ultracite: Oxlint and Oxfmt
pnpm run check-types
pnpm run knip