PrácaITM2026
Institute of Lung Diseases
Prepis webu verejného zdravotníckeho inštitútu od nuly: natvrdo zapísané stránky a mŕtvy layout z roku 2019 nahradil Laravel portál, ktorý zamestnanci naozaj vedia spravovať.
- Rola
- Full-stack
- Stav
- Prebieha
- Jazyky
- AZ · EN
01Prehľad
Vedecko-výskumný inštitút pľúcnych chorôb je verejná právnická osoba v Baku s koreňmi siahajúcimi k protituberkulóznemu inštitútu z roku 1944. Jeho web etacxi.az je miesto, kde občania hľadajú štruktúru inštitútu, jeho vedenie, správy a praktické informácie pred návštevou.
Web, ktorý dnes stojí, vznikol v roku 2019 a odvtedy sa nepohol. Prepisujem ho od nuly: tá istá inštitúcia, tá istá verejná úloha, ale platforma, ktorú zamestnanci udržia aktuálnu bez vývojára.
02Problém
Sekcia správ nie je sekcia. Každá správa má vlastnú natvrdo zapísanú cestu - /xeber1, /xeber2, /xeber3 - takže čokoľvek zverejniť znamená upraviť kód a nasadiť. Najnovšia položka je z roku 2023, čo sa stáva, keď je publikovanie úlohou vývojára.
Odkazy v pätičke sú zástupné texty, ktoré doteraz hlásia "link 1" až "link 6" a nevedú nikam. Stránka sa deklaruje ako anglická, hoci podáva azerbajdžančinu. Beží po nezabezpečenom HTTP.
Obsah sedí v šablónach namiesto v databáze, takže sa nedá vypísať, filtrovať, vyhľadávať ani zobraziť vo viacerých jazykoch bez duplikovania šablóny.
03Architektúra
Obsah sa sťahuje zo šablón do databázy. Všetko, čo návštevník číta, sa stáva záznamom, ktorý vlastní redaktor, a verejný web je tenká vykresľovacia vrstva nad ním.
Návštevníci
Občania
Služby, kontakty, vedenie, správy
Médiá a partneri
Oznamy, galéria, medzinárodné vzťahy
Verejný web
Blade šablóny
Responzívny layout, postavený nanovo
Jazykové cesty
/az a /en z jedného obsahového modelu
Aplikácia
Laravel kontroléry
Stránky, správy, galéria, kontaktný formulár
Administrácia
Prihlásený CRUD pre každý typ obsahu
Validácia
Form requesty, CSRF, kontaktný formulár chránený pred spamom
Dáta
MySQL
Stránky, správy, zamestnanci, galéria, preklady
Úložisko médií
Nahraté obrázky a dokumenty
04Komponenty
Obsahový model
Zo stránok sa stávajú záznamy
- Statické stránky - všeobecné informácie, vedenie, štruktúra, medzinárodné vzťahy - sa menia na editovateľné záznamy namiesto šablón.
- Záznam o vedení nesie fotku, funkciu a životopis, takže zmena riaditeľa je formulár, nie commit.
- Každé textové pole je pre daný jazyk, takže azerbajdžančina a angličtina sú ten istý záznam, nie dve kópie stránky.
Laravel · MySQL
Správy a oznamy
Náhrada natvrdo zapísaných ciest
- Jedna tabuľka správ s dátumom zverejnenia, slugom a stavom, vypísaná so stránkovaním a čitateľná na stabilnej URL.
- Koncepty zostávajú neviditeľné až do zverejnenia, takže redaktor si môže správu pripraviť dopredu.
Administrácia
Kto web udržiava pri živote
- Prihlásenie oddelené podľa rolí: redaktori zverejňujú správy a galériu, administrátor spravuje stránky, zamestnancov a používateľov.
- Nahraté obrázky sa zmenšujú a ukladajú mimo kódu, takže médiá nikdy nie sú súčasťou nasadenia.
Služby pre občanov
To, prečo ľudia naozaj prídu
- Praktické stránky - povinné zdravotné poistenie, kontakty, adresa a telefónne čísla - dostávajú vlastnú štruktúru namiesto toho, aby boli pochované v texte.
- Kontaktný formulár sa validuje na serveri a má obmedzenie frekvencie; správy sa ukladajú aj odosielajú mailom.
Frontend
Layout, ktorý prežije telefón
- Ručne písané HTML, CSS a JavaScript, postavené responzívne nanovo namiesto záplat na starom markupe z čias jQuery.
- Externé vloženia, ktoré starý web načítaval na každej stránke, sú preč; galéria a video sekcie sa obsluhujú lokálne.
HTML · CSS · JavaScript
05Ako to funguje
- 1
Redaktor píše
Zamestnanec vytvorí správu alebo upraví stránku v administrácii, v oboch jazykoch.
- 2
Validovať a uložiť
Form request skontroluje vstup; text ide do MySQL, obrázky do úložiska médií.
- 3
Zverejniť
Nastavenie stavu na zverejnené okamžite zaradí záznam do verejných výpisov.
- 4
Požiadavka
Návštevník príde na jazykovú cestu; kontrolér načíta záznam pre daný jazyk.
- 5
Vykreslenie
Blade vykreslí stránku v layoute inštitútu, responzívne až po šírku telefónu.
06Návrhové rozhodnutia
Prepis namiesto nového vzhľadu
Problémom nie je, ako web z roku 2019 vyzerá. Problémom je, že obsah žije v kóde - nový náter CSS by nechal inštitút rovnako neschopný publikovať ako dnes.
Laravel pre verejnú inštitúciu
Dlhodobo udržiavateľný PHP stack, ktorý si vedia ľudia inštitútu prevziať a prevádzkovať, s už vyriešenou autentifikáciou, validáciou, migráciami a administračnou vrstvou.
Dvojjazyčnosť dátami, nie duplikovaním
Preklady sú stĺpce záznamu, nie druhá kópia webu. Práve to bráni azerbajdžanskej a anglickej verzii rozísť sa tak, ako sa rozišla tá stará.
HTTPS a poriadne nastavenie domény
Verejná zdravotnícka inštitúcia, ktorá pýta od občanov kontaktné údaje po nezabezpečenom HTTP, je neprijateľná; TLS je súčasťou prepisu, nie neskoršou úlohou.
07Technológie
- Backend
- PHPLaravelMySQL
- Frontend
- HTMLCSSJavaScriptBlade
- Prevádzka
- NginxGit
08Ďalšie kroky
- Migrovať existujúce stránky, archív správ a galériu do nového obsahového modelu.
- Dokončiť anglickú jazykovú verziu, aby oba jazyky vyšli naraz.
- Prejsť prístupnosť - verejný zdravotnícky web musí fungovať pre ľudí, ktorí s ním najmenej vládzu bojovať.
Ďalšia prípadová štúdia
EduVision
Adaptívny inteligentný tútorský systém s neuro-symbolickou architektúrou.