Lokale Entwicklung
Richten Sie das AACsearch-Monorepo für die lokale Entwicklung ein – Voraussetzungen, Umgebungsvariablen, Docker-Dienste und das Starten der Apps.
AACsearch ist ein pnpm + Turborepo-Monorepo. Diese Seite behandelt die vollständige lokale Einrichtung von einem frischen Klon bis zu einem laufenden SaaS-Dashboard und einer Dokumentations-Website.
Voraussetzungen
| Tool | Version | Installation |
|---|---|---|
| Node.js | 20+ | nodejs.org |
| pnpm | 10.28+ | npm i -g pnpm |
| Docker | Aktuell | docker.com |
Klonen und installieren
git clone <repo-url> AACSearch
cd AACSearch
pnpm installpnpm richtet alle Workspace-Pakete ein. Die erste Installation kann 2–3 Minuten dauern.
Docker-Dienste starten
Das Monorepo benötigt Postgres (Datenbank) und MinIO (S3-kompatibler Objektspeicher):
docker compose up -dDies startet:
- Postgres auf Port
5432– Anwendungsdatenbank - MinIO auf Ports
9000(API) und9001(Konsole) – Dateispeicher
Überprüfen Sie, ob die Dienste ordnungsgemäß funktionieren:
docker compose psAACSearch
Sie benötigen außerdem eine laufende Suchmaschinen-Instanz. Der einfachste Ansatz für die lokale Entwicklung:
docker run -d \
-p 8108:8108 \
-v /tmp/aacsearch-data:/data \
aacsearch/search-engine:latest \
--data-dir /data \
--api-key=your-local-admin-key \
--listen-port 8108Setzen Sie AACSEARCH_API_KEY und AACSEARCH_HOST in Ihrer Umgebungsdatei (siehe unten).
Umgebungsvariablen
Kopieren Sie die Beispieldatei:
cp .env.local.example .env.localWichtige zu konfigurierende Variablen:
# Datenbank
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/AACSearch"
# Auth
BETTER_AUTH_SECRET="your-local-secret-at-least-32-chars"
BETTER_AUTH_URL="http://localhost:3000"
# AACSearch
AACSEARCH_HOST="localhost"
AACSEARCH_PORT="8108"
AACSEARCH_PROTOCOL="http"
AACSEARCH_API_KEY="your-local-admin-key"
# Storage (MinIO)
STORAGE_ENDPOINT="http://localhost:9000"
STORAGE_BUCKET="AACSearch"
STORAGE_ACCESS_KEY="minioadmin"
STORAGE_SECRET_KEY="minioadmin"
# App-URLs
NEXT_PUBLIC_SAAS_URL="http://localhost:3000"
NEXT_PUBLIC_MARKETING_URL="http://localhost:3001"Hinweis: Prisma liest aus .env, nicht aus .env.local. Kopieren Sie .env.local nach .env für Prisma-CLI-Befehle:
cp .env.local .envDatenbankeinrichtung
Generieren Sie den Prisma-Client und wenden Sie Migrationen an:
pnpm --filter @repo/database generate
pnpm --filter @repo/database push # Entwicklung: Schema direkt anwendenPrisma Studio (optionaler visueller DB-Browser):
pnpm --filter @repo/database studioÖffnet auf Port 5555.
Apps starten
Alle Apps gleichzeitig ausführen (empfohlen für die Entwicklung):
pnpm devOder einzelne Apps ausführen:
pnpm dev --filter=saas # SaaS-Dashboard → http://localhost:3000
pnpm dev --filter=marketing # Marketing-Website → http://localhost:3001
pnpm dev --filter=docs # Dokumentations-Website → http://localhost:3002Turborepo führt alle Aufgaben mit einer Parallelität von 15 aus und speichert Build-Ausgaben im Cache.
Einrichtung überprüfen
- Öffnen Sie
http://localhost:3000– Sie sollten die AACsearch-Anmeldeseite sehen - Erstellen Sie ein Konto über das Registrierungsformular
- Erstellen Sie eine Organisation
- Navigieren Sie zum Suchbereich
- Erstellen Sie einen Suchindex – dies erstellt die Suchindex
Wenn AACSearch nicht erreichbar ist, schlägt die Index-Erstellung mit search_connection_error fehl und
Sie sehen dies im Fehlerzustand des Dashboards.
Typprüfung und Linting
pnpm type-check # TypeScript-Typprüfung (alle Pakete)
pnpm lint # Oxlint (NICHT ESLint)
pnpm lint:fix # Lint-Probleme automatisch beheben
pnpm format # Oxfmt (NICHT Prettier)
pnpm format:check # Nur Formatierung prüfenNützliche Befehle
# Widget-Bundle erstellen (für Widget-Entwicklung benötigt)
pnpm --filter @repo/widget build
# Datenbank zurücksetzen (DESTRUKTIV – löscht alle Daten)
docker compose down -v && docker compose up -d
pnpm --filter @repo/database push
# Turborepo-Cache leeren
pnpm clean
# Alles bauen
pnpm buildFehlerbehebung
Cannot find module '@repo/...' – führen Sie pnpm install aus dem Repo-Stammverzeichnis aus.
Prisma DATABASE_URL empty – Prisma liest .env, nicht .env.local. Führen Sie cp .env.local .env aus.
Prisma Client not generated – führen Sie pnpm --filter @repo/database generate aus.
BigInt serialization error – einer Prozedur fehlt .transform(v => v.toString()) für BigInt-Ausgabefelder.
Build OOM auf macOS – setzen Sie NODE_OPTIONS='--max-old-space-size=12288' pnpm build.