mitbringsl/README.md
Tronax 2899eb205b
Backend Phase A: foundation, migrations, Docker setup
- Go backend skeleton: config (caarlos0/env), slog JSON logging,
  pgxpool store, HTTP server with graceful shutdown.
- httpapi: render helpers, Problem errors, middleware chain
  (requestID / logging / recover / CORS), /healthz and /readyz.
- Migrations: full initial schema (users, sessions, lists,
  list_members, items, op_log SOURCE OF TRUTH, item_names) +
  golang-migrate runner binary using source/iofs (embedded).
- Docker: multi-stage Dockerfile (Go 1.26 -> distroless nonroot),
  builds both server and migrate binaries.
- deploy: docker-compose (caddy + backend + migrate + postgres:16),
  Caddyfile (auto-HTTPS), .env.example, pg extensions init script.
- AGENTS.md: project context + roadmap for AI agents.

Verified: image builds, both binaries run in container (smoke test).
2026-08-05 15:14:37 +02:00

49 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mitbringsl
Eine **Local-First Einkaufslisten-App** eine schlanke, werbefreie Bring-Alternative.
Android-App (Kotlin + Jetpack Compose) mit eigenem **Go-Backend** (PostgreSQL, Docker),
OIDC-Login (Google + Generic) und verlustfreiem Sync.
> Status: **Work in Progress / MVP**.
## Was das Projekt kann (Ziel)
- 📝 Einkaufslisten anlegen, Items verwalten, an-/abhaken
- 🔄 **Local-First**: voll funktionsfähig offline, automatischer Sync ohne Datenverluste
(Append-only Operations-Log + Hybrid Logical Clocks + Tombstones)
- 👤 Anmeldung mit **eigenen Usern** (E-Mail/Passwort, Argon2id) **oder** **OIDC**
(Google + beliebiger Generic-OIDC-Provider wie Keycloak/Authentik)
- 🔍 **Autocomplete** beim Tippen Vorschläge aus den aggregierten Item-Namen aller User
- 🚫 **Keine Werbung** cleanes Material-3-Design
- 🐳 **Self-hosted** als Docker-Container, automatisches HTTPS via Caddy
## Repository-Aufbau
```
mitbringsl/
├── backend/ # Go-API (net/http, pgx, sqlc, golang-migrate, go-oidc)
├── android/ # Android-App (Kotlin, Jetpack Compose, Room, Hilt, WorkManager)
├── deploy/ # docker-compose.yml, Caddyfile, .env.example
└── docs/ # Architektur-, Sync- und API-Doku
```
## Schnellstart
### Backend (Docker)
```bash
cd deploy
cp .env.example .env # Werte anpassen (v.a. Secrets/URLs)
docker compose up -d --build
# API unter https://<deine-domain> (oder http://localhost:8080 ohne Caddy)
```
### App bauen
Siehe [`android/README.md`](android/README.md) (folgt).
Detaillierte Doku:
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) Aufbau, Auth-Flows
- [`docs/SYNC.md`](docs/SYNC.md) Sync-Modell & Konfliktlösung
- [`docs/API.md`](docs/API.md) REST-Endpoints
## Lizenz
Privatprojekt alle Rechte vorbehalten.