Sari la conținut
Danube Labs

Site fără bază de date: când alegi un CMS bazat pe Git

Un site fără bază de date ține conținutul ca fișiere în Git, iar adminul face commit prin API. Vezi cum funcționează danubelabs.net, ce limite are și cui i se potrivește.

De Alexandru Secureanu7 min de citit
Diagramă cu un site al cărui conținut este stocat ca fișiere într-un repository Git

Un site fără bază de date stochează conținutul ca fișiere într-un repository Git, iar un CMS bazat pe Git le editează printr-un panou de administrare. Fiecare salvare devine un commit făcut prin API-ul GitHub, apoi hostul reconstruiește site-ul. Nu ai o bază de date de securizat, de actualizat sau de plătit, iar orice modificare poate fi anulată. Soluția se potrivește când conținutul îl schimbă câțiva editori și mai puțin când îl creează vizitatorii.

Ce este un CMS bazat pe Git?

Un CMS clasic răspunde fiecărei cereri interogând o bază de date și construind pagina. WordPress, de exemplu, recomandă PHP plus MySQL sau MariaDB. Un CMS bazat pe Git scoate baza de date din ecuație. Conținutul stă în fișiere JSON, Markdown sau YAML din repository, pasul de build transformă fișierele în pagini dinainte, iar hostul servește paginile gata făcute dintr-un CDN.

Editorii primesc în continuare o interfață obișnuită de administrare. Decap CMS este un exemplu open source. Documentația lui descrie o aplicație React care învelește fluxul Git, ține conținutul în repository și funcționează cu GitHub, GitLab sau Bitbucket. Îți poți scrie și propriul admin, iar noi am mers pe această variantă.

Cum funcționează danubelabs.net fără bază de date?

Site-ul rulează pe Next.js 16 (App Router), React 19, Tailwind 4 și TypeScript. Fiecare pagină, serviciu, proiect și articol este un fișier JSON în repository-ul Git. Programările stau în Google Calendar, așa cum arată articolul despre programări, deci nicăieri în stack nu există o bază de date.

Conținutul este JSON, cu un câmp pentru fiecare limbă

Fiecare câmp de text vizibil utilizatorului este un obiect cu cheile en și ro. Iată o intrare redusă din fișierul de servicii:

{
  "slug": "web-development",
  "title": { "en": "Web development", "ro": "Dezvoltare web" },
  "group": "build",
  "published": true
}

O funcție mică rezolvă un întreg arbore de obiecte pentru o singură limbă, în momentul în care se randează pagina. Câmpurile care nu se traduc, precum slug-urile și prețurile, sunt marcate în schemă. Formularele din admin sunt generate din aceeași schemă, deci un câmp nou nu cere cod nou de formular.

Drumul unei salvări

  1. Un editor schimbă un câmp în /admin și apasă salvare.
  2. Adminul apelează un strat de stocare cu două variante: discul local în dezvoltare și API-ul GitHub Contents în producție. Două variabile de mediu, un token și numele repository-ului, comută între ele.
  3. Apelul API creează un commit pe ramura principală. Endpoint-ul GitHub cere un mesaj de commit, conținutul fișierului în Base64 și, la actualizare, SHA-ul fișierului înlocuit.
  4. Netlify vede commitul și reconstruiește site-ul.
  5. Paginile noi apar live în ambele limbi.

Ce avantaje are un site fără bază de date?

  • Nicio bază de date de securizat, actualizat, salvat sau plătit. Mai puține piese în mișcare înseamnă mai puține lucruri care se strică la 3 noaptea și o suprafață de atac mai mică pe stratul de date.
  • Istoric complet și revenire la o versiune anterioară. Fiecare salvare din admin este un commit cu mesaj și autor. Ca să anulezi o modificare greșită, faci revert la acel commit.
  • Hosting gratuit. danubelabs.net rulează pe planul gratuit Netlify. Paginile construite dinainte cer puțină putere de calcul.
  • Viteză. Paginile sunt generate dinainte și servite dintr-un CDN. Pagina principală și cea de contact obțin 100 în toate cele patru categorii Lighthouse: performanță, accesibilitate, bune practici și SEO.
  • Revizuire și ramuri. Modificările de conținut pot trece prin ramuri și pull request-uri ca un cod, dacă vrei un pas de aprobare.
  • Portabilitate. Conținutul tău sunt fișiere simple pe care le ai deja. Nu există pas de export și nu depinzi de un furnizor.

Și costul contează. Despre cât costă un site în România, inclusiv hosting și mentenanță, scriem în articolul despre prețul unui site în 2026.

Ce limite are un CMS bazat pe Git?

Se termină minutele de build

Planul gratuit Netlify numără build-urile într-un buget lunar. În contul nostru sunt 300 de minute de build. Fiecare salvare din admin și fiecare fișier media încărcat este un commit, iar fiecare commit este un build. În acest an minutele s-au terminat o dată. Deploy-urile s-au oprit fără niciun mesaj de eroare, iar build-urile sărite în acest interval nu au fost reluate după resetare, așa că a trebuit să declanșăm manual un build nou.

