🌊 Red Sea Dreams Dokumentation
Klicken Sie auf "Als PDF drucken" um diese Seite als PDF zu speichern.

🛠️ Red Sea Dreams - Entwicklung Dokumentation

Technologie-Stack

Frontend

Technologie Version Verwendung
React 18.x UI Framework
React Router 6.x Routing
Tailwind CSS 3.x Styling
Axios/Fetch - API Calls
React Helmet - SEO Meta Tags

Backend

Technologie Version Verwendung
Python 3.11+ Programmiersprache
FastAPI 0.100+ Web Framework
Pydantic 2.x Datenvalidierung
Motor - Async MongoDB Driver
HTTPX - HTTP Client

Datenbank

Technologie Verwendung
MongoDB Hauptdatenbank
Collections hotels, rooms, bookings, customers, activities, transfers, reviews

Externe Services

Service Verwendung
Stripe Zahlungsabwicklung
Amadeus API Live-Flugsuche
ExchangeRate API Wechselkurse
Emergent Mail E-Mail-Versand
OpenAI GPT-4o AI Chatbot

📁 Projektstruktur

/app/
├── backend/
│   ├── .env                    # Umgebungsvariablen
│   ├── requirements.txt        # Python Dependencies
│   ├── server.py              # Haupt-Backend (FastAPI)
│   └── uploads/               # Hochgeladene Medien
│
├── frontend/
│   ├── .env                    # Frontend Umgebungsvariablen
│   ├── package.json           # NPM Dependencies
│   ├── public/
│   │   ├── index.html         # HTML Template
│   │   ├── robots.txt         # SEO Robots
│   │   └── favicon.ico
│   └── src/
│       ├── App.js             # Hauptkomponente (4000+ Zeilen)
│       ├── App.css            # Globale Styles
│       ├── index.js           # Entry Point
│       └── components/
│           ├── ui/            # Shadcn UI Components
│           └── HotelAdminDashboard.jsx
│
└── memory/
    ├── PRD.md                 # Product Requirements
    ├── PROJEKT_DOKUMENTATION.md
    └── ENTWICKLUNG_DOKUMENTATION.md

⚙️ Umgebungsvariablen

Backend (.env)

MONGO_URL=mongodb://localhost:27017
DB_NAME=redseadreams
STRIPE_SECRET_KEY=sk_test_...
AMADEUS_API_KEY=...
AMADEUS_API_SECRET=...
EMERGENT_LLM_KEY=...

Frontend (.env)

REACT_APP_BACKEND_URL=https://your-domain.com

🗄️ Datenbank Schema

Collection: hotels

{
  id: "uuid",
  name: "Hotel Name",
  name_en: "Hotel Name (English)",
  location: "Marsa Alam",
  description: "Beschreibung...",
  description_en: "Description...",
  stars: 5,
  rating: 4.5,
  reviews_count: 127,
  amenities: ["Pool", "Spa", "Restaurant"],
  media: [
    { id: "uuid", type: "image", url: "https://...", caption: "" }
  ],
  rooms: [...],
  children_policy: {
    infant_age: 2,
    child_age: 12,
    child_percentage: 50
  },
  notification_email: "hotel@example.com",
  blocked: false,
  created_at: "2026-01-01T00:00:00Z"
}

Collection: rooms

{
  id: "uuid",
  hotel_id: "hotel-uuid",
  name: "Deluxe Zimmer",
  name_en: "Deluxe Room",
  description: "Beschreibung...",
  description_en: "Description...",
  room_type: "sea_view", // sea_view, garden_view, pool_view, standard
  capacity: 2,
  price_per_night: 150,
  amenities: ["AC", "TV", "Minibar"],
  media: [...],
  price_periods: [
    {
      id: "uuid",
      start_date: "2026-06-01",
      end_date: "2026-08-31",
      price: 200
    }
  ]
}

Collection: bookings

