CMS

Portable sites beat platform lock-in

Host hopping shouldn’t require a migration consultant. Versioned site packages — database, uploads, manifest — make portability real.

Lock-in is a product feature (for them)

Platforms love your content when leaving hurts. Proprietary blocks, opaque databases, export tools that “almost” work — that’s not an accident.

Portability as a design constraint

If the CMS is a folder + a SQLite file + uploads/, moving hosts is an afternoon, not a quarter.

Forma’s site packages lean into that:

manifest.json     # format + schema versions
data.json         # portable content
database/forma.db # the CMS
uploads/          # media

Future app versions can migrate using schema_version. Packages newer than the running app get rejected — better than silent corruption.

Practical ritual

  1. Before any brave deploy: download a site package
  2. Keep database/ and uploads/ when you replace code
  3. Test restore on a scratch vhost once, so you’re not learning under fire

Freedom isn’t ideological

It’s operational. Portable sites mean you can fire a host, fork a design, or hand a client their whole world on a USB stick without apologizing.