# SETUP — Entwicklung mit SQLite (DB = eine Datei)

Für die Entwicklung (auch auf mehreren PCs) braucht **kein MySQL-Server**. Die komplette Datenbank ist **eine Datei**: `laravel-app/database/database.sqlite`. Web-App (Laravel/PHP) **und** Bot (Node) lesen dieselbe Datei.

## Warum das praktisch ist
- **Nichts bleibt „installiert"** auf dem Rechner — nur die eine `.sqlite`-Datei.
- **Portabel:** Projektordner auf einen anderen PC kopieren → DB kommt mit, kein Export/Import.
- **Server später:** In der `.env` von `sqlite` auf `mysql` umstellen — der Code bleibt identisch (Laravel abstrahiert die DB, der Bot hat einen Adapter). Siehe [SETUP-XAMPP.md](SETUP-XAMPP.md).

## Voraussetzungen (Dev)
| Tool | Wofür |
|------|-------|
| **PHP 8.2+** | Laravel (aus XAMPP `C:\xampp\php` oder standalone) — MySQL wird NICHT gebraucht |
| **Composer** | Laravel-Pakete |
| **Node 18+** (du hast v24 ✅) | Bot-Worker; SQLite ist ab Node 22.5 eingebaut (`node:sqlite`) |

> PHP-Extensions: `pdo_sqlite` + `sqlite3` müssen aktiv sein (in XAMPP/Standard-PHP normal an). Prüfen: `php -m | findstr sqlite`.

## Schritte

### 1) Web-App (Laravel)
```bash
cd laravel-app
copy .env.example .env         # DB_CONNECTION steht schon auf sqlite
composer install
php artisan key:generate        # erzeugt APP_KEY (base64:...) — MERKEN für den Bot!
php artisan migrate --seed      # legt alle Tabellen + Demo-Daten in database/database.sqlite an
php artisan serve               # http://127.0.0.1:8000
```
Die Datei `database/database.sqlite` existiert bereits (leer). `migrate` füllt sie mit dem Schema, `--seed` mit den Demo-Daten (Nightfall Community, Tickets, Bewerbungen).

### 2) Bot-Worker (Node)
```bash
cd ../bot-worker
copy .env.example .env
```
In `bot-worker/.env`:
- `APP_KEY=` → **exakt** den Wert aus `laravel-app/.env` einsetzen (für Token-Entschlüsselung).
- `DB_CONNECTION=sqlite` (schon gesetzt) → liest automatisch `../laravel-app/database/database.sqlite`.
- `DISCORD_TOKEN=` / `DISCORD_CLIENT_ID=` → von deiner Discord-App (siehe SETUP-XAMPP.md §2).

```bash
npm install
npm run register    # Slash-Commands registrieren (braucht Token)
npm start
```

## Auf einen anderen PC umziehen
1. **App + Bot stoppen** (damit SQLite die WAL-Datei in die Hauptdatei schreibt).
2. Kompletten Projektordner kopieren — inkl. `laravel-app/database/database.sqlite`.
   - Falls die App lief: auch `database.sqlite-wal` und `database.sqlite-shm` mitkopieren (oder vorher sauber stoppen).
3. Auf dem neuen PC: PHP + Composer + Node installieren → `composer install` (in laravel-app) und `npm install` (in bot-worker) → starten. `.env` kommt mit; ggf. `APP_URL`/Discord-Redirect anpassen.

## Später auf den Server (MySQL)
1. In **beiden** `.env` (`laravel-app` + `bot-worker`) `DB_CONNECTION=mysql` setzen und die `DB_*`-Zeilen ausfüllen (siehe SETUP-XAMPP.md §3/§4).
2. MySQL-DB `tacforce` anlegen → in laravel-app: `php artisan migrate --seed`.
3. Fertig — **derselbe Code**, nur ein anderes Backend.

## Hinweise
- **WAL-Modus** ist aktiv, damit App (PHP) und Bot (Node) gleichzeitig auf die Datei zugreifen können. Deshalb tauchen im Betrieb `-wal`/`-shm`-Dateien neben der `.sqlite` auf — das ist normal.
- Die `.sqlite`-Datei enthält deine echten (Test-)Daten. Wenn du bei null anfangen willst: Datei löschen, `printf '' > database/database.sqlite` (oder leere Datei anlegen), dann `php artisan migrate --seed`.
