Add additive schema for demo (user.display_name, innovation.tags, FLEXIBLE free-form fields) and a fully synthetic seed with organizations, personas, problems, submissions, innovations, knowledge items, grant calls, ideas and tester feedback. Verified on SurrealDB 3.2.4: migrations apply cleanly and are idempotent.
TarninaHub
Wersja: 0.0.1
Platforma Małopolskiego Hubu Innowacji Społecznych (MVP hackathonu).
- backend/ — aplikacja backendowa w C# (ASP.NET Core,
TarninaHub). - client/ — aplikacja frontendowa Vue 3 + TypeScript (Vite).
- scripts/ — skrypty budujące całość.
TarninaHub.slnx— solution .NET.Dockerfile+docker-compose.yaml— uruchomienie kontenerowe.
Wymagania
-
.NET SDK 10+
-
Node.js 22+ (npm)
-
PowerShell Core 7+ (
pwsh) — wymagany do uruchomieniascripts/*.ps1.Windows nie kojarzy domyślnie plików
.ps1, dlatego skrypty uruchamiaj przezpwsh(np.pwsh ./scripts/docker-push.ps1), a nie przez dwuklik / samo./scripts/docker-push.ps1. Instalacja: https://aka.ms/powershell
Praca lokalna
Backend (dev) nasłuchuje na https://localhost:7080.
# terminal 1 — backend
dotnet run --project backend
# terminal 2 — client (Vite, proxy /api -> http://localhost:5078)
npm --prefix client install
npm --prefix client run dev
Skrypty
npm --prefix client run dev # uruchamia Vite (dev server)
npm --prefix client run build # buduje aplikację Vite do client/dist
npm --prefix client run copy # kopiuje client/dist -> backend/wwwroot
node scripts/build.mjs # buduje całość (client + copy + backend)
Docker
Szablon pobiera gotowy obraz z rejestru Gitea (pełna ścieżka), bez lokalnego buildowania:
cp docker-compose.yaml.example docker-compose.yaml
docker compose pull
docker compose up -d
- Aplikacja: http://localhost:8075
- Dane:
./data(bind mount, trwałe — SurrealDB embedded RocksDB) - Obraz:
git.rtynski.pl/rtynski/hy2026:latest
Port hosta można wskazać zmienną TARNINAHUB_PORT (domyślnie 8075), a wersję
obrazu zmienną APP_VERSION (domyślnie latest). Plik
docker-compose.yaml.example jest szablonem; docker-compose.yaml możesz
dostosować lokalnie.
Publikacja obrazu do Gitea
Token dostępu utworzysz w Gitea:
- https://git.rtynski.pl/user/settings/applications
- Generate New Token → zakres
write:package(wystarcza do pushu obrazu).
Wymagany PowerShell Core 7+ (pwsh). Windows nie uruchamia domyślnie
plików .ps1, więc skrypt wywołaj jawnie przez pwsh:
$env:GITEA_USER = "rtynski"; $env:GITEA_TOKEN = "<token>"
pwsh ./scripts/docker-push.ps1
Skrypt najpierw sprawdza połączenie z demonem Docker i rejestrem, czyta wersję z
backend/TarninaHub.csproj. Jeśli dana wersja jest już wypchnięta do rejestru,
kończy pracę z czerwonym komunikatem; w przeciwnym razie buduje frontend,
kopiuje go do backend/wwwroot, buduje backend, buduje obraz Docker i wypycha go
do git.rtynski.pl/rtynski/hy2026 jako <wersja> oraz latest. Nadpisanie
sprawdzenia: -Force.
CI/CD
Pipeline działa w Gitea Actions (.gitea/workflows/):
Uwaga: workflow są zakomentowane w całości — do repozytorium nie jest podpięty runner Gitea. Odkomentuj po zarejestrowaniu runera (Settings → Actions → Runners).
ci.yml— napush/PR domain: build backendu (.NET 10),dotnet format --verify-no-changesoraz build klienta (Node 22,vue-tsc+ bundle).cd.yml— namain/tagv*: build obrazu i push dogit.rtynski.pl/rtynski/hy2026(<wersja>+latest); deploy demo opcjonalnie przez sekrety CI.
Sekrety CI: GITEA_TOKEN (write:package), opcjonalnie DEPLOY_HOST/DEPLOY_USER/DEPLOY_SSH_KEY. Klucz LLM__ApiKey przekazujemy wyłącznie na runtime — nigdy do repo ani warstw obrazu.
Środowiska i konfiguracja
- dev —
appsettings.Development.json, dane wbackend/data. - demo — obraz z rejestru,
docker-compose.yaml.example, portTARNINAHUB_PORT(8075), wersjaAPP_VERSION. - staging (opcjonalne) — kandydat wydania przed demo.
Konfiguracja przez zmienne środowiskowe (SurrealDb__*, LLM__ApiKey, OTEL_*); szablon: .env.example.
Observability
- Healthcheck:
GET /api/health(używany też przez Docker healthcheck). - Logi strukturalne (JSON) do
stdout/stderr, z correlation ID. - Docelowo:
/metrics(Prometheus) i OpenTelemetry (traces).
Struktura
TarninaHub/
├─ backend/ # ASP.NET Core Web API + wwwroot (build z client)
├─ client/ # Vue 3 + TS + Vite
├─ scripts/
│ ├─ build.mjs # build całości
│ └─ copy-client.mjs # client/dist -> backend/wwwroot
├─ Dockerfile # multi-stage: client + backend
├─ docker-compose.yaml # uruchomienie (bind ./data)
├─ docker-compose.yaml.example
├─ TarninaHub.slnx
└─ README.md