Files
Atlas/STRUCTURE.md
2025-11-12 20:21:32 +01:00

4.9 KiB

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

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)