Jeg bruker en JSON-fil som CMS, og er nesten ikke flau over det

Kanskje vi skal lære noe av alle memene, og slutte å gjøre alt så komplisert?

Her sitter jeg, i pysjbuksa, og lager nettsider med data fra en JSON-fil, som en annen idiot. Men hvorfor ikke? 📸: Ole Petter Baugerød Stokke
Her sitter jeg, i pysjbuksa, og lager nettsider med data fra en JSON-fil, som en annen idiot. Men hvorfor ikke? 📸: Ole Petter Baugerød Stokke Vis mer

"When you setup Kubernetes to host your personal blog", skriver @Tixie_ i en Twitter-melding som nå er oppe i 34.000 hjerter og 9.000 retweets.

Meldinga viser en video av noen som lager seg en enkel baguette med kraftige sirkelsager og slipemaskiner:

Poenget er gammelt i kode-meme-sfæren: Utviklere liker å løse enkle problemer med kompleks teknologi. "Overengineering", som de sier på verdensspråket.

Her i kode24 har vi alltid slått et slag for det motsatte: Vi har vært åpne om bruk av både jQuery som bibliotek og Google Sheets som database.

Og nå er jeg i ferd med å bygge en nettside med en JSON-fil på GitHub.com som CMS.

Trenger jeg bare JSON..?

"Hjelp - jeg klarer ikke å lage nettsider i 2021!" skrev jeg tidligere i år. Men som jeg senere fortalte om på kode24-timen, fikk jeg det til til slutt.

Løsningen var å ta én ting av gangen: Jeg satt opp Gatsby, skjønte konseptene, lærte meg Styled Components - løste ett og ett problem, hver for seg, etter hvert som de dukka opp.

Til slutt hadde jeg bare én utfordring igjen: Å implementere et CMS, kanskje Sanity. Som igjen betyr å takle henting av data gjennom GraphQL og sjonglere API-nøkler og alt det greiene der.

Lat som jeg er, utsatte jeg heller problemet enda litt mer.

Men for å i alle fall ikke bygge en nettside med hardkoda innhold, lagde jeg en liten JSON-fil å hente det fra, som jeg tenkte kunne imitere det et CMS skulle gi meg på et tidspunkt.

JSON-fil med innhold til venstre, en haug av .map() i Gatsby til venstre. Veien til suksess.
JSON-fil med innhold til venstre, en haug av .map() i Gatsby til venstre. Veien til suksess. Vis mer

Nei, jeg trenger frontend...

Det viste seg kjapt at JSON-fila ble rimelig enkel. Alt jeg trengte for nettsida mi var ren, uformatert tekst og enkle URL-er i noen ulike kategorier.

Trengte jeg virkelig et fullblods CMS for dette? Med strukturerte data og komplekse spørringer og lynraske hastigheter og redigeringshistorikk og bildeopplastning og førsteklasses sikkerhet og GDPR-støtte?

Nei. Selvfølgelig ikke.

Men det jeg følte jeg trengte, var en frontend for å redigere innholdet mitt. Å ikke måtte laste ned hele prosjektet, redigere JSON-fila og pushe alt på nytt til GitHub for å få Netlify til å bygge sida på nytt, hver gang jeg ville legge til noe innhold.

Kanskje jeg trengte et CMS, likevel.

Om jeg endrer JSON-fila på GitHub.com eller i VSCode spiller såklart ingen trille. Gatsby-sida mi blir bygd på nytt den, av Netlify, med nytt innhold, uansett.
Om jeg endrer JSON-fila på GitHub.com eller i VSCode spiller såklart ingen trille. Gatsby-sida mi blir bygd på nytt den, av Netlify, med nytt innhold, uansett. Vis mer

Vent, GitHub.com..?

Jeg liker å fortelle kode24-Jørgen om kodingen min. Jeg har ikke så mange andre å snakke om kodingen med - samboeren min bryr seg like lite som bebien min.

- Jada, JSON funker alltid, kunne han fortelle meg.

- Heh, ja, nei, jeg må jo få meg et CMS snart, så jeg faktisk får redigert innholdet, svarte jeg litt flau.

- Eller så kan du bare redigere JSON-fila på GitHub.com, sa Jørgen nonchalant.

Det tok meg noen sekunder, men så innså jeg det åpenbare: Å redigere JSON-fila på GitHub.com og pushe endringene derfra, er jo nøyaktig det samme som å gjøre det fra VSCode. Netlify bryr seg jo ikke, og bygger Gatsby-sida mi på nytt uansett hvor jeg redigerer og pusher koden fra.

Jeg kunne bruke en JSON-fil på GitHub.com som CMS. Bare gå inn på GitHub.com å redigere fila i nettleseren hver gang jeg ville endre på innholdet. Fra hvor som helst, når som helst, hvordan som helst. Genialt.

Et slags... C.M.S.

Jeg skjønner at jeg er en hobbykoder, at nettsidene mine ikke har de samme behovene som VG.no, at CMS-er som Sanity selvfølgelig har livets rett. Jeg ville aldri ha skrevet denne artikkelen i en JSON-fil.

Men det jeg også skjønner, er at det er lett for utviklere, både proffe og amatører, å gjøre ting mer komplisert enn de trenger å være.

At det er lett å gjøre det vanskelig, ved å sette opp enkle nettsider med Kubernetes, eller bruke et CMS som gir deg tusenvis av funksjoner du ikke trenger, når alt du trenger bare er en JSON-fil.

Nå skal jeg bare skrive en liten applikasjon til, for å redigere JSON-fila mi enklere enn på GitHub.com. Det blir vel et slags innholdsstyringssystem. Eller "content management system", som det kan kalles på engelsk. Kanskje jeg skal forkorte det til "C.M.S.".

Og sette det opp på Kubernetes.