Preskoči na sadržaj
← Natrag na Blog

Inženjerstvo

Ady Endre: CMS izgrađen da nas nadživi

Najstarije mađarsko kulturno društvo u Zagrebu trebalo je svoj arhiv star 94 godine na internetu, na tri jezika — i sustav koji njihovo volontersko osoblje može voditi bez nas. Ovo je naš jedini stvarni klijentski projekt, i tri tehničke odluke koje su najviše značile.

Kiran RamagiriOsnivač
7 min čitanja
adyendre.hr
Ady Endre website homepage, shown on desktop

Svaka druga objava u ovom dnevniku govori o nečemu što smo izgradili za sebe — konceptu, demu, načinu da pokažemo što je moguće bez ikoga kome bismo odgovarali osim vlastite prosudbe. Ady Endre nije to. To je stvarni klijent: najstarije i najveće mađarsko kulturno društvo u Zagrebu, osnovano 1932., devet aktivnih sekcija, i volontersko osoblje kojem je trebala web stranica koja će i dalje biti njihova dugo nakon što mi prestanemo biti u prostoriji.

To mijenja brief na način koji vrijedi iskreno priznati. Konceptualna izvedba odgovara ukusu. Klijentski projekt s 94-godišnjom institucijom iza sebe odgovara nečemu težem: hoće li ovo i dalje ispravno raditi za pet godina, pod vodstvom ljudi koji nisu napisali nijedan redak koda?

Stvarno ograničenje nije bio dizajn

Dizajnerski problem bio je stvaran — topla, urednička, papirnato-tintasta estetika s motivom otrgnutog lista kalendara nadahnutog mađarskom narodnom umjetnošću, izgrađena u Framer Motionu tako da prijelazi između stranica djeluju ručno izrađeno, ne predloškom. Ali to nije bio teži dio, i precjenjivao bih projekt kad bih tvrdio suprotno.

Teži dio bio je taj što institucijsko pamćenje društva — priča o osnutku iz 1932., povijest djelovanja devet sekcija, arhiv vijesti koji seže godinama unatrag — nikad nije imao pravi dom, a tko god bi sljedeći vodio stranicu morao bi biti programer samo da objavi vijest ili doda člana uprave. Lijepa stranica koju bismo mogli održavati samo mi riješila bi pogrešan problem.

Tri tehničke odluke, i zašto je svaka bila bitna

Odabrali smo Vite umjesto Next.js — namjerno, ne zadano. Ovo nije SEO-kritičan tok konverzije gdje renderiranje na poslužitelju opravdava svoju složenost. Ovo je urednička, animacijama bogata stranica gdje javne stranice i admin CMS dijele jednu bazu koda, a Viteova brzina razvoja ovdje je bila važnija od strojarije koju ovaj projekt nikad ne bi iskoristio. Posezanje za Next.js na svakom projektu samo zato što je zadani izbor upravo je ona vrsta odluke koja djeluje sigurno, a nije — pravi alat ovisi o tome što stranica zapravo treba raditi.

Izgradili smo pipeline za automatski prijevod, s predmemoriranjem i prilagođenim rukovanjem, ne dodatak. Arhiv vijesti izvorno je bio samo na hrvatskom. Prenijeti ga automatski na mađarski i engleski lakih je 80% problema; teških 20% je osigurati da pipeline nikad ne izobliči ime samog društva, nazive njegovih sekcija, ili termine specifične za organizaciju — upravo riječi koje generički sloj prijevoda najčešće krivo prevede, i riječi koje si kulturno društvo najmanje može priuštiti vidjeti krivo prevedene na vlastitoj stranici.

Koristili smo Supabase s row-level security po ulogama, ne zajedničkom admin prijavom. Vijesti, sekcije djelovanja, članovi uprave, događaji i dokumenti trebali su stvarnu relacijsku strukturu — i stvarne granice. Volonterski urednik koji upravlja jednom sekcijom ne bi trebao moći dirati, ili čak vidjeti put do kvarenja, bilo čega izvan svoje uloge. To nije značajka koju dodate kasnije; mora biti stvarni oblik baze podataka od samog početka.

