Skip to content

Repository files navigation

Eu-Office NextGen

Version NestJS Next.js PostgreSQL Docker TypeScript License

Selbst-gehostete, enterprise-fähige interne Office-Suite

Vollständige Produktivitätsplattform — Privacy-First, kein Cloud-Zwang


Übersicht

Eu-Office NextGen ist eine vollständig selbst-gehostete Office-Suite für interne Teams. Dokumentenverwaltung, Projektverfolgung, Kontaktverwaltung, E-Mail, Team-Chat und Administration — alles in einer integrierten Oberfläche.

Stack: NestJS 10 + Next.js 14 (App Router) + Turborepo + PostgreSQL 16 + Prisma 5 + Socket.IO
Deployment: Docker + Portainer auf CasaOS/I-Nuc


Features

Dokumentenverwaltung

  • Office-Editor — DOCX, XLSX, PPTX direkt im Browser
  • PDF-Viewer — Inline, kein Download nötig, Zoom + Vollbild
  • TXT-Editor — Zeilennummern, Suchen/Ersetzen, Auto-Save (3s), Versionierung
  • Bild-Viewer — PNG, JPG, GIF, BMP, WebP mit Zoom und Vollbild
  • Versionshistorie — jede Änderung wiederherstellbar
  • Freigaben — Dateien mit anderen Nutzern teilen

Projektverwaltung

  • Kanban-Board, Gantt-Diagramm, Roadmap
  • Team-Mitglieder mit Rollen, Bildergalerie
  • Projekt-Dokumente in eigenem Root-Ordner

Kontaktverwaltung

  • CRUD mit dynamischen E-Mail/Telefon-Arrays
  • Mehrfachauswahl + Bulk-Papierkorb
  • Projekt-Verknüpfung (Many-to-Many ContactProject)
  • CSV-Import/Export — Google Contacts-kompatibel (First Name, Last Name, Name Suffix)
  • VCF-Import/Export — RFC 6350, alle 5 N:-Felder, Roundtrip 100% identisch

E-Mail-Client

  • IMAP/SMTP, Multi-Account, HTML-Sanitization

Teams & Chat

  • WebSocket-Echtzeit-Chat
  • Deterministische Benutzerfarben — aus userId, WCAG AA, keine DB nötig

Kalender

  • Monat/Jahr-Dropdown, Heute-Button, Termin-CRUD, User-Isolation

Sicherheit & Admin

  • 2FA/TOTP (Google Authenticator-kompatibel, Recovery-Codes)
  • Brute-Force — 5 Versuche → 15 Min Sperre
  • Session-Management — aktive Sessions einsehen/widerrufen
  • Rollen & Berechtigungen — feingranulares Permission-System
  • Gruppen — Mitglieder per Modal verwalten
  • Admin-Sitzungsprotokoll — alle Sessions aller Nutzer, Filter/Suche/CSV/Live

Projektstruktur

eu-office-nextgen/
├── apps/
│   ├── api/                        # NestJS Backend
│   │   ├── prisma/schema.prisma    # Datenbankschema
│   │   └── src/modules/
│   │       ├── auth/               # Login, Sessions, Brute-Force
│   │       ├── security/           # 2FA TOTP
│   │       ├── admin/              # Users, Gruppen, Rollen, Audit
│   │       ├── files/              # Upload, Viewer, Versionen, Shares
│   │       ├── projects/           # CRUD, Tasks, Gantt, Members
│   │       ├── contacts/           # CRUD, CSV/VCF Import+Export, ProjectLinks
│   │       ├── calendar/           # Events, User-Isolation
│   │       ├── collab/             # WebSocket Chat, Aktivitäten
│   │       └── mail/               # IMAP/SMTP Multi-Account
│   └── web/                        # Next.js 14 Frontend
│       ├── app/(app)/              # 17 Seiten (Auth-geschützt)
│       ├── components/
│       │   ├── PdfViewer.tsx       # PDF inline
│       │   ├── TxtEditor.tsx       # TXT mit Auto-Save
│       │   ├── ImageViewer.tsx     # Bilder mit Zoom
│       │   └── documents/DocumentManager.tsx
│       └── lib/
│           ├── api.ts              # Typisierter API-Client
│           └── chatColors.ts       # Deterministische Farben
├── turbo.json
└── package.json

Installation

Docker (Produktion)

git clone https://github.com/cod-xio/eu-office-nextgen.git
cd eu-office-nextgen
cp .env.example .env   # Werte anpassen
docker compose up -d
docker compose exec api npx prisma migrate deploy

Erreichbar: http://localhost:8800

Wichtige Umgebungsvariablen

DATABASE_URL="postgresql://euoffice:password@postgres:5432/euoffice"
JWT_SECRET="min-32-zeichen-geheimschluessel"
ADMIN_EMAIL="admin@euoffice.local"
ADMIN_PASSWORD="SicheresPasswort123!"

Lokale Entwicklung

npm install
cd apps/api && npx prisma migrate dev && cd ../..
npm run dev
# Frontend: http://localhost:3000  |  API: http://localhost:3001

API (Auszug)

Method Endpunkt Beschreibung
POST /api/v1/auth/login Anmelden (inkl. MFA)
GET /api/v1/contacts/export/csv Google CSV-Export
POST /api/v1/contacts/import/vcf vCard importieren
POST /api/v1/contacts/bulk/trash Mehrere in Papierkorb
POST /api/v1/contacts/:id/projects/:pid Projekt verknüpfen
GET /api/v1/admin/sessions Alle Sessions (Admin)
GET /api/v1/admin/login-audit Login-Audit (Admin)

Berechtigungssystem

files:read/write  |  projects:read/write/manage
contacts:read/write  |  calendar:read/write
users:read/manage  |  roles:read/manage  |  settings:read

Sicherheit

  • IP-Extraktion: X-Real-IPX-Forwarded-Forreq.ipsocket.remoteAddress
  • trust proxy = true in main.ts für Docker/Nginx
  • Argon2id Passwort-Hashing, HttpOnly Cookies für Sessions
  • Private IPs im Frontend als „Lokales Netz ⓘ" gekennzeichnet

Changelog

Version Highlights
v3.8 Bild-Viewer (PNG/JPG/GIF/BMP), Kontakte Mehrfachauswahl, Projekt-Verknüpfung (ContactProject), Bug-Fixes
v3.7 VCF Parser komplett (5 N:-Felder, RFC 6350), CSV Name Suffix, Roundtrip 100%
v3.6 PDF-Viewer, TXT-Editor (Auto-Save, Suchen/Ersetzen, Zeilennummern)
v3.5 CSV Import-Fix (79/79 Kontakte erkannt)
v3.4 Kontakte Import/Export, Admin-Sitzungsprotokoll, Chat-Farben
v3.3 Suchleiste vereinheitlicht (Topbar actions-Slot überall)
v3.2 IP-Erkennung-Chain, Kalender Monat/Jahr-Dropdown
v3.1 Gruppen vollständig, Benutzer Rollen/Gruppen beim Anlegen
v3.0 2FA TOTP, Brute-Force-Schutz, Session-Management, Profil

Lizenz

EU-Office Community License — Copyright (c) 2026 cod-xio

Kostenlos nutzbar, veraenderbar und weiterzugeben. Verkauf verboten. Urheberrecht bleibt bei cod-xio.

Gebaut für Teams, die die Kontrolle über ihre Daten behalten wollen.

About

Self-hosted enterprise office suite - NestJS + Next.js + PostgreSQL

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages