# Steuerkram Self-hosted Buchhaltungs- und Steueranwendung für deutsche Freiberufler und Kleinunternehmer. Entwickelt als datensouveräne Alternative zu SaaS-Diensten. ## 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 ![PHP](https://img.shields.io/badge/PHP-777BB4?logo=php&logoColor=white) ![HTML](https://img.shields.io/badge/HTML-E34F26?logo=html5&logoColor=white) ![CSS](https://img.shields.io/badge/CSS-1572B6?logo=css3&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black) | 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 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) Dieses Projekt steht unter der MIT-Lizenz – siehe [LICENSE.md](LICENSE.md) für Details.