Conturile Netlify mai noi folosesc credite. Potrivit documentației de billing Netlify, planul Free are o limită fermă de 300 de credite pe lună, iar un deploy de producție costă 15 credite, adică cel mult 20 de deploy-uri de producție pe lună. Verifică ce model folosește contul tău.

Soluția este să nu construiești când nu s-a schimbat nimic vizibil. Netlify sare peste un deploy când mesajul de commit conține [skip ci] sau [skip netlify]:

git commit -m "Update internal notes [skip ci]"

Următorul commit fără marcaj construiește totul, inclusiv modificările sărite. Folosim marcajul pe commit-urile cu notițe, iar trimiterile din formularul de contact îl poartă deja. Încărcările media sunt următorul loc unde îl aplicăm, pentru că o imagine nu schimbă site-ul randat până când o pagină nu o referă.

Scrierile nu sunt instantanee

O salvare apare live abia după ce se termină commitul, build-ul și deploy-ul. Timpul de build depinde de site, așa că măsoară propriile deploy-uri. Dacă editorii trebuie să vadă o schimbare în câteva secunde, un CMS cu bază de date sau un CMS headless SaaS se potrivește mai bine.

Fără conținut generat de utilizatori la scară mare

Comentariile, recenziile, conturile de utilizator, forumurile și coșurile de cumpărături produc date toată ziua. Fiecare scriere ar fi un commit și un build. Ține aceste date într-o bază de date sau într-un serviciu făcut pentru ele.

Editări simultane și fișiere mari

O actualizare trebuie să citeze SHA-ul versiunii pe care o înlocuiește, deci două persoane care salvează același fișier în același moment creează un conflict pe care trebuie să îl gestionezi. Git nu îl ascunde. Endpoint-ul de contents al GitHub acceptă toate funcțiile doar pentru fișiere de până la 1 MB, acceptă tipuri media raw între 1 și 100 MB și refuză tot ce e mai mare. Ține imaginile mici și scoate-le din fișierele de conținut.

Magazine cu stoc live

Stocurile, prețurile și comenzile se schimbă din minut în minut și prin acțiunea vizitatorilor. Asta este treabă pentru o bază de date. Un CMS bazat pe Git poate ține descrierile produselor, iar un serviciu de magazin sau o bază de date trebuie să țină tot ce se schimbă la finalizarea comenzii.

CMS bazat pe Git, WordPress sau CMS headless SaaS: cum se compară?

CMS bazat pe GitWordPressCMS headless SaaS
Unde stă conținutulFișiere în repository-ul GitO bază de date MySQL sau MariaDBBaza de date găzduită a furnizorului, citită prin API
Bază de date pe care o administreziNiciunaDaNiciuna, o administrează furnizorul
Hosting tipicHost static sau platformă serverless, există planuri gratuiteHost PHP cu bază de date, de obicei plătitFront-end-ul tău pe orice host, plus planul furnizorului
Istoric al modificărilorFiecare salvare e un commit, revenirea se face prin revertRevizii de articole, restaurarea întregului site cere o copie de siguranțăDiferă după furnizor și plan
Live după salvareDupă ce se termină reconstruireaImediatImediat prin API, sau după o reconstruire dacă front-end-ul e static
Proprietatea asupra conținutuluiFișiere simple pe care le ai dejaExport din baza de dateExport prin uneltele furnizorului, verifică cum
Plugin-uri și ecosistemMicFoarte mareFuncții și integrări ale furnizorului
Conținut de la utilizatori și magazinePotrivire slabăBună, cu plugin-uriDe obicei cere un backend separat pentru comenzi și utilizatori
Costul principalTimp de dezvoltare și limite de buildHosting și mentenanțăUn abonament care crește cu utilizarea, vezi pagina de prețuri a furnizorului

Pentru cine este potrivit un CMS bazat pe Git?

Se potrivește pentru site-uri de companie și de marketing, portofolii, documentație, bloguri cu puțini editori și site-uri de prezentare bilingve. Aceste site-uri se schimbă de câteva ori pe săptămână, prin oameni pe care îi cunoști, și câștigă cel mai mult din viteză, istoric și hosting gratuit.

Se potrivește prost pentru piețe online, site-uri cu abonamente, forumuri, magazine cu stoc live și orice site cu sute de editori sau cu conținut care trebuie să apară în câteva secunde. Dacă ești nehotărât, notează cine creează conținut și cât de des se schimbă. Când răspunsul este vizitatorii, sau la fiecare câteva secunde, alege o bază de date.

Cum construiești un site ca acesta?

  1. Alege un framework care construiește paginile dinainte, de exemplu Next.js.
  2. Modelează conținutul ca JSON sau Markdown, cu o schemă, un fișier pentru fiecare pagină sau element și un câmp pentru fiecare limbă dacă site-ul e bilingv.
  3. Adaugă un admin. Decap CMS îți dă unul gata făcut, iar un admin propriu îți dă control deplin asupra formularelor și permisiunilor.
  4. Conectează repository-ul la un host care face deploy la fiecare commit.
  5. Stabilește regulile de commit: ce salvări trebuie să construiască și care trebuie să poarte [skip ci].

