combo-raport-app — Wiki
combo-raport-app — Wiki
Interaktywna aplikacja raportowa do wizualizacji danych sprzedażowych i wolumenowych z systemu GoPos. Dane pobierane przez API, raporty wysyłane automatycznie emailem.
Interaktywna aplikacja raportowa do wizualizacji miesięcznych danych sprzedażowych i wolumenowych. Dane ładowane dynamicznie z plików JSON według wybranej listy i miesiąca.
Spis treści
| Strona | Opis |
|---|---|
| Docker | Uruchamianie kontenera, komendy, profile dev/prod |
| Struktura projektu | Drzewo katalogów, stack technologiczny, skrypty |
| Dane raportowe | Format JSON, listy, tabele, mapowanie ID komórek |
| Komponenty | Architektura UI, ThemeProvider, tabele, dark mode |
| Backup | Automatyczny backup danych na Google Drive, setup rclone, cron, disaster recovery |
| Deploy | Deploy na produkcję (Mikrus), sync danych dev→prod, secrets, skrypt deploy-prod.sh |
Szybki start
# Tryb developerski (hot-reload)
docker compose --profile dev up
# → http://localhost:5173
# Produkcja (nginx)
docker compose --profile prod up --build
# → http://localhost:4173
Stack
| Warstwa | Technologia |
|---|---|
| UI | React 19, Tailwind CSS 4, shadcn/ui, Base UI |
| Tabele | TanStack Table v8 |
| Build | Vite 7, TypeScript 5.9 |
| Kontener | Docker multi-stage, nginx 1.27-alpine |
Schemat środowiska produkcyjnego
VPS home.pl ·
212.132.103.157· Debian 13 trixie · 4 vCPU / 7.7 GiB RAM / 237 GiB SSD
Edytowalny diagram drawio: plikenv-prod.drawiow sekcji Attachments pod tą stroną — pobierz, otwórz na https://app.diagrams.net lub w VS Code (Draw.io Integration), zedytuj i wgraj z powrotem.
Topologia (widok logiczny)
Internet (HTTPS)
│
▼
┌──────────────────────────────────────────┐
│ nginx (host) — ECDSA + certbot │
│ arcane.t-pizza.pl → 127.0.0.1:3552 │
│ combo.t-pizza.pl → 127.0.0.1:4173 │
│ id.t-pizza.pl → 127.0.0.1:9000 │
│ wiki.tepizza.pl → 127.0.0.1:6875 │
└──────────────────────────────────────────┘
│
╔════════════════════════════╪════════════════════════════╗
║ Docker network: web (external, bridge) ║
║ ║
║ ┌─────────────┐ ┌──────────────┐ ┌────────────────┐ ║
║ │ Arcane │ │ combo_prod │ │ Authentik │ ║
║ │ v1.19.5 │ │ (React+nginx)│ │ server+worker │ ║
║ │ :3552 │ │ :4173 │ │ +pg+redis :9000│ ║
║ └──────┬──────┘ └──────────────┘ └────────┬───────┘ ║
║ │ OIDC (issuer/token/userinfo) │ ║
║ └─────────────────────────────────── ┘ ║
║ ║
║ ┌─────────────────────┐ ┌────────────────────────┐ ║
║ │ BookStack + MariaDB │ │ Backup cron 03:30 │ ║
║ │ :6875 │ │ → Arcane Volume API │ ║
║ │ wiki.tepizza.pl │ │ → /opt/backups/arcane │ ║
║ └─────────────────────┘ └────────────────────────┘ ║
╚══════════════════════════════════════════════════════════╝
Stacki Docker
/opt/docker/arcane/compose.yaml
arcane
127.0.0.1:3552
arcane.t-pizza.pl
Arcane v1.19.5 — OIDC w DB settings
/root/combo-raport-app/docker-compose.yml
combo_prod
127.0.0.1:4173
combo.t-pizza.pl
React 19 + nginx-alpine, volume combo_data
/opt/docker/authentik/compose.yaml
authentik-{server,worker,postgresql,redis}
127.0.0.1:9000
id.t-pizza.pl
Authentik 2026.2.3, SMTP via serwer2104579.home.pl:587
/app/data/projects/bookstack/compose.yaml (Arcane-managed)
bookstack, bookstack-db
127.0.0.1:6875
wiki.tepizza.pl
BookStack 26.3.5 + MariaDB 11, client_max_body_size 50M
SSO / OIDC
id.t-pizza.pl) — app arcane (pk=1) prod, arcane-dev (pk=3) lokalny
Relying party: Arcane v1.19.5 — konfiguracja w DB (nie env), zmiany bez recreate kontenera
Redirect URI: https://arcane.t-pizza.pl/auth/oidc/callback (uwaga: frontend route, nie /api/...)
Admin claim: groups → grupa arcane-admin (członkowie: akadmin, admin-combo, kamil.lendlewicz, matzxp84)
Break-glass: lokalny login Arcane pozostaje włączony (authLocalEnabled=true, oidcAutoRedirectToProvider=false)
Backup
/opt/docker/arcane/backup-cron.sh — iteruje po wszystkich wolumenach Docker via Arcane Volume Backup API
Cron: 30 3 * * * (codziennie 03:30, przed logrotate)
Log: /var/log/arcane-backup.log
Lokalizacja: /opt/backups/arcane/ (bind-mount jako /backups w kontenerze Arcane), rotacja 10 kopii na wolumen
Off-site: rsync -avz root@212.132.103.157:/opt/backups/arcane/ ~/backups/vps-home-pl/
Backupowane wolumeny: arcane_arcane-data, combo_data, authentik_authentik-{postgres,redis,media,templates,certs}.
Jak zedytować ten schemat
env-prod.drawio z sekcji Attachments, otwórz w https://app.diagrams.net, zapisz lokalnie, wgraj ponownie jako attachment (nadpisze stary).
Po zmianie infrastruktury zaktualizuj tabelę Stacki Docker oraz topologię ASCII.