Files
rezepte-app/README.md

3.0 KiB

Rezepte WebApp - Node.js/MongoDB Migration

Vollständige Migration der PHP/MySQL Rezepte-App zu Node.js/Express mit MongoDB.

Stack

  • Backend: Node.js 22 + Express.js
  • Datenbank: MongoDB 8
  • Frontend: Vanilla JavaScript, HTML, CSS
  • Container: Docker + Docker Compose

Projektstruktur

recipe-app/
├── server/              # Backend
│   ├── index.js        # Express Server
│   ├── db.js           # MongoDB Connection
│   ├── routes/         # API Routes
│   └── middleware/     # Upload Middleware
├── public/             # Frontend
│   ├── *.html
│   ├── css/
│   └── js/
├── uploads/            # Bilder (Volume)
└── docker-compose.yml

Installation & Start

Mit Docker (empfohlen)

# Container bauen und starten
docker-compose up -d

# Logs anzeigen
docker-compose logs -f app

# Stoppen
docker-compose down

App läuft auf: http://localhost:3000

Lokal (ohne Docker)

# MongoDB lokal installieren und starten

# Dependencies installieren
cd server
npm install

# Server starten
npm start

# Entwicklungsmodus (mit Auto-Reload)
npm run dev

Daten migrieren

Wenn du deine bestehenden MySQL-Daten migrieren möchtest, erstelle ein Migrations-Script oder importiere die Daten manuell in MongoDB.

MongoDB Schema

Collection: recipes

{
  _id: ObjectId,
  rezeptnummer: Number (unique),
  bezeichnung: String,
  beschreibung: String,
  kategorie: String,
  vorbereitung: String,
  anzahl: Number,
  zutaten: String,
  zubereitung: [
    { schritt: Number, text: String }
  ],
  kommentar: String,
  erstelltAm: Date,
  aktualisiertAm: Date
}

Collection: images

{
  _id: ObjectId,
  rezeptId: ObjectId (ref recipes),
  dateiPfad: String,
  dateiName: String,
  hochgeladenAm: Date
}

API Endpoints

Rezepte

  • GET /api/recipes - Alle Rezepte (mit Suche & Sortierung)
  • GET /api/recipes/:id - Einzelnes Rezept
  • POST /api/recipes - Neues Rezept erstellen
  • PUT /api/recipes/:id - Rezept aktualisieren
  • DELETE /api/recipes/:id - Rezept löschen

Bilder

  • POST /api/images/:rezeptId - Bild hochladen
  • GET /api/images/recipe/:rezeptId - Bilder eines Rezepts
  • DELETE /api/images/:bildId - Bild löschen

Features

Rezepte anzeigen, erstellen, bearbeiten, löschen
Volltextsuche
Sortierung nach Nummer, Name, Kategorie
Bilder hochladen (JPG, PNG)
Lightbox für Bildvergrößerung
Responsive Design
Docker-Ready

Umgebungsvariablen

Erstelle eine .env Datei:

PORT=3000
NODE_ENV=production
MONGODB_URI=mongodb://mongo:27017/recipes

Entwicklung

VSCode Extensions empfohlen:

  • ESLint
  • Prettier
  • MongoDB for VS Code

Unterschiede zur PHP-Version

  • Datenbank: MySQL → MongoDB (denormalisiert)
  • Backend: PHP → Node.js/Express
  • Frontend: Gleiche UI, aber mit Fetch API statt Forms
  • Upload: Multer statt move_uploaded_file
  • Sessions: Nicht mehr benötigt (Stateless API)

Lizenz

Privat