# Wicount — GoBD-konforme Verlusterfassung & Inventur

> **SaaS für Restaurants und Gastronomiebetriebe in Deutschland (DE) und Österreich (AT).**
> Rechtssichere Erfassung von Warenverlusten, Wareneingängen, Bestandsführung und Inventur fürs Finanzamt.

---

## Überblick

Wicount ist eine **Multi-Mandanten-fähige Web-App (PWA)**, die Gastronomiebetrieben hilft, ihre Warenbewegungen **GoBD-konform** zu dokumentieren. Jede Erfassung wird mit einer **SHA-256 Hash-Chain** manipulationssicher gemacht — vom ersten Wareneingang bis zum Jahresabschluss gegenüber dem Finanzamt.

- **Zielgruppe:** Restaurants, Cafés, Hotels, Catering (DE/AT)
- **USP:** GoBD/RKSV-Konformität + DATEV/GoBD-XML + deutsche Sprache
- **Preis:** FREE → STARTER (29 €/Monat) → PRO (79 €/Monat) → ENTERPRISE (199 €/Monat)
- **Website:** [wicount.app](https://wicount.app)
- **App:** [app.wicount.app](https://app.wicount.app)

---

## Kernfunktionen

### 1. Verlusterfassung
7 Verlustarten (Verderb, Bruch, Diebstahl, Schwund, Eigenverbrauch, Retoure, Sonstiges) mit:
- Foto-Upload + GPS-Koordinaten
- SHA-256 Hash-Chain (append-only)
- Stornierung mit Begründung (Soft-Delete)
- Versionierung für GoBD-Korrekturen

### 2. Wareneingänge
- GPS-pflichtige Erfassung mit Lieferant, Lieferschein, Fotos
- Live-Bestandsberechnung (Eingänge − Verluste)
- Mindestbestand-Warnung (Ampel-System)

### 3. Rechnungs-Modul (3 Erfassungswege)
- **E-Rechnung (XML):** ZUGFeRD (DE), XRechnung (DE), ebInterface (AT) — automatisches Parsen
- **Foto/PDF + KI:** Qwen2.5-VL Vision-KI extrahiert Positionen — Nutzer prüft im Pflicht-Review
- **Manuell:** Freitext-Eingabe
- Lernendes Lieferanten-Artikel-Mapping
- COGS-Report (Wareneinsatz)

### 4. Inventur
- Sessions pro Filiale starten/abschließen
- 4 Erfassungsmethoden: Barcode, Photo-KI, Waage, Manuell
- Soll-Ist-Abgleich mit automatischer Differenzberechnung
- SHA-256 Hash über alle Zählungen bei Abschluss

### 5. Exporte
- **PDF** mit QR-Code + digitaler Signatur
- **DATEV CSV** (Buchungsstammdaten SKR04)
- **GoBD-XML** (vollständiger Export für Betriebsprüfung mit Hash-Kette)
- E-Mail-Versand direkt an Steuerberater

### 6. Sicherheit
- bcrypt (cost 12) für Passwörter
- JWT 30 Min + TOTP 2FA (speakeasy)
- Account Lockout nach 8 Fehlversuchen (15 Min, PostgreSQL-basiert)
- CSP (Content Security Policy) aktiv
- Rate Limiting (10/Min Auth, 400/15Min Global)
- Magic-Byte-Validierung für Uploads
- Docker non-root + HEALTHCHECK
- Pino Logging mit PII-Redaction

---

## Technische Architektur

| Layer | Technologie |
|---|---|
| Backend | Node.js 24 + Express 5 + TypeScript |
| Datenbank | PostgreSQL 16 (Docker) via Prisma 7 + @prisma/adapter-pg |
| Frontend | React 19 + Vite 8 + Tailwind CSS 4 + Zustand 5 |
| Auth | JWT (30 Min) + bcrypt (12 Runden) + TOTP 2FA (speakeasy + qrcode) |
| Validierung | Zod 4 (.strict() auf allen Routes) |
| Dateien | S3-kompatibel (Hetzner Object Storage) mit lokalem Fallback |
| KI | Qwen2.5-VL (self-hosted, vLLM, OpenAI-kompatibel) |
| E-Mail | Resend API (DKIM/SPF/MX konfiguriert) |
| Billing | Stripe (Checkout, Webhooks, Kundenportal) |
| Hosting | Infomaniak VPS + Docker + nginx + Let's Encrypt SSL |

---

## GoBD-Compliance (10 Jahre Aufbewahrung)

- Append-Only: INSERT nur, UPDATE/DELETE via DB-Trigger geblockt
- SHA-256 Hash-Chain: Jeder Eintrag hasht Vorgänger-Hash + Felder + Nonce
- Server-Timestamp + User-ID auf jedem Eintrag
- Digitale Signatur (Base64)
- GPS-Pflicht (GoBD-konforme Ortserfassung)
- DB-Rollen-Trennung: gobd_readonly / gobd_write / gobd_admin
- AuditLog (immutable, mit IP und User-ID)
- 10-Jahre-Datenvorhaltung

---

## Rollen & Berechtigungen

| Rolle | Rechte |
|---|---|
| ADMIN | Alles: User, Filialen, Exporte, Billing |
| MANAGER | Eigene Filiale, Berichte, Exporte |
| MITARBEITER | Nur erfassen (Verluste, Eingänge, Inventur) |
| STEUERBERATER | Nur lesen + exportieren (GoBD-Readonly) |

---

## Produktionsstatus (2026-07-24)

- **Version:** 1.0.7
- **Commits:** 174
- **API-Endpoints:** 54 (100% dokumentiert)
- **Frontend-Seiten:** 14
- **Datenbank-Modelle:** 14 / Enums: 7
- **Migrations:** 8
- **Test-Coverage:** 0% (noch keine Tests)
- **CI/CD:** Manuell (GitHub Actions Workflow vorbereitet, deaktiviert)

---

## Kontakt

- **Info:** info@wicount.app
- **Support:** support@wicount.app
- **Rechnung:** rechnung@wicount.app