{
  id: "uuid",
  booking_type: "package", // package, hotel, activity, transfer
  item_id: "hotel-uuid",
  item_name: "Hotel Name - Zimmer",
  customer_name: "Max Mustermann",
  customer_email: "max@example.com",
  customer_phone: "+49123456789",
  customer_address: {
    street: "Musterstraße 123",
    postal_code: "12345",
    city: "Berlin",
    country: "Deutschland"
  },
  check_in: "2026-02-01",
  check_out: "2026-02-08",
  guests: 2,
  total_price: 1200,
  status: "confirmed", // pending, confirmed, cancelled
  payment_status: "paid", // pending, paid, refunded
  stripe_session_id: "cs_...",
  extras: {
    transfer: {
      id: "hrg-marsa",
      name: "Flughafen Hurghada → Marsa Alam",
      price: 85,
      flight_details: {
        arrival_date: "2026-02-01",
        arrival_time: "14:30",
        flight_number: "LH1234"
      }
    },
    activities: [
      {
        id: "uuid",
        name: "Schnorchel-Tour",
        participants: 2,
        price: 35,
        total: 70
      }
    ]
  },
  notes: "Besondere Wünsche...",
  created_at: "2026-01-15T10:30:00Z"
}

Collection: customers

{
  id: "uuid",
  email: "kunde@example.com",
  password_hash: "...",
  first_name: "Max",
  last_name: "Mustermann",
  phone: "+49123456789",
  created_at: "2026-01-01T00:00:00Z"
}

Collection: reviews

{
  id: "uuid",
  hotel_id: "hotel-uuid",
  customer_id: "customer-uuid",
  customer_name: "Max M.",
  rating: 5,
  comment: "Tolles Hotel!",
  status: "approved", // pending, approved, rejected
  hotel_response: "Vielen Dank!",
  created_at: "2026-01-10T00:00:00Z"
}

Collection: activities

{
  id: "uuid",
  name: "Schnorchel-Tour",
  name_en: "Snorkeling Tour",
  category: "water", // water, land, culture
  location: "Marsa Alam",
  duration: "4h",
  price: 35,
  description: "Beschreibung...",
  description_en: "Description...",
  media: [...],
  highlights: ["Highlight 1", "Highlight 2"],
  includes: ["Ausrüstung", "Mittagessen"],
  active: true
}

Collection: hotel_admins

{
  id: "uuid",
  email: "admin@hotel.com",
  password_hash: "...",
  hotel_id: "hotel-uuid",
  reset_token: null,
  reset_token_expiry: null,
  created_at: "2026-01-01T00:00:00Z"
}

🔌 API Endpoints

Öffentliche Endpoints (Keine Auth)

Method Endpoint Beschreibung
GET /api/hotels Alle Hotels abrufen
GET /api/hotels/{id} Hotel Details
GET /api/activities Alle Aktivitäten
GET /api/activities/{id} Aktivität Details
GET /api/transfers Alle Transfers
GET /api/currencies/rates Wechselkurse
GET /sitemap.xml SEO Sitemap
GET /robots.txt SEO Robots

Buchungs-Endpoints

Method Endpoint Beschreibung
POST /api/bookings Neue Buchung erstellen
GET /api/bookings/{id} Buchung abrufen
POST /api/payments/create-checkout Stripe Session erstellen

Kunden-Endpoints

Method Endpoint Beschreibung
POST /api/customers/register Registrierung
POST /api/customers/login Login
GET /api/customers/me Profil abrufen
GET /api/customers/bookings Buchungshistorie
POST /api/reviews Bewertung erstellen
GET /api/hotels/{id}/reviews Hotel-Bewertungen

Hotel-Admin Endpoints (Auth erforderlich)

Method Endpoint Beschreibung
POST /api/hotel-admin/login Admin Login
GET /api/hotel-admin/hotel Hotel-Daten
PUT /api/hotel-admin/hotel Hotel aktualisieren
POST /api/hotel-admin/rooms Zimmer erstellen
PUT /api/hotel-admin/rooms/{id} Zimmer aktualisieren
DELETE /api/hotel-admin/rooms/{id} Zimmer löschen
POST /api/hotel-admin/media Medien hochladen
GET /api/hotel-admin/bookings Buchungen abrufen
GET /api/hotel-admin/reviews Bewertungen abrufen
PUT /api/hotel-admin/reviews/{id}/approve Bewertung freigeben
GET /api/hotel-admin/occupancy-stats/{id} Auslastungs-Statistiken
POST /api/hotel-admin/forgot-password Passwort vergessen
POST /api/hotel-admin/reset-password Passwort zurücksetzen