Što je gotovo pošlo po zlu, tiho

Društvo radi na bazi podataka besplatnog tarifnog plana, što je ispravna odluka za proračun neprofitne organizacije i pogrešna odluka ako nitko ne uzme u obzir što besplatni planovi zapravo rade: uspavaju se. Posjetitelj koji naiđe na hladnu bazu podataka doživljava kašnjenje od nekoliko sekundi na onome što bi trebalo biti trenutno učitavanje stranice — a za instituciju čija je cijela poruka "pronađite ovdje svoju zajednicu", taj prvi dojam znači više nego gotovo bilo gdje drugdje. Dodali smo mali planirani zadatak koji tjedno pinga bazu podataka, dovoljno često da je spriječi da se potpuno ohladi. Nitko nikad neće primijetiti ovu odluku. To je upravo poanta.

Zašto je ovaj projekt djelovao drugačije

Kod svakog drugog projekta u ovom dnevniku, svaku smo odluku donosili sami. Ovdje je svaka odluka morala preživjeti kontakt s ljudima koji nisu programeri, ne čitaju dokumentaciju, i volontiraju svoje vrijeme da bi održali zajednicu staru 94 godine. Mjera uspjeha nije bila "izgleda li ovo impresivno" — bila je "može li netko tko nikad prije nije dotaknuo CMS objaviti idućih mjesec dana vijest bez da nas zove".

To je drugačija vrsta teškog od svega što od nas traži konceptualna izvedba, i to je vrsta projekta kakvu želimo više.

Podijeli
Ady Endre

Projekt iza ove objave

Ady Endre

Cultural Society Website & CMS

Pitanja koja zaslužuju izravan odgovor

Zašto ste odabrali Vite umjesto Next.js za klijentsku web stranicu u 2026.?
Jer strojarija Next.jsa za renderiranje na poslužitelju rješava probleme koje ovaj projekt nije imao. Nije riječ o SEO-kritičnom e-trgovačkom toku — riječ je o uredničkoj, animacijama bogatoj stranici gdje javne stranice i admin CMS dijele jednu bazu koda, a Viteova brzina razvoja ovdje je bila važnija nego što bi ikad bilo renderiranje na poslužitelju. Posezanje za istim stackom na svakom projektu bez obzira na stvarne potrebe upravo je način na koji završite s pogrešnim alatom koji je slučajno popularan.
Kako spriječiti da pipeline za automatski prijevod izobliči ime ili terminologiju organizacije?
Predmemoriranjem i prilagođenim rukovanjem izgrađenim posebno za vokabular te organizacije — ne generičkim dodatkom za prijevod prepuštenim nagađanju. Vlastito ime društva, nazivi njegovih sekcija i njegova specifična terminologija obrađuju se eksplicitno umjesto da prolaze kroz isti generički prolaz kao obični tekst, jer su to upravo riječi koje si kulturna institucija najmanje može priuštiti vidjeti krivo prevedene na vlastitoj stranici.
Zašto CMS male neprofitne organizacije treba row-level security umjesto jedne zajedničke admin prijave?
Jer zajednička prijava znači da svaki volonterski urednik može vidjeti i dirati sve, bilo da je to njegovo za upravljati ili ne — a s devet aktivnih sekcija i rotirajućim volonterskim osobljem, to je stvaran rizik, ne teoretski. Row-level security izravno u bazi podataka provodi tko što može dirati, tako da urednik koji upravlja jednom sekcijom doista ne može doseći, niti slučajno pokvariti, sadržaj koji pripada drugoj.

Dostupno i na English · Magyar

Kiran Ramagiri

Osnivač

Gradi Kyro Studio proizvode od početka do kraja — dizajn, inženjering i automatizaciju u pozadini. Prije toga osnovao BW International Recruitment i RS Ventures, grupu od sedam cloud kitchen brendova.

Poveži se na LinkedInu

Imate projekt na umu?