Ga naar inhoud

Lokaal draaien

Alles draait lokaal met Docker (Postgres en MinIO) en pnpm. Reken op een kwartier voor de eerste keer.

  • Node.js 22.19 of hoger; de repo eist >=22.19.0 en de productie-images draaien Node 22.
  • pnpm 11.20.0, bij voorkeur via corepack zodat de versie uit package.json wordt gebruikt: corepack enable.
  • Docker met Compose, voor Postgres en MinIO.
  • Gebruik altijd pnpm, nooit npm of yarn.
  1. Installeer alle packages vanuit de repo-root.

    Terminal window
    pnpm install
  2. Maak het .env-bestand van de klantsite aan. De standaardwaarden passen bij de Docker-services hieronder.

    Terminal window
    cp apps/site-template/.env.example apps/site-template/.env
  3. Start Postgres en MinIO. De init-container maakt de bucket platform-media aan.

    Terminal window
    docker compose up -d
  4. Draai de migraties en vul de demo-database. Deze scripts lezen process.env rechtstreeks en zien het .env van de app niet, dus geef DATABASE_URL expliciet mee. De seed is destructief en daarom vergrendeld achter ALLOW_DESTRUCTIVE_SEED=1.

    Terminal window
    export DATABASE_URL=postgresql://platform:platform@localhost:5432/tenant_demo
    pnpm --filter @platform/db run migrate
    ALLOW_DESTRUCTIVE_SEED=1 pnpm --filter @platform/db run seed
  5. Start de dev-server.

    Terminal window
    pnpm --filter site-template run dev
Wat Waar
Publieke site http://localhost:4321
CMS http://admin.localhost:4321
MinIO-console http://localhost:9001 (minioadmin / minioadmin)

Demo-gebruikers uit de seed:

  • admin@demo.local / demo-admin-change-me (beheerder)
  • editor@demo.local / demo-editor-change-me (redacteur)

Het dashboard heeft een eigen database (platform_master) en een eigen connectiestring, MASTER_DATABASE_URL. Verwar die niet met DATABASE_URL van een klantsite; het script create-admin weigert overigens een database waarin een site-tabel staat.

  1. Maak rol en database aan. Het script verwacht psql; lokaal is dat er meestal niet, dus draai de twee SQL-blokken uit het script via de Postgres-container. Zie Operations.

    Terminal window
    ./scripts/provision-master-db.sh
  2. Migreer de master-database en maak de eerste beheerder aan. Het wachtwoord verschijnt eenmalig in de terminal.

    Terminal window
    export MASTER_DATABASE_URL=postgresql://platform_master:platform_master@localhost:5432/platform_master
    pnpm --filter @platform/db run migrate:master
    pnpm --filter @platform/ops run create-admin -- --email jij@example.com --yes
  3. Maak apps/master-dashboard/.env aan op basis van .env.example. Minimaal nodig: NUXT_DATABASE_URL, NUXT_BETTER_AUTH_SECRET, NUXT_BETTER_AUTH_URL en NUXT_SECRETS_KEY (32 bytes base64, openssl rand -base64 32). Start daarna de dev-server.

    Terminal window
    cp apps/master-dashboard/.env.example apps/master-dashboard/.env
    pnpm --filter master-dashboard run dev

Het dashboard draait op http://localhost:3000. Zonder NUXT_COOLIFY_TOKEN stopt een provisioning-run na de stap secrets; dat is het bedoelde lokale pad, zie Het master dashboard van binnen.

Terminal window
pnpm --filter docs run dev

Draait op http://localhost:4322 (poort 4321 is van de klantsite). Zoeken werkt alleen in een productiebuild; zie Documentatie uitbreiden.

  • admin.localhost laadt niet. Browsers sturen *.localhost naar 127.0.0.1, maar niet elk systeem doet dat. Voeg dan 127.0.0.1 admin.localhost toe aan /etc/hosts.
  • De seed weigert. Bewust: hij draait alleen tegen tenant_demo of een *_test-database op localhost, en alleen met ALLOW_DESTRUCTIVE_SEED=1. Voor echte klanten gebruik je bootstrap en create-user uit @platform/ops.
  • .env lijkt genegeerd bij een build. Klopt: .env geldt alleen voor astro dev. Een productiebuild leest de tenant-instellingen als echte omgevingsvariabelen van de container; zie Deploy.
  • Alles opnieuw. docker compose down -v gooit de lokale databases en media weg; daarna de stappen hierboven opnieuw.