Dacă adminul poate sta în altă parte, de exemplu Decap CMS cu autentificarea editorilor prin furnizorul lor Git, site-ul în sine poate rămâne un export static pur. În Next.js asta este o singură setare:

// next.config.js
const nextConfig = {
  output: 'export',
}
module.exports = nextConfig

Documentația Next.js listează ce nu poate folosi un export static: Incremental Static Regeneration, Server Actions, Proxy și loader-ul implicit de imagini nu sunt disponibile. Adminul nostru are rute de server care țin tokenul GitHub și scriu commit-uri, așa că danubelabs.net rulează pe runtime-ul Next.js al Netlify.

Vrei un site ca acesta?

Danube Labs construiește site-uri bilingve, fără bază de date, cu un admin pe care îl poate folosi echipa ta, găzduite în repository-ul și contul tău de hosting. Poți vedea rezultatul în studiul de caz danubelabs.net, poți citi ce construim pe pagina de dezvoltare web sau poți programa un apel introductiv gratuit ca să verificăm dacă un CMS bazat pe Git se potrivește site-ului tău.

Întrebări frecvente

Ce este un CMS bazat pe Git?
Un CMS bazat pe Git ține conținutul ca fișiere, de exemplu JSON sau Markdown, într-un repository Git, nu într-o bază de date. O interfață de administrare editează fișierele și face commit prin API-ul furnizorului Git. Apoi hostul reconstruiește site-ul. Primești gratuit istoricul versiunilor și revenirea la o versiune anterioară și nu rulezi niciun server de baze de date.
Poate funcționa un site fără bază de date?
Da. Paginile pot fi construite dinainte din fișiere și servite dintr-un CDN, deci nicio interogare nu rulează când vine un vizitator. Se potrivește pentru site-uri de companie, portofolii, documentație și bloguri. Nu se potrivește pentru ce strânge date de la utilizatori toată ziua, precum magazinele cu stoc live, forumurile sau zonele cu abonament, care au nevoie de o bază de date sau de un serviciu făcut pentru acele date.
Este un CMS bazat pe Git bun pentru SEO?
Ajută la partea tehnică. Paginile sunt pre-randate, se încarcă repede și sunt ușor de citit pentru crawlere. Poziționarea depinde în continuare de conținut, structura site-ului, date structurate și linkuri, deci niciun tip de CMS nu poziționează singur un site. danubelabs.net obține 100 în toate cele patru categorii Lighthouse pe pagina principală și pe cea de contact.
Pot folosi editorii fără cunoștințe tehnice un CMS bazat pe Git?
Da, dacă CMS-ul pune în fața Git un admin bazat pe formulare. Editorii completează câmpuri și apasă salvare, iar adminul scrie commitul în locul lor. Decap CMS este o opțiune open source, iar un admin propriu generat dintr-o schemă este alta. Git simplu nu este o interfață de editare și nu ar trebui dat editorilor.
Când să nu folosesc un CMS bazat pe Git?
Evită-l pentru magazine cu stoc live, piețe online, forumuri, site-uri cu abonamente, bloguri cu multe comentarii și orice site unde editează sute de persoane sau unde schimbările trebuie să apară în câteva secunde. Fiecare salvare este un commit și un build, deci volumul și viteza sunt limitele. Pentru aceste cazuri alege un CMS cu bază de date sau un CMS headless SaaS.
Este un CMS bazat pe Git mai ieftin decât WordPress?
Hosting-ul este adesea mai ieftin, pentru că site-urile construite dinainte pot rula pe planuri gratuite și nu există server de baze de date. Pe aceste planuri se aplică limite de build, deci un program intens de editare le poate consuma. Costul real este timpul de dezvoltare pentru schemă și admin. Compară împreună configurarea, hosting-ul și mentenanța.
Distribuie

Articole similare

  • 8 min de citit

    Router AI vs furnizor direct: OpenRouter sau API direct?

    Un router îți dă o cheie, o factură și multe modele. Un API direct îți dă un contract și mai puține părți. Vezi cum diferă OpenRouter, OpenCode, Command Code și un gateway local, verificat la 4 octombrie 2026.

    • AI
    • LLM
    • Unelte pentru dezvoltatori
  • 7 min de citit

    OpenCode Go preț și limite: Command Code GOAT, Charm Hyper

    OpenCode Go costă 10 USD pe lună, Command Code începe de la 1 USD cu un plan GOAT de 10 USD, iar Charm Hyper (numit HyperCharm în unele unelte) vinde credite. Prețuri, limite și avertismente la 4 octombrie 2026.

    • AI
    • Unelte pentru dezvoltatori
    • Abonamente
  • 7 min de citit

    Cele mai bune modele open source pentru programare în 2026

    Cele mai bune modele open source pentru programare la 4 octombrie 2026: scoruri datate, licențe, cerințe hardware și setup pentru Claude Code, local sau găzduit.

    • Modele deschise
    • Unelte pentru dezvoltatori
    • Open source