FamilyNido — a self-hosted PWA for a single household: shared calendar, chores, meals, school agenda, health records and a family wall. One instance per family, deployable with `docker compose` on any home server. Stack: .NET 10 (ASP.NET Core Minimal APIs) + EF Core 10 + PostgreSQL 16 on the backend, Angular 21 (standalone, signals, zoneless) + Tailwind CSS v4 on the frontend, SignalR for realtime, optional OIDC alongside local credentials, integration via a versioned `/api/v1/**` public API. See README.md for the module overview and how to deploy.
55 lines
2.8 KiB
Text
55 lines
2.8 KiB
Text
# ─── General ────────────────────────────────────────────────────────────────
|
|
FAMILYNIDO_BASE_URL=https://familia.example.com
|
|
FAMILYNIDO_TIMEZONE=Europe/Madrid
|
|
|
|
# UID/GID under which the API container will write files. Leave empty to
|
|
# keep the default in-container user (UID 100, useful with Docker named
|
|
# volumes). Set to a specific user (typically 1000:1000) when you bind-mount
|
|
# a host directory and want files to remain owned by that host user — e.g.
|
|
# /home/dan/familynido/files mapped to /app/data/files.
|
|
PUID=
|
|
PGID=
|
|
|
|
# ─── GHCR (only consumed by docker-compose.prod.yml) ────────────────────────
|
|
# GitHub user or org that owns the published images under
|
|
# ghcr.io/<GHCR_OWNER>/familynido-api and /familynido-web.
|
|
GHCR_OWNER=your-github-user
|
|
|
|
# ─── PostgreSQL ─────────────────────────────────────────────────────────────
|
|
POSTGRES_DB=familynido
|
|
POSTGRES_USER=familynido
|
|
POSTGRES_PASSWORD=change-me-please
|
|
|
|
# ─── OIDC (PocketID in prod) ────────────────────────────────────────────────
|
|
OIDC_AUTHORITY=https://pocketid.example.com
|
|
OIDC_CLIENT_ID=familynido
|
|
OIDC_CLIENT_SECRET=
|
|
OIDC_REQUIRE_HTTPS=true
|
|
|
|
# ─── Google Calendar (read-only sync) ───────────────────────────────────────
|
|
# Credentials issued by https://console.cloud.google.com/apis/credentials with
|
|
# the Calendar API enabled. The redirect URI must match exactly the entry
|
|
# registered as an "Authorized redirect URI" for the OAuth client.
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
GOOGLE_OAUTH_REDIRECT_URI=https://familia.example.com/api/calendar/google/callback
|
|
|
|
# ─── Email (SMTP) — used by the invitation flow ─────────────────────────────
|
|
# Generic SMTP relay. Works with Brevo (formerly Sendinblue), Gmail with an
|
|
# app password, mailcow, an internal MTA, etc. Leave EMAIL__ENABLED=false to
|
|
# disable email entirely; admins will still see the "copy link" fallback.
|
|
EMAIL__ENABLED=false
|
|
EMAIL__SMTPHOST=smtp-relay.example.com
|
|
EMAIL__SMTPPORT=587
|
|
EMAIL__SMTPUSERNAME=
|
|
EMAIL__SMTPPASSWORD=
|
|
EMAIL__SMTPUSESTARTTLS=true
|
|
EMAIL__FROM=FamilyNido <noreply@familia.example.com>
|
|
EMAIL__APPBASEURL=https://familia.example.com
|
|
EMAIL__INVITATIONLIFETIME=7.00:00:00
|
|
|
|
# ─── Traefik (optional — consumed by labels in docker-compose.prod.yml) ────
|
|
TRAEFIK_NETWORK=traefik
|
|
TRAEFIK_ROUTER_NAME=familynido
|
|
TRAEFIK_HOST=familia.example.com
|
|
TRAEFIK_TLS_RESOLVER=letsencrypt
|