v1.0.0 Production Ready

Das Betriebssystem für
unsere Arbeitswelt.

Internes Mitarbeiterportal mit Microsoft 365 Integration. Verbindet Disposition, Monteure, Lager und HR in einer einzigen, sicheren PWA.

Dokumentation

Alles an einem Ort

Modulare Architektur für alle Rollen

Einsatzplan & Dispo

Auftrags- und personalbasierte Wochenplanung. Konfliktprüfung in Echtzeit und direkte Zuordnung von Fahrzeugen.

  • Drag & Drop Planung
  • TV-Modus für Büros

Mein Plan (PWA)

Die App für den Monteur. Einsätze einsehen, bestätigen und Details abrufen – auch offline auf der Baustelle.

  • Offline-Support
  • Einsatz-Bestätigung

Fuhrpark

Verwaltung von Fahrzeugen und Anhängern inkl. automatischem TÜV/AU-Tracking und Zuweisungshistorie.

HR & Teams

Abwesenheitsmanagement (Urlaub, Krankheit), Qualifikations-Tracking (Führerscheine) und Team-Strukturen.

HSE & Audit

Digitales Verbandsbuch mit Audit-Trail und BG-Meldewesen. Lückenlose Dokumentation sensibler Daten.

RBAC & Admin

Rollenbasierte Zugriffskontrolle (Admin, Dispo, Monteur) via Microsoft Entra ID. Zentrale Steuerung.

Roadmap

Der Entwicklungsplan für 2025

Q1 - Launch & Stabilisierung

CURRENT

Rollout der Kernfunktionen: Einsatzplan, HR und Single Sign-On. TV-Dashboard Installation in den Büros.

Q2 - Integration & Automation

Push-Benachrichtigungen für die App, PDF-Export (Lieferscheine) und Outlook-Kalender Synchronisation.

Q3 - Intelligence

KI-Dispo-Assistent für Routenvorschläge, Schnittstelle zur Buchhaltung und QR-Code Scanner für Werkzeuge.

Developer Zone & Tech Stack

Dokumentation für Administratoren und Entwickler.

Next.js 15 React 18 Prisma PostgreSQL Docker Azure Entra ID
# 1. Repo clonen & Dependencies
npm install

# 2. Environment konfigurieren
cp .env.example .env.local
# AZURE_AD_CLIENT_ID=...
# DATABASE_URL="postgresql://..."

# 3. Datenbank starten & seeden
docker-compose up -d
npm run prisma:migrate
npm run prisma:seed

# 4. Starten
npm run dev

RESTful API Struktur für das Einsatzplan-Modul.

GET    /api/schedule?week=2025-W51&status=PLANNED
POST   /api/schedule
PATCH  /api/schedule/:id
DELETE /api/schedule/:id

// Helper
GET    /api/employees?search=Max&teamId=xyz
GET    /api/projects?status=ACTIVE
model ScheduleEntry {
  id        String   @id @default(cuid())
  startsAt  DateTime
  endsAt    DateTime
  userId    String?  // Mitarbeiter
  projectId String?  // Auftrag
  status    ScheduleStatus @default(PLANNED)
}

enum ScheduleStatus {
  PLANNED
  CONFIRMED
  DONE
  CANCELED
}