Ambulance Devices
Evidencia zdravotníckej techniky nemocnice: micro-frontend v Stencile a API v Go, pôvodne nasadené do Kubernetes cez GitOps.

O projekte
Tímový projekt z predmetu Webové aplikácie v prostredí cloudu na FIIT STU v roku 2024. Každé zariadenie nemocničného oddelenia má registračné číslo, cenu, dátum konca záruky a vlastný prevádzkový log. Frontend je webový komponent v Stencile načítaný do spoločného portálu predmetu, backend API v Go s MongoDB generované z OpenAPI špecifikácie a oboje nasadzoval Flux CD do Kubernetes v Azure.
Dnes beží ako živé demo na domácom serveri. Má úvodnú stránku s prehľadom, stránku o projekte, angličtinu popri slovenčine, tmavý režim, bezpečnejšie API a CI, ktoré zostavuje obrazy.
Čo si môžete vyskúšať
- Prehľad počtu zariadení, celkovej hodnoty a končiacich záruk, s hodnotou podľa oddelení
- Vyhľadávanie, filtre podľa oddelenia a stavu záruky, triedenie a filtre uložené v URL
- Stav záruky na prvý pohľad: platná, končí do 90 dní alebo vypršala
- Formulár zariadenia a prevádzkový log s kontrolou v prehliadači aj v API
- Export do CSV, slovenčina a angličtina, tmavý režim a dokumentácia API v Swagger UI
Ako to funguje
- Jedna OpenAPI špecifikácia generuje kostru servera v Go aj klienta v TypeScripte; CI zlyhá, keď vygenerovaný kód nesedí
- Zmeny zariadení a logov sú jednotlivé atomické aktualizácie v MongoDB a API kontroluje vstupy a neprezrádza interné chyby
- GitHub Actions spúšťa testy v Go proti MongoDB v service kontajneri, spec a end-to-end testy frontendu, govulncheck a npm audit a nahráva obrazy do GHCR
- Docker Compose s nginx (Content-Security-Policy, obmedzenie požiadaviek), API bez root práv, štruktúrované JSON logy a nočný reset dema
Architektúra
- 1PrehliadačWebové komponenty v Stencile s Material Web
- 2Tailscale FunnelVerejné HTTPS zo sidecar kontajnera
- 3nginxServíruje zostavený frontend a presmeruje /api
- 4Go APIHandlery v Gin nad kostrou generovanou z OpenAPI špecifikácie
- 5MongoDBZariadenia s ich logmi; kontajner na reset každú noc obnoví demo
Zoznam zmien
- Kubernetes a Flux nahradil Docker Compose na domácom serveri
- Gin 1.9 na 1.12 a MongoDB 7 na 8
- Stencil 4.12 na 4.45 a Material Web 1 na 2
- Klient v axios sa zmenil na generovaný klient nad fetch
- Kedy
- 2024 – 2026
- Typ
- Tímový
- Verzie
- Stencil 4.45
- Go 1.27
- Gin 1.12
- MongoDB 8
- Technológie
- Stencil.js
- TypeScript
- Go
- Gin
- MongoDB
- OpenAPI
- Docker
- Kubernetes
- Flux
- Tailscale
- GitHub Actions

