Skip to content

← Tornar a la llista

El viatge es fa blog

El blog era text pla que llegies un cop i oblidaves. El mode recordar el converteix en l'artefacte del viatge: blocs editables, les teves fotos, i un PDF que te'n pots endur.

3 min de lectura

El blog era text pla que llegies un cop i oblidaves. El mode recordar el converteix en l’artefacte del viatge: blocs editables, les teves fotos, i un PDF que te’n pots endur.

El context

CamperRoute va néixer amb tres modes: planificar al sofà, conduir a la cabina, recordar a casa. Els dos primers ja tenien forma. El tercer era una promesa a mitges: en tornar, l’app et generava una narrativa del viatge — un text pla, dia a dia, escrit per un LLM — i prou.

Era expositiu sense apropiació. routes.narratives guardava un JSONB pla {idioma: {dia: "text"}}: sense paràgrafs, sense imatges, sense poder regenerar-ne un tros. L’única acció possible era regenerar el dia sencer. Si volies les teves fotos, obries Google Photos en una altra pestanya. Si volies recordar-ho offline, no tenies res per descarregar. El que havia de ser el record del viatge era un text que llegies un cop.

La decisió

Convertir el blog en l’artefacte final del viatge. Tres capes, sobre una base que ja existia:

  • Blocs, no text pla. La narrativa passa a content blocks estructurats i s’edita amb un editor TipTap: slash-menu per inserir, toolbar flotant, i “regenera amb IA” sobre la selecció — una frase, un paràgraf — no només el dia sencer.
  • Les teves fotos. Upload directe del navegador a Cloudflare R2 amb URL signada; un worker en treu les variants WebP i esborra l’EXIF. A més, un botó per enllaçar la galeria externa sencera (Drive, Photos) sense rehostejar-la.
  • Un PDF que te’n pots endur. Exportació server-side: un Chromium headless (Playwright) imprimeix la mateixa pàgina, en vertical o horitzontal, agrupada per dia, amb mapes i imatges.

La base és el cache compartit de coneixement: el context de país — idioma, moneda, normatives camper, gastronomia — que encapçala el blog amb CTAs temàtics surt d’aquí, generat un cop per país i no per usuari.

Diagrama del mode recordar de CamperRoute: tres capes en seqüència — editor TipTap de blocs, mitjans propis a Cloudflare R2 i export a PDF amb Chromium headless — totes alimentades pel cache compartit de coneixement.

Per què un shim i no una migració de cop. Hi havia narratives velles en JSONB pla. En comptes de migrar-les totes en un batch arriscat, una capa de lectura les serveix com un sol bloc paragraph al vol; només quan edites el dia per primera vegada s’escriu la versió estructurada. La migració passa sola, un dia a la vegada, i mai trenca el que ja funcionava.

Què no és

Per ser explícit:

  • No és un CMS multi-usuari ni una xarxa social. El blog és teu; només és públic si marques la ruta com a pública. Aleshores les imatges van per URL signada i les claus a R2 són UUIDs no endevinables.
  • No és re-traducció automàtica. Un cop edites el text, és teu: no es torna a generar als altres idiomes. L’IA proposa; tu tens l’última paraula.
  • No és un generador d’imatges. Les fotos són teves o de fonts CC0 referenciades; mai rehostejem imatges de tercers.
  • No és versionat editorial. Hi ha desat automàtic i undo local, però no un historial de versions persistit.

El que ve

Amb el mode recordar es tanca el cercle que va obrir el primer post: planificar, conduir, recordar — els tres modes, ara tots amb forma. I es tanca també la primera sèrie sobre CamperRoute: per què tres modes, per què planificar i conduir són dos cervells, com apareixen els POIs, com es detecta una arribada, què faig amb el combustible real, per què el codi viu en tres repos, com observo sense espiar, i com el viatge acaba fent-se blog.

El que no he explicat — sprints, branches, BMAD com a mètode, identitat de marca, ser un sol dev amb un SaaS assistit per IA — espera en una segona sèrie. Quan la comenci, enllaçarà des d’aquí i des del hub del producte. Gràcies per llegir fins aquí.