# Projektstruktur - SaveTheMoment Atlas

```
SaveTheMomentAtlas/
│
├── app/                           # Next.js App Router
│   ├── api/                       # API Routes
│   │   └── auth/
│   │       └── [...nextauth]/     # NextAuth.js Authentication
│   │           └── route.ts
│   │
│   ├── dashboard/                 # Admin Dashboard
│   │   ├── layout.tsx            # Dashboard Layout mit Auth-Check
│   │   └── page.tsx              # Dashboard Startseite
│   │
│   ├── driver/                    # Fahrer Dashboard
│   │   ├── layout.tsx            # Fahrer Layout mit Auth-Check
│   │   └── page.tsx              # Fahrer Übersicht
│   │
│   ├── login/                     # Admin Login
│   │   └── page.tsx
│   │
│   ├── driver-login/              # Fahrer Login
│   │   └── page.tsx
│   │
│   ├── layout.tsx                 # Root Layout
│   ├── page.tsx                   # Landing Page
│   └── globals.css                # Global Styles
│
├── components/                    # React Components
│   ├── DashboardContent.tsx      # Admin Dashboard UI
│   └── DriverDashboard.tsx       # Fahrer Dashboard UI
│
├── lib/                           # Utilities & Config
│   ├── prisma.ts                 # Prisma Client Singleton
│   └── auth.ts                   # NextAuth Konfiguration
│
├── prisma/                        # Datenbank
│   ├── schema.prisma             # Datenbank Schema
│   └── seed.ts                   # Seed Script
│
├── types/                         # TypeScript Type Definitions
│   └── next-auth.d.ts            # NextAuth Type Extensions
│
├── .env                           # Umgebungsvariablen (lokal)
├── .env.example                   # Umgebungsvariablen Template
├── .gitignore                     # Git Ignore
├── next.config.mjs                # Next.js Config
├── package.json                   # Dependencies & Scripts
├── postcss.config.mjs             # PostCSS Config
├── tailwind.config.ts             # Tailwind CSS Config
├── tsconfig.json                  # TypeScript Config
├── README.md                      # Haupt-Dokumentation
├── QUICKSTART.md                  # Schnellstart-Anleitung
└── setup.sh                       # Setup Script

```

## Wichtige Dateien erklärt

### Datenbank (Prisma)

- **prisma/schema.prisma**: Definiert das komplette Datenmodell
  - User (Admin/Fahrer)
  - Location (Standorte)
  - Photobox (Inventar)
  - Booking (Buchungen)
  - Tour (Fahrten)
  - PriceConfig (Preise pro Standort)
  - Notification (Benachrichtigungen)

- **prisma/seed.ts**: Fügt Testdaten ein
  - 3 Benutzer (1 Admin, 2 Fahrer)
  - 5 Standorte
  - 17 Fotoboxen
  - Preiskonfigurationen

### Authentifizierung

- **lib/auth.ts**: NextAuth.js Konfiguration
  - Credentials Provider
  - Session Management
  - Role-based Access Control

- **app/api/auth/[...nextauth]/route.ts**: NextAuth.js API Route

### Layouts & Pages

- **app/dashboard/**: Nur für Admins zugänglich
- **app/driver/**: Nur für Fahrer zugänglich
- Automatische Weiterleitung bei fehlender Berechtigung

### UI Components

- **DashboardContent.tsx**: 
  - Statistiken
  - Letzte Buchungen
  - Schnellzugriffe
  - Navigation

- **DriverDashboard.tsx**:
  - Eigene Touren
  - Verfügbare Touren
  - Navigation

## Datenmodell Übersicht

```
User ────┬──── Tour
         └──── Notification

Location ─┬─── PriceConfig
          ├─── Photobox
          └─── Booking

Photobox ───── Booking

Booking ────── Tour
```

## Scripts (package.json)

- `npm run dev` - Entwicklungsserver starten
- `npm run build` - Production Build erstellen
- `npm start` - Production Server starten
- `npm run db:push` - Datenbank Schema pushen
- `npm run db:studio` - Prisma Studio öffnen
- `npm run db:seed` - Testdaten einfügen

## Umgebungsvariablen

```env
DATABASE_URL           # PostgreSQL Verbindung
NEXTAUTH_SECRET        # Session Secret
NEXTAUTH_URL           # App URL

# Später:
LEXOFFICE_API_KEY      # Lexoffice Integration
GOOGLE_MAPS_API_KEY    # Maps & Routing
EMAIL_HOST             # E-Mail Server
EMAIL_PORT             # E-Mail Port
EMAIL_USER             # E-Mail Benutzername
EMAIL_PASSWORD         # E-Mail Passwort
```

## Entwicklungs-Workflow

1. **Änderungen am Schema**: `prisma/schema.prisma` bearbeiten
2. **Schema pushen**: `npx prisma db push`
3. **Client regenerieren**: `npx prisma generate` (automatisch)
4. **Code anpassen**: TypeScript nutzt automatisch neue Typen

## Testing

Aktuell: Manuelle Tests mit Seed-Daten

Später geplant:
- Unit Tests (Jest)
- Integration Tests
- E2E Tests (Playwright)
