This page walks you through running the complete Deployaar stack on your local machine — Next.js frontend, Express API, Inngest worker, and Neon Postgres — end-to-end. By the end you will have both applications running, the database migrated, and a feature request moving through the AI pipeline against a real GitHub repository.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/paramveer-cyber/Deployaar/llms.txt
Use this file to discover all available pages before exploring further.
>=18 (enforced by the root package.json engines field)9.0.0 (set as packageManager in the root package.json)GOOGLE_GENERATIVE_AI_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, or DEEPSEEK_API_KEYGoogle Gemini (
gemini-2.0-flash) is the default provider and is free-tier friendly. Set DEFAULT_AI_PROVIDER=google and DEFAULT_AI_MODEL=gemini-2.0-flash to get started quickly.Clone the repository and install all workspace dependencies in one command. Turborepo and pnpm workspaces handle the rest.
pnpm will hoist shared dependencies and link the internal packages (
@repo/database, @repo/services, @repo/trpc, @repo/logger) automatically.The root
.env.example provides the canonical list of variables. Copy it into both application directories and fill in the required values.Open
apps/api/.env and apps/web/.env and fill in every variable below. The block shows the minimum required set to boot the stack locally.# ── Database ─────────────────────────────────────────────────────────
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/dev
# ── API server ───────────────────────────────────────────────────────
PORT=8000
NODE_ENV=development
BASE_URL=http://localhost:8000
# ── Frontend ↔ API wiring ────────────────────────────────────────────
NEXT_PUBLIC_API_URL=http://localhost:8000/trpc
FRONTEND_URL=http://localhost:3000
# ── Authentication (better-auth) ─────────────────────────────────────
BETTER_AUTH_SECRET=your-secret-here
BETTER_AUTH_URL=http://localhost:8000
NEXT_PUBLIC_WEB_URL=http://localhost:3000
# ── Google OAuth (required for social login) ─────────────────────────
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
# ── GitHub App (required for repo access) ────────────────────────────
GITHUB_APP_ID=...
GITHUB_APP_PRIVATE_KEY=...
GITHUB_WEBHOOK_SECRET=...
# ── E2B sandbox (required for the coding agent) ──────────────────────
E2B_API_KEY=...
E2B_TEMPLATE_ID=...
# ── AI provider ──────────────────────────────────────────────────────
DEFAULT_AI_PROVIDER=google
DEFAULT_AI_MODEL=gemini-2.0-flash
GOOGLE_GENERATIVE_AI_API_KEY=...
OAuth social login requires the
verification table. The verification table is created by migration 0001_icy_lyja.sql. If this table is missing, better-auth will throw a state_security_mismatch error when users attempt to sign in with Google or GitHub. Always run migrations before testing login.For the full list of every supported variable — including
ANTHROPIC_API_KEY, OPENAI_API_KEY, DEEPSEEK_API_KEY, RAZORPAY_KEY_ID, LOGGER_LEVEL, and all optional overrides — see the Environment Variables reference page.Generate the Drizzle migration artifacts from the schema, then apply them to your Postgres database. Both commands are orchestrated by Turbo and run against the
packages/database workspace.This applies all migrations in order, including the critical
0001_icy_lyja.sql that creates the verification table required for OAuth.Start both applications with a single command. Turbo runs them in parallel using the persistent
dev task defined in turbo.json.apps/web (Next.js)apps/api (Express)With the stack running, follow these steps to push a real feature request through the full AI pipeline.
prd service generates a structured spec, the feature-task service breaks it into tasks, and the coding agent is queued via Inngest. You can track progress in Dashboard → Tasks and Dashboard → Reviews.