- 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).
49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
# 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.
|