Preskočiť na obsah
Ákos Kappel
Jazyk: sk
Téma
Svetlé
Tmavé

Ambulance Devices

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

Úvodná stránka Ambulance Devices s počtom zariadení, celkovou hodnotou a hodnotou podľa oddelení

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

  1. 1PrehliadačWebové komponenty v Stencile s Material Web
  2. 2Tailscale FunnelVerejné HTTPS zo sidecar kontajnera
  3. 3nginxServíruje zostavený frontend a presmeruje /api
  4. 4Go APIHandlery v Gin nad kostrou generovanou z OpenAPI špecifikácie
  5. 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
Zoznam zariadení filtrovaný na záruky končiace do 90 dní, zoradený podľa konca záruky
Zoznam zariadení s filtrom na končiace záruky; filtre zostávajú v URL.
Stránka zariadenia magnetickej rezonancie v tmavom režime s formulárom a prevádzkovým logom
Stránka zariadenia v tmavom režime, s formulárom a prevádzkovým logom.

1 z 2

Zoznam zariadení filtrovaný na záruky končiace do 90 dní, zoradený podľa konca záruky

Zoznam zariadení s filtrom na končiace záruky; filtre zostávajú v URL.