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
| Compose | Kontener | Port (host) | Domena | Notatki |
|---|---|---|---|---|
/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
- Provider: Authentik (
id.t-pizza.pl) — apparcane(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→ grupaarcane-admin(członkowie:akadmin,admin-combo,kamil.lendlewicz,matzxp84) - Break-glass: lokalny login Arcane pozostaje włączony (
authLocalEnabled=true,oidcAutoRedirectToProvider=false)
Backup
- Skrypt:
/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/backupsw 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
- Otwórz tę stronę w trybie edycji (BookStack → Edit).
- Tekst / tabele — wszystko powyżej jest zwykłym markdown/HTML, edytuj bezpośrednio w WYSIWYG.
- Diagram graficzny — pobierz
env-prod.drawioz 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.