From 54af8a337e18030474985a88b40f322ac2206a2a Mon Sep 17 00:00:00 2001 From: fds2610 Date: Wed, 25 Mar 2026 00:31:57 +0100 Subject: [PATCH] added README.md --- README.md | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6bdae7 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# Steuerkram + +Self-hosted Buchhaltungs- und Steueranwendung für deutsche Freiberufler und Kleinunternehmer. Entwickelt als datensouveräne Alternative zu SaaS-Diensten wie papierkram.de. + +## Funktionsumfang + +- **Kontenrahmen SKR03** – vollständiger Kontenrahmen mit ~80 vorbesetzten Konten (CRUD) +- **Belegverwaltung** – Upload von PDF, PNG, TIFF und ZUGFeRD-XML; SHA-256 Integritätsprüfung +- **Buchungen** – doppelte Buchführung; GoBD-konforme Trigger verhindern nachträgliche Manipulation +- **Kundenverwaltung** – CRUD +- **Ausgangsrechnungen** – DIN 5008 Layout, PDF-Export via mPDF +- **UStVA** – Kennzahlen-Berechnung aus Buchungen, ELSTER XML-Export +- **EÜR** – Jahresauswertung mit PDF-Export +- **Einstellungen** – Firmendaten, Logo, ELSTER-Steuernummer + +## Tech Stack + +| Schicht | Technologie | +|---|---| +| Webserver | Apache 2.4 | +| Backend | PHP 8.3 (MVC, kein Framework) | +| Datenbank | MariaDB 11 | +| PDF-Generierung | mPDF 8.x | +| Frontend | HTML, CSS, JavaScript (keine Bibliotheken) | +| Deployment | Docker / Docker Compose | + +## Voraussetzungen + +- [Docker](https://docs.docker.com/get-docker/) ≥ 24 +- [Docker Compose](https://docs.docker.com/compose/install/) ≥ 2.20 (in neueren Docker-Versionen enthalten) +- Git + +## Installation + +### 1. Repository klonen + +```bash +git clone steuerkram +cd steuerkram +``` + +### 2. Zugangsdaten anpassen + +Öffne `docker-compose.yml` und ändere die folgenden Umgebungsvariablen im `web`-Service: + +```yaml +environment: + AUTH_USER: admin # Login-Benutzername + AUTH_PASS: changeme # Login-Passwort – UNBEDINGT ändern! + APP_SECRET: change-this-in-production # Zufälligen langen String eintragen +``` + +Außerdem die Datenbankpasswörter in beiden Services (`web` und `db`) aufeinander abstimmen, falls gewünscht. + +### 3. Container starten + +```bash +docker compose up -d +``` + +Beim ersten Start werden automatisch: +- die Datenbank initialisiert (`migrations/001_initial_schema.sql`) +- der SKR03-Kontenrahmen eingespielt (`migrations/002_seed_skr03.sql`) +- das Docker-Image mit PHP-Abhängigkeiten (mPDF) gebaut + +### 4. Anwendung aufrufen + +``` +http://localhost:8080 +``` + +Login mit den in Schritt 2 gesetzten Zugangsdaten. + +### 5. Firmendaten hinterlegen + +Nach dem ersten Login unter **Einstellungen** Firmendaten, Logo und ELSTER-Steuernummer eintragen. Diese Angaben erscheinen auf Ausgangsrechnungen und im EÜR-Export. + +## Port ändern + +Der Standard-Port ist `8080`. Um ihn zu ändern, passe in `docker-compose.yml` die `ports`-Zeile an: + +```yaml +ports: + - "9090:80" # Beispiel: Port 9090 auf dem Host +``` + +## Datenpersistenz + +| Pfad | Inhalt | +|---|---| +| `./data/mariadb/` | MariaDB-Datenbankdateien | +| Docker Volume `uploads` | Hochgeladene Belege | + +Beide Pfade liegen außerhalb des Containers und bleiben bei `docker compose down` erhalten. + +## Backup + +```bash +bash scripts/backup.sh +``` + +Das Skript erstellt ein Dump der Datenbank sowie ein Archiv der Uploads im Verzeichnis `backups/`. + +## Update + +```bash +git pull +docker compose up -d --build +``` + +## GoBD-Hinweise + +- Gebuchte Sätze können nicht geändert oder gelöscht werden (MariaDB `BEFORE UPDATE/DELETE` Trigger). +- Korrekturen erfolgen ausschließlich über Stornobuchungen. +- Jeder hochgeladene Beleg erhält einen SHA-256 Hash zur Integritätsprüfung. + +## Lizenz + +Privates Projekt – keine öffentliche Lizenz.