4.9 KiB
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 startennpm run build- Production Build erstellennpm start- Production Server startennpm run db:push- Datenbank Schema pushennpm run db:studio- Prisma Studio öffnennpm 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
- Änderungen am Schema:
prisma/schema.prismabearbeiten - Schema pushen:
npx prisma db push - Client regenerieren:
npx prisma generate(automatisch) - 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)