Skip to main content

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: plik env-prod.drawio w 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) — 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

      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 /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

        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.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.