# Mitbringsl πŸ›’ > **Local-First Einkaufslisten-App (Bring-Alternative, werbefrei & datensparsam).** Mitbringsl ist eine moderne, schnelle und werbefreie Einkaufslisten-App mit **Local-First Synchronization**. Die App funktioniert vollstΓ€ndig offline und synchronisiert Γ„nderungen automatisch, sobald eine Verbindung besteht β€” ohne Datenverlust oder Konflikte. --- ## 🌟 Highlights & Features - πŸ“± **Android App**: Kotlin 2.x, Jetpack Compose Material 3, Room, Hilt, WorkManager. - ⚑ **Local-First Sync Engine**: Hybrid Logical Clock (HLC), append-only `op_log`, Last-Write-Wins (LWW) Projektionen, Idempotente Push/Pull-Algorithmen. - πŸ” **Datenschutz & Auth**: Argon2id Passwort-Hashing, opaque Session-Tokens, OIDC-UnterstΓΌtzung (Google & eigene IdPs). - πŸš€ **Go Backend**: Stdlib `net/http` Routing (Go 1.26), PostgreSQL 16 (`pgxpool`), `pg_trgm` Fuzzy Autocomplete. - πŸ›‘οΈ **Deployment**: Multi-Stage Docker Container, Caddy Reverse Proxy mit automatischem HTTPS / Standalone & Behind-Proxy Modi. --- ## πŸ—οΈ Repository-Struktur ``` mitbringsl/ β”œβ”€β”€ backend/ # Go REST API Backend β”‚ β”œβ”€β”€ cmd/ # Server & Migrate Binaries β”‚ β”œβ”€β”€ internal/ # Auth, Sync (HLC), Store (pgx), HTTP API β”‚ β”œβ”€β”€ migrations/ # SQL Migrationen (iofs-embedded) β”‚ └── Dockerfile # Multi-Stage Build (golang:1.26 -> distroless) β”œβ”€β”€ android/ # Android Kotlin + Compose App β”‚ β”œβ”€β”€ app/src/ # Room DB, Retrofit API, WorkManager, Hilt, Compose UI β”‚ └── build.gradle.kts β”œβ”€β”€ deploy/ # Docker Compose & Caddy Setup β”‚ β”œβ”€β”€ docker-compose.yml β”‚ β”œβ”€β”€ Caddyfile / Caddyfile.behind-proxy β”‚ └── .env.example └── docs/ # Architektur- & Protokoll-Dokumentation β”œβ”€β”€ ARCHITECTURE.md # Gesamtarchitektur & Systemdesign β”œβ”€β”€ SYNC.md # Sync-Protokoll & HLC-Spezifikation └── API.md # REST API Dokumentation ``` --- ## πŸš€ Quickstart: Backend & Stack lokal starten ### 1. Backend lokal bauen & testen ```bash cd backend go build ./... go vet ./... go test ./... ``` ### 2. Stack per Docker Compose starten ```bash cd deploy cp .env.example .env # PasswΓΆrter in .env anpassen docker compose up -d --build ``` --- ## πŸ“± Android App bauen ```bash cd android ./gradlew assembleDebug ./gradlew test ``` --- ## πŸ“– Dokumentation - [ARCHITECTURE.md](docs/ARCHITECTURE.md) – Architektur & Systemdesign - [SYNC.md](docs/SYNC.md) – Synchronisationsprotokoll & HLC-Spezifikation - [API.md](docs/API.md) – REST API Endpoint-Referenz - [AGENTS.md](AGENTS.md) – Projektstand & Architekturentscheidungen fΓΌr KI-Agenten --- ## πŸ“„ Lizenz MIT License