Super-Admin Endpoints (Auth erforderlich)

Method Endpoint Beschreibung
POST /api/super-admin/login Super-Admin Login
GET /api/super-admin/hotels Alle Hotels
PUT /api/super-admin/hotels/{id}/block Hotel blockieren
PUT /api/super-admin/hotels/{id}/reset-password Passwort zurücksetzen
GET /api/super-admin/bookings Alle Buchungen
POST /api/super-admin/charter-flights Charter-Flug erstellen

AI Chatbot

Method Endpoint Beschreibung
POST /api/chatbot Chat-Nachricht senden

🎨 Frontend Komponenten

Haupt-Seiten (in App.js)

Komponente Route Beschreibung
HomePage / Startseite mit Hero, Hotels, Aktivitäten
HotelsPage /hotels Hotel-Liste mit Filtern
HotelDetailPage /hotels/:id Hotel-Details mit Buchung
ActivitiesPage /activities Aktivitäten-Liste
ActivityDetailPage /activities/:id Aktivität-Details mit Buchung
TransfersPage /transfers Transfer-Buchung
PackagesPage /packages Paket-Buchung Wizard
BookingExtrasPage /booking/extras Extras hinzufügen (Transfer, Aktivitäten)
BookingSuccessPage /booking/success Buchungsbestätigung
CustomerDashboard /customer/dashboard Kunden-Dashboard
CustomerLoginPage /customer/login Kunden-Login
CustomerRegisterPage /customer/register Kunden-Registrierung
HotelAdminLoginPage /hotel-admin/login Hotel-Admin Login
SuperAdminLoginPage /super-admin/login Super-Admin Login

Separate Komponenten

Komponente Datei Beschreibung
HotelAdminDashboard HotelAdminDashboard.jsx Komplettes Hotel-Admin Dashboard
UI Components /components/ui/* Shadcn UI Komponenten

Context Provider

Context Beschreibung
LanguageContext Deutsch/Englisch Umschaltung
CurrencyContext Währung (EUR, CHF, USD)
AuthContext Hotel-Admin Authentifizierung
CustomerContext Kunden-Authentifizierung

🚀 Lokale Entwicklung

Voraussetzungen

Backend starten

cd /app/backend
pip install -r requirements.txt
uvicorn server:app --host 0.0.0.0 --port 8001 --reload

Frontend starten

cd /app/frontend
yarn install
yarn start

Umgebungsvariablen setzen

# Backend
cp .env.example .env
# Werte eintragen

# Frontend
cp .env.example .env
# REACT_APP_BACKEND_URL setzen

🧪 Testing

Backend testen

# API Health Check
curl http://localhost:8001/api/health

# Hotels abrufen
curl http://localhost:8001/api/hotels

Frontend testen

# Build testen
cd /app/frontend
yarn build

📦 Deployment

Emergent Platform

  1. Preview testen
  2. Deploy klicken
  3. Domain verbinden (optional)

Manuelles Deployment

  1. Backend: FastAPI mit Gunicorn/Uvicorn
  2. Frontend: yarn build → Static Hosting
  3. MongoDB: MongoDB Atlas oder Self-hosted
  4. Reverse Proxy: Nginx

🔒 Sicherheit

Implementiert

Empfehlungen für Produktion


🐛 Bekannte Probleme

Technische Schulden

  1. App.js ist zu groß (4000+ Zeilen)

  2. Medien-Speicherung lokal

  3. Keine Unit Tests


📞 Support & Kontakt

Emergent Platform Support

Projekt-spezifisch


Dokumentation erstellt: 21. Januar 2026 Letzte Aktualisierung: 21. Januar 2026