Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nebenkostenabrechnung

Web-App zur automatisierten Erstellung von Nebenkostenabrechnungen für zwei Immobilien:

  • Objekt 1 – verbrauchsbasierte Wasserabrechnung über Zählerstände
  • Objekt 2 – flächenbasierte Abrechnung + Techem-Datenaufbereitung (Heizkosten separat)

Stack

  • Backend: Python 3.12+, FastAPI, SQLAlchemy 2.0, Alembic, Pydantic v2
  • Datenbank: PostgreSQL 16 (Docker Compose)
  • Frontend: React + Vite + TypeScript
  • PDF: WeasyPrint (Phase 5)

Projektstruktur

docker-compose.yml     # PostgreSQL
backend/               # FastAPI-App (Models, Services, API, Alembic, Tests)
frontend/              # React-SPA (Phase 4)

Schnellstart (Backend)

# 1. Datenbank starten
docker compose up -d db

# 2. Umgebung vorbereiten (im Ordner backend/)
cd backend
py -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"

# 3. Konfiguration
Copy-Item ..\.env.example .env        # ggf. DSN anpassen

# 4. Migrationen anwenden
alembic upgrade head

# 5. Seed-Daten laden (Objekte, Kostenarten, Umlageschlüssel, Mieter)
python -m seed

# 6. API starten
uvicorn app.main:app --reload

API-Doku: http://localhost:8000/docs

Zwei getrennte Datenbanken

Das Backend liest die Datenbank über die Umgebungsvariable DATABASE_URL (Startzeit). Es gibt zwei lokale SQLite-Datenbanken im Ordner backend/:

Datei Zweck Bearbeitung
real.db Echte Nutzerdaten (Objekte, Mieter, Rechnungen, Zähler) ❌ Wird nicht von Entwicklung/Tests geändert
dev.db Test-/Seed-Daten für Feature-Entwicklung ✅ Frei veränderbar, wird vom Assistenten für Tests genutzt

Beide .db-Dateien sind in .gitignore ausgenommen (vertrauliche Daten).

Starten

# Echte Daten (real.db) – zum Pflegen der echten Daten
.\backend\run-real.ps1

# Testdaten (dev.db) – für Entwicklung/Tests
.\backend\run-dev.ps1

Manuell äquivalent:

$env:DATABASE_URL = "sqlite:///c:/Users/tfran/Projects/Abrechnung/backend/real.db"  # oder dev.db
python -m uvicorn app.main:app --app-dir .\backend --port 8000

Die echte Datenbank real.db enthält nur das Schema (Migrationen bis head), noch keine Daten – diese trägst du über die UI ein.

Tests

cd backend
pytest

Die Tests laufen ohne PostgreSQL (SQLite in-memory für Modell-/Engine-Tests).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages