Totul a pornit de la un alt proiect, Pure Blog Discover - un director de bloguri construit pentru comunitatea Pure Blog. Structura lui m-a convins: simplă, fără framework-uri, fără bază de date, doar PHP curat, JavaScript vanilla și fișiere JSON. Exact genul de arhitectură care nu se strică în timp și pe care o poți întreține singur, ani de zile, fără să te lupți cu migrări sau dependențe învechite.
Problema era că nu exista un echivalent pentru blogosfera românească. Bloguri scrise în limba română există cu sutele, poate miile, dar împrăștiate - fiecare descoperit din întâmplare, de la un link primit de la un prieten, dintr-un grup de Facebook sau dintr-o căutare norocoasă pe Google. Nu exista un loc central, organizat, unde cineva interesat de gătit, tehnologie sau călătorii să găsească rapid bloguri românești pe tema respectivă.
Așa a apărut ideea: să iau spiritul tehnic al Pure Blog Discover și să construiesc, de la zero, cu nume și design proprii, un director dedicat exclusiv blogurilor în limba română.
Pentru ce a fost făcut
Blogărie este un director public unde orice persoană care are un blog scris în limba română îl poate trimite pentru a fi listat la una dintre cele 19 categorii disponibile (Tehnologie, Lifestyle, Călătorii, Mâncare & Rețete, Sănătate & Fitness, Familie & Părinți, Educație, Cultură & Arte, Modă & Frumusețe, Business & Antreprenoriat, Finanțe personale, Auto & Moto, Sport, Gaming, Fotografie, Cărți & Literatură, Muzică, Jurnal personal, Altele).
Cine intră pe sit poate:
- să răsfoiască directorul, cu ordine aleatorie la fiecare încărcare, sortare A-Z sau după cele mai noi bloguri adăugate;
- să caute după nume sau adresă și să filtreze pe categorii;
- să vadă articolele recente agregate din fluxurile RSS ale tuturor blogurilor listate, pe o pagină dedicată;
- să se aboneze la director prin RSS, Atom sau JSON Feed, sau să exporte toate fluxurile deodată printr-un fișier OPML, direct în cititorul lui preferat;
- să adauge o insignă „Listat pe Blogărie” pe propriul blog, dacă a fost aprobat.
Ținta tehnică de la început a fost ca structura să reziste la 1000 sau mai multe bloguri, fără să devină lentă sau greu de navigat - de aici alegerea categoriilor fixe (nu tag-uri libere, care ar deveni haotice la volum mare) și cache-uirea pe server a listei complete.
De ce contează verificarea manuală
Partea la care m-am gândit cel mai mult a fost cum se aprobă un blog nou. Inițial, ideea a fost un model hibrid: dacă serverul detecta automat că pagina trimisă pare a fi în limba română și are un flux RSS, blogul era aprobat instant; altfel intra într-o coadă de verificare manuală.
Testele reale au arătat repede limita acestei abordări. La un moment dat a fost aprobat automat și netmic.ro - nu un blog personal, ci un sit, care întâmplător avea conținut în română. Nicio combinație de semnale tehnice (limbă, flux RSS, meta tag-uri) nu poate garanta că un sit e chiar un blog personal, și nu un sit de firmă sau o publicație de știri - toate pot bifa exact aceleași semnale tehnice.
Concluzia a fost tranșantă: am renunțat complet la aprobarea automată. Acum, orice trimitere publică intră necondiționat într-o coadă de verificare manuală, analizată de un administrator. Semnalele tehnice (scorul de limbă română, prezența unui flux RSS/Atom) sunt calculate în continuare, dar doar ca ajutor vizual pentru admin în panoul de administrare.
Un detaliu la care s-a ținut cont: foarte multe bloguri românești sunt scrise fără diacritice (ă, â, î, ș, ț), din obiceiuri vechi sau din comoditate. Verificarea de limbă normalizează textul (elimină diacriticele) înainte de a căuta cuvinte și expresii specifice româniei, ca să nu penalizeze nedrept blogurile scrise fără ele.
Cum a evoluat proiectul
De la ideea inițială până acum, proiectul a trecut prin câteva decizii importante:
- Publicare cu Docker. Prima variantă de publicare a fost direct pe un VPS, cu Apache și mod_php. Ulterior s-a trecut la Docker - trei containere coordonate prin
docker-compose.yml(aplicația PHP+Apache, Caddy pentru HTTPS automat, și un container de cron pentru scanări periodice), ca soluția să funcționeze identic pe orice server, fără instalare manuală de pachete. - Securitate întărită. Pe parcurs au fost găsite și reparate probleme reale: o vulnerabilitate de tip SSRF prin redirect (un blog trimis putea redirecționa cererea serverului către o adresă IP privată), fișiere de configurare Docker accesibile public, race condition la scrierea datelor sub trafic simultan, printre altele. Toate au fost identificate printr-o recenzie de cod dedicată și rezolvate sistematic.
- Fără blocaje pentru vizitatori. Pagina de articole recente aduna fluxurile RSS ale tuturor blogurilor „la cerere”, ceea ce putea bloca vizitatorul ghinionist care nimerea exact peste momentul de reîmprospătare. S-a mutat toată logica într-un script separat, rulat periodic în fundal - pagina publică doar citește cache-ul deja pregătit.
Proiectul Blogărie este la: blogarie.thinkroot.xyz

Comentarii