O projekte
Projekt SlovenskovKocke.sk vyvinul vo svojom voľnom čase Igor Kruták , nadšenec do digitálneho marketingu a IT.
Slovensko v Kocke .sk je sympatický projekt založený na otvorených dátach o obciach Slovenskej republiky. Nájdete tu peknú detailnú stránku plnú zaujímavých údajov a grafov o každej obci na Slovensku. Zároveň ale tieto dáta o obciach spracovávam a spočítavam do väčších územných celkov, takže tu taktiež objavíte aj pekné a obsahovo bohaté stránky o každom okrese, kraji, oblasti či regióne. Cekovo tu je pre vás pripravených viac než tri tisíc takýchto detailných stránok.
Rozsah projektu okrem detailných stránok dopĺňajú aj stovky zaujímavých rebríčkov. Môžte si zobraziť rebríček s poradím čohokoľvek vás zaujíma, či už mestá, dediny, okresy, oblasti či regóny, a sledovať ako si stoja v rebríčku zoradenom podľa počtu obyvateľov, rozlohy, priemerného veku, a desiatok ďaľších zaujímavých parametrov.
Obsiahnuté dáta pochádzajú hlavne zo Slovenského štatistického úradu, viac informácií o použitých zdrojoch nájdete na stránke Zdroje Dát.
Použité technológie
Projekt SlovenskovKocke.sk je postavený na v súčasnosti používaných moderných technológiách.
Drupal
Backend je postavený na stabilnom open source systéme Drupal. Zaujímavosťou je, že Drupal je v tomto prípade použitý len ako takzvaný headless CMS, čo znamená, že slúži len na migráciu a uloženie dát, resp. prepojenie s Gatsby JS. Nemá žiaden vplyv na frontend a ani žiadne moduly a funkcie ktoré by ovplyv ňovali čokolvek spojené s tým, ako to celé bude vyzerať.
Gatsby JS/React
Gatsby JS je framework postavený na programovacom jazyku React. Je to takzvané SSG riešenie - Static Site Generator. Zmysel takéhoto vývoja je v tom, že v konečnom dôsledku sa pri prístupe na web nepoužíva a ani neexistuje žiadna databáza ktorá by v reálnom čase niečo spracovávala a generovala. Gatsby totiž v rámci buildu nasosá všetky dáta z Drupalu do svojej databáze GraphQL, a následne naprogramované skripty/komponenty všetko spracujú a vygenerujú a uložia na server všetky stránky webu ako statické HTML stránky. Takéto stránky, ktoré ďalej už s nikým-ničím nekomunikujú a nemenia sa, môže prehliadač zacachovať, a ich načítanie, zvlášť opakované, je potom až neuveriteľne rýchle.
Google Spreadsheets ekosystém (výhľadovo nahradené Big Query)
Všetky tie dáta ktoré tu zobrazujeme, sú v nejakom základnom stave zo štatistického úradu, čo znamená že sú v množstve rôznych tabuliek (počet obyvateľov, rozloha, demografia, turizmus, atď), a v tých tabuľkách sú zoradené v riadkoch s ID obce, či s ID iného územného celku.
Prvá úloha teda spočívala vytiahnuť si z týchto datasetov len informácie ktoré chcem ďalej zobrazovať, resp. ich ďalej spracovať (napr. vypočítať hustotu obyvateľstva delením rozlohy počtom obyvateľov, a podobne).
Tieto dáta, či datasety s informáciami o obciach mám vložené do Google Spreadsheets. Na tom mám postavený celý ekosystém súborov-spreadsheetov, záložiek a ich vzájomného prepojenia a spracovania dát., Tie nakoniec načítam do finálneho sheetu z ktorého sa dáta potom exportujú do Drupalu. To isté robím pre územné celky ako okres, kraj, oblasť či región. Do týchto celkov sa napočítajú dáta z obcí ktoré na základe priradeného ID do nich patria. Je tam veľa kontingenčných tabuliek, filtrov či iných funkcií, a následne importov cez importQuery týchto dát do finálnych tabuliek týchto územných celkov, kde sa ďalej spracovávajú do finálnej záložky pre export. Finálne exporty sú: obce, okresy, kraje, oblasti, regióny a republika.
Teoreticky by mohlo byť zjednodušenie stiahnuť dáta zo štatistického úradu nielen pre obce, ale aj pre okresy či kraje, ale osobne mi to prišlo neflexibilnejšie a nesystémovejšie riešenie - kedže všetky tie dáta mám na úrovni obcí, a zároveň mám relácie do ktorého okresu, kraja, oblasti či regiónu daná obec patrí, tak si ich podľa toho proste dopočítam tak ako potrebujem.
Výhľadovo by som chcel nahradiť celý tento ekosystém využitím Google databáze Big Query, s ktorou sa chcem naučiť viac pracovať. Zmysel toho prechodu vnímam vo väčšej flexibilite, kde nebudem potrebovať žiadne interné exporty ale cez SQL si do exportov pripravim presne také dáta, aké budem potrebovať.
Ďalšie technológie či programy použité pri vývoji, o niektorých z nich sa ešte časom rozpíšem:
úvodný navrh wireframov: Balsamiq, verzovací systém Git, balíčkovací manažér Yarn, vývoj - Docker, terminál - iTerm2 + zsh, vývojové prostredie Visual Studio Code, css/scss - Bootstrap.
Výhľad:
- na projekt by som chcel pridať množstvo dynamických máp a ďalších vizualizácii uložených dát.
- anglickú verziu
- súhrnné stránky: ekonomika, demografia, obyvateľstvo, turizmus
- možnosť porovnávať jednotlivé obce, okresy, kraje medzi sebou
- zobrazovať - počítať podľa mapy vzialenosti medzi obcami, vzdialenosti od zaujímavých bodov
- pridávať ďalšie dáta o obciach - o cestnej sieti, vodných tokoch, železniciach..., ekonomické informácie, a vytiahnuť zaujímave vzťahy medzi nimi