2025-10-31 11:13:33 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:13:33 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:08:46 +01:00
2025-10-31 11:08:46 +01:00

Order Management System (OMS)

Ein modernes Order Management System für konfigurierbare Produkte, entwickelt als White-Label-Lösung für On-Premise-Hosting.

Übersicht

Dieses System wurde für eine Coding Challenge entwickelt und zeigt:

  • RESTful API mit Express.js und TypeScript
  • Eingabevalidierung mit Zod
  • SQLite3 Datenbank mit automatischer Initialisierung
  • Event-Driven Architecture (simuliert für Demo)
  • React Frontend mit Material UI
  • Docker-Container für einfaches Deployment
  • Unit-Tests mit Jest

Architektur

Siehe:

Schnellstart

Voraussetzungen

  • Node.js 18+
  • npm
  • Docker (optional)

Installation

# Alle Dependencies installieren
npm run install:all

# Datenbank-Ordner wird automatisch erstellt beim ersten Start

Entwicklung

# Terminal 1: Backend
npm run dev

# Terminal 2: Frontend
npm run dev:frontend

Mit Docker

docker compose up

Tests

npm test

API Dokumentation

GET /orders

Ruft alle Bestellungen ab.

Response (200):

{
  "success": true,
  "data": [...],
  "count": 5
}

POST /orders

Erstellt eine neue Bestellung.

Request:

{
  "customerId": "CUST1",
  "customerName": "Lui Denkwerk",
  "customerEmail": "lui@test.com",
  "items": [
    {
      "productId": "TISCH1",
      "quantity": 1,
      "price": 29.99
    }
  ],
  "shippingAddress": {
    "street": "yxcstraße 1",
    "city": "Grevenbroich",
    "postalCode": "41515",
    "country": "DE"
  }
}

Response (201):

{
  "success": true,
  "data": {
    "id": 1,
    "orderNumber": "Order-1234567890-123",
    "totalAmount": 299.99,
    "status": "pending",
    ...
  }
}

Features

Backend

  • Express.js mit TypeScript
  • Zod für Runtime-Validierung
  • SQLite3 (zero-config, ideal für On-Premise)
  • Event-System (simuliert, in Production würde ich RabbitMQ oder Kafka nutzen)
  • Jest Tests

Frontend

  • React 18 mit TypeScript
  • Material UI 5 für schnelle UI-Entwicklung
  • Vite als Build-Tool
  • Client-Side Validierung
  • Error-Handling
  • Zwei Views: Bestellung erstellen + Bestellübersicht

Deployment

  • Docker & Docker Compose
  • Nginx als Reverse Proxy für Frontend
  • Isolierte Container für Backend/Frontend

Technische Entscheidungen

SQLite statt PostgreSQL: Für die Challenge ausreichend, leicht zu deployen, keine externe DB nötig. In Production würde ich auf PostgreSQL wechseln.

Event-Simulation: Events werden mit Console-Logs simuliert.

Keine Auth: Nicht Teil der Challenge. In Production JWT oder OAuth implementieren.

Material UI: Schnelle UI-Entwicklung mit professionellem Look ohne viel CSS schreiben zu müssen.


Description
No description provided
Readme 187 KiB
Languages
TypeScript 96.3%
Dockerfile 1.6%
HTML 1.3%
JavaScript 0.8%