feat: client monorepo (Flutter app) + web fallback redesign #1

Merged
linus merged 37 commits from feat/backend-phases-0-6 into main 2026-09-12 11:27:27 +00:00
Showing only changes of commit 842b3c3ef4 - Show all commits
+10 -19
View File
@@ -5,33 +5,24 @@ events (KCs), replacing the WordPress plugin "Workshop-Wahlen". See
[plan-kcAppMultiTenantPlatform.prompt.md](plan-kcAppMultiTenantPlatform.prompt.md)
for the full architecture and phased roadmap.
This repo holds the **Flutter clients**. The backend (NestJS API) moved to
its own repo: <https://git.konfi-castle.com/linus/KC-APP-Server>.
## Run with Docker
See the [KC-APP-Server README](https://git.konfi-castle.com/linus/KC-APP-Server)
for the backend/Docker setup. It expects a pre-built web bundle:
```bash
cp backend/.env.example backend/.env # fill in the secrets
# optional (push): put the Firebase service account at backend/serviceAccount.json
(cd client/app && flutter build web --release) # host build — see note below
docker compose up --build
(cd client/app && flutter build web --release)
```
`docker-compose.yml` starts PostgreSQL 16 and one `api` container (2-stage
`Dockerfile`: NestJS build → slim runtime). The container runs
`prisma migrate deploy` on start and serves the whole app — Flutter web
client + REST API — on <http://localhost:3000>. Requires Docker Compose v2.
The Flutter web bundle is built **on the host** and copied in (a Flutter
builder stage would pull a ~2.8 GB SDK image). So `flutter build web` must
run before `docker compose build`. Secrets come from `backend/.env`
(unquoted, Compose v2 strips quotes) and the service-account JSON is
bind-mounted read-only — neither is baked into the image.
By default the server's `docker-compose.yml` mounts `../KC-APP/client/app/build/web`
(sibling checkout); override with `WEB_CLIENT_BUILD_PATH` if your layout
differs.
## Structure
- `backend/` — NestJS API (Prisma/PostgreSQL, Authentik OIDC as resource
server, guest/Konfi local accounts, roles/permissions foundation, file
sharing, chat, local/cloud sync). See [backend/README.md](backend/README.md)
for setup. Also serves the web client (see below) directly, so it's the
single entry point for the web experience.
- `client/app/` — the Flutter client (single codebase; **web** target
enabled, mobile/desktop can be added later). Login (guest / local Teamer /
invite redemption), role-aware home, guest Workshop-Wahl, file list,