Hodeløs forelskelse
5 grunner til at vi valgte Sanity som CMS for netlife.com
Den nye identiteten til Netlife er ikke bare visuell, den er også teknologisk. Dette reflekterer at vi har gått fra å være et byrå som først og fremst leverte interaksjons- og grafisk design for web, til å snekre sammen komplette digitale løsninger i både form og funksjon.
I mange år har vi i teknologibransjen hørt snakk om «headless CMS», det vil si systemer hvor innholdet kun er tilgjengelig via et API, og ikke med en påkobla motor for sidemaler. Innholdet i et API gir kun strukturert innhold i en liste og «vet ingenting» om hvordan det skal bli vist. De som promoterer hodeløse CMSer hevder gjerne at det en mer rendyrket måte å forvalte digitalt innhold på, fordi man tar høyde for at det skal vises i forskjellige digitale flater. Det virker også som markedet hører, for de tradisjonelle leverandørene har nå begynt å snakke om «decoupled» som et tilsvar hvor de gjør innholdet i sine CMS mer tilgjengelig gjennom APIer.
De siste årene har vi også jobbet med og anbefalt flere kunder slike hodeløse løsninger. Vi har vært veldig fornøyd med Craft CMS som det gode, gamle grønne nettstedet er bygget på, men ville i denne runden utfordre oss selv. Det føltes derfor rett å tygge sin egen hundemat.
Vi hadde så vidt startet arbeidet i en annen løsning da Oslo-byrået Bengler kom innom og spurte om vi ville teste ut Sanity, et hodeløst CMS de har utviklet de siste tre årene og nå startet en egen bedrift for. Jeg var solgt da jeg brukte mindre enn én dag med litt enkel JavaScript på å reprodusere informasjonsarkitekturen vi hadde klikket oss frem til i kontrollpanelet i den andre løsningen. Til tross for at redaksjonsgrensesnittet var i beta, tok vi sjansen og hoppet på. Nå er netlife.com lansert som et løsrevet nettsted i Next.js som henter alt innholdet sitt via et API. Vi er allerede i gang med flere kundeprosjekter på Sanity, med flere i sikte. Her er fem grunner til hvorfor vi ble hodeløst forelsket:
1. Vi kan redigere redaktørgrensesnittet
I alle de årene vi i Netlife har hjulpet kundene våre med å gjøre brukeropplevelsene bedre for deres brukere, så har det vært en stein i skoen: Redaktørsystemene som kundene våre selv må bruke når de skal forvalte innholdet sitt. Vi kan bruke timer på å rydde opp i Wordpress-dashboard-kaos, eller irritere oss over valgene som CMS-leverandøren har tatt for å imøtekomme alle behov. Dette har også vært grunnen til at vi har valgt Craft CMS for mange, som gir deg blanke ark, men til gjengjeld et bestemt utvalg av tegnestifter når det kommer til innholdsfelter og struktur i kontrollpanelet.
Redaktørgrensesnittet til Sanity, også kalt Content Studio, er bygget for å kunne tilpasses til akkurat det du trenger, helt ned på innholdsfeltsnivå. Siden det er kodet i React, som de fleste som koder i Netlife er vant med fra frontend-arbeidet, er terskelen utrolig lav. Dette gir uante muligheter til å tilpasse publiseringssystemet til kundens hverdag.
2. Alt innholdet er tilgjengelig via et API, akkurat slik du vil ha det
Om du ikke er utvikler kan du fint hoppe over det påfølgende avsnittet. Poenget er at utvikling av informasjonsarkitekturen og det at man slipper å konfigurere hvordan man får ut innholdet i APIet sparer utviklere for enormt mye tid. Den tiden kan man bruke på å lage gode nettsider eller tilpasse redaktørgrensesnittet (som også er enkelt).
En av utfordringene med hodeløse CMS tidligere er at APIet har vært relativt låst til en forhåndsbestemt struktur. Av og til er det akkurat det man trenger, men dersom du skal drive et helt nettsted på det, eller andre mer komplekse innholdsflater, så blir det fort omstendelig å jobbe mot. Om man for eksempel skal vise et blogginnlegg med informasjon om forfatteren, må man gå to ganger til APIet for å spørre om hver enkelt del. Det er derfor Facebook utviklet spørrespråket GraphQL som gir deg litt fleksibilitet til å hente ut det du trenger. Sanity kommer med spørrespråket GROQ som ligner litt, men er enklere å lære og gir mer fleksibilitet. Spesielt når du er ute etter å hente ut innhold med relasjoner. For eksempel vil spørrestrengen *[_type = 'articles']{title, "comments": *[_type = comments && references(^._id)]
se gjennom alle dokumenter av typen «articles» og gi deg tittelen og alle kommentarer som er tilknyttet hver enkelt. Om du ikke leser kode, vis dette til en utvikler du kjenner og vent på «høh»-et.
3. Kortreist, bærekraftig og dødskjedelig teknologi
Sanity lover mye. Det skal være i stand til å romme titusenvis av dokumenter; du skal kunne redigere i sanntid i samme dokument (slik som i Google Docs); du skal kunne spore tilbake endringene i dokumentet ditt; hvilket som helst innhold skal kunne hentes ut på millisekund, selv med relasjoner; du skal kunne bygge dine egne datamodeller; og så videre. Det er ikke rart vi også gikk inn med en sunn dose skepsis. Det hjelper å vite at Bengler har bygget og drevet Underskog i 12 år, var tidlig ute med det sosiale nettsamfunnet Origo (rett før Facebook var en ting) og har mange teknologiske prosjekter på CVen. De har nå etablert Sanity som en egen bedrift og satser tungt. Under panseret til Sanity finner vi dødskjedelig teknologi som PostgreSQL, ElasticSearch og JavaScript. Sanity er også åpen kildekode. Og dødskjedelig, velprøvd og moden teknologi er bra når den skal ta vare på innhold og data som er viktig for organisasjonen din.
4. Hodeløst tvinger deg til å tenke nøye over informasjonsarkitekturen din
Vi skal ikke late som det ikke kan være utfordrende å jobbe med et hodeløst CMS. Det fungerer nemlig best om du klarer å løsrive deg fra digitalt innhold som «sidemaler», menystrukturer, tekst og bilder i en nettleser. Dette er spesielt utfordrende når det tross alt er en nettside man skal lage. Med netlife.com har vi klart det til en viss grad, men måtte allikevel krype til korset og lage et dataskjema for «forsider» hvor vi styrer innholdet som kan knyttes til det øverste laget av netlife.com. På den annen side har vi også skilt ut «Persons» som en egen datatype, som ikke bare listes ut på nettsiden, men også tas ut i en kjekk liten utvidelse for Mac-appen Alfred (se gif under).
5. Vi kunne jobbe smidig uten å være spesielt redd for å feile
Det var en vanvittig utfordring å lage en helt ny visuell identitet innomhus som skal favne to selskaper. Siden sjappa også skal gå rundt, ble det slik at vi begynte å bygge teknologien seinere enn vi skulle ønske, og derfor måtte jobbe fort for å få nettsiden på lufta innen lansering av den nye identiteten. Å hoppe på en relativt uprøvd løsning som Sanity seint i prosjektløpet var derfor å bevisst ta seg vann over hodet, men det var en kalddusj som viste seg veldig lærerrik for oss (og vi lanserte tross alt til fristen innenfor budsjett). Tryggheten var i at vi med én kommandolinje-snutt kunne ta med oss innholdet og gå, og at vi fikk lov til å mase så mye vi ville på Bengler, som trengte tilbakemelding på bugs og ting som burde forbedres.
En av styrkene til Sanity er at det bokstavelig talt tar fem minutter fra du har lastet ned, installert, og startet redaksjonsverktøyet, til du er i gang med å bygge informasjonsarkitekturen med innholdsfelter som andre kan begynne å fylle ut. Som prosjektleder for teknologi kunne jeg gi innholdsfolka tilgang til å jobbe med det reelle innholdet rett i Studio så snart vi hadde redaktørgrensesnittet oppe og noen felter klare. Grunnen til det var at vi trengte å avdekke nye behov for informasjonsarkitekturen i møte med den virkelige verden, og ha ekte innhold for å stressteste det visuelle designet når det ble tatt ut i levende kode. Vi måtte finne ut hva som ikke fungerte så tidlig som mulig.
Denne arbeidsformen er langt fra smertefri, og krever mye tålmodighet fra alle. Spesielt de som må jobbe med tekst uten å umiddelbart kunne se hvordan det tas ut: «Når får vi forhåndsvisning?» ble fort en klisjé. Etterhvert som nettstedet kom på plass, ble også redaksjonsopplevelsen bedre. Neste steg blir å bake forhåndsvisning av forskjellige flater inn i redaktørgrensesnittet. Da kan vi umiddelbart se hvordan innhold tas ut på nettsiden, når det deles på Facebook, eller som respons i en Alexa-skill.
Mist hodet uten å miste sinnet
Vi er teknologi-agnostiske i Netlife, og prøver alltid å finne den teknologien som tjener til å løse problemer innenfor prosjektets rammer: Når det er sagt, vi har blitt forelsket i Sanity fordi det er så enkelt å sette opp, enkelt å tilpasse, og gir oss mulighet til å jobbe med innhold først uten at teknologien kommer i veien. Det passer nok ikke for alle, og dekker ikke alle de forskjellige behovene vi møter i ulike prosjekter, men for organisasjoner og bedrifter som har høye digitaliseringsambisjoner vil det være vanskelig å ikke vurdere Sanity til den delen som har med innholdsforvaltning å gjøre.
Dersom du er nysgjerrig på hvordan det er å jobbe med hodeløse CMS, ta gjerne kontakt, eller skriv i kommentarfeltet under.