# Erste Schritte

Letzte Aktualisierung: 2026-02-21

## Ziel

Diese Seite bringt neue Entwickler in unter 45 Minuten zu einem lauffähigen lokalen Setup inklusive erstem Smoke-Test.

## Voraussetzungen

- Docker + Docker Compose
- Git
- Node.js + npm (für ESLint)
- Zugriff auf dieses Repository

## 1) Projekt lokal starten

```bash
cp .env.example .env
docker compose up --build -d
```

> Alle ENV-Variablen sind dokumentiert in /docs/konfiguration.md.
> docker compose up startet auch den globalen Scheduler-Runner (Service scheduler) im Hintergrund.

Danach erreichbar:

- App: `http://localhost:8080`
- phpMyAdmin: `http://localhost:8081`

## 2) Login mit Seed-User (Fresh-Install)

Standard-Demo-User (aus `db/init/init.sql`):

- E-Mail: `demo@user.com`
- Passwort: `Demo123`

Wichtig:

- Der Seed-User wird nur beim initialen DB-Setup angelegt.
- Wenn bereits ein bestehendes Docker-Volume (`db_data`) vorhanden ist, kann der lokale Datenstand abweichen.
- Für einen sauberen Fresh-Stand kannst du lokal neu initialisieren (Achtung: löscht lokale DB-Daten):

```bash
docker compose down -v
docker compose up --build -d
```

## 3) Schneller Funktionscheck

1. Login funktioniert
2. Admin-Navigation ist sichtbar
3. `Admin -> Benutzer` lädt
4. `Admin -> Einstellungen` lädt
5. `Admin -> API docs` lädt (mit entsprechender Permission)

## 4) API-Schnelltest

1. In der Admin-UI einen API-Token erstellen (oder vorhandenen nutzen)
2. Beispiel-Call:

```bash
curl -H "Authorization: Bearer <TOKEN>" \
  http://localhost:8080/api/v1/me
```

## 5) Qualitätschecks ausführen

```bash
docker compose exec php vendor/bin/phpunit
docker compose exec php vendor/bin/phpstan analyse -c phpstan.neon --no-progress
npx eslint web/js
```

## 6) Nächste Doku-Schritte

- Täglicher Workflow: `/docs/lokale-entwicklung.md`
- Erster kleiner Change: `/docs/erste-aenderung.md`
- Architekturüberblick: `/docs/architektur.md`
- Sicherheitsmodell: `/docs/sicherheitsmodell.md`
