Freelance

Kairos CMS

Designing and building, as sole developer, a centralized headless CMS that replaces 8 separate Heroku and Strapi instances, targeting at least a 40% cut in monthly infrastructure cost.

Cliente: Novanet Studio

Periodo: May 2026 – Present

Rol: Sole Full-Stack Developer & Architect (Freelance)

Techstack: Nuxt 4 · Tailwind CSS v4 · Pinia · Nuxt UI v4 · Node.js · Express 5 · TypeScript · Drizzle ORM · PostgreSQL (Neon) · Cloudinary · Zod · JWT


Contexto

Novanet Studio runs **a dedicated Heroku and Strapi instance for every web project**, which fragments maintenance and adds infrastructure cost with each new client. Kairos CMS replaces that model with **a single centralized instance**: once content is published, it becomes instantly available behind its own URL and API key, with no extra technical work. The pilot covers the studio's **8 active client projects**, and the roadmap opens the platform to external clients in V2.


Condiciones

The entire project, from *requirements and architecture to backend, frontend, QA and deployment*, is delivered by **a single developer** with no dedicated DevOps support. The hard constraints: **PaaS native with no Docker** at any phase, **no Redis** (Neon's serverless Postgres absorbs all read load by design), all media handled by Cloudinary so that **the backend never receives or stores a binary**, and collection schemas that stay **editable at any time without DDL migrations**. Older records remain accessible and are simply flagged as *out of format*. Clerk Auth and granular roles are deliberately deferred to V2.


Solución

A strict **4-layer architecture** keeps the core decoupled: Nuxt 4 for presentation, Express 5 for application logic, Drizzle ORM for data access and PostgreSQL 16 on Neon for persistence. Content is modeled as projects that hold collections, each bound to a **unique, irrevocable API key**, with sub-collections nested to any depth. Schemas persist as **JSONB instead of relational tables**, so the visual field builder can evolve them with **zero DDL migrations** while older records are preserved and flagged as *out of format*. The **endpoint kill switch** reads each collection's state from the database on every request, deliberately uncached, so a change takes effect in **under 2 seconds on every dyno**. Media travels **straight from the frontend to Cloudinary**, keeping the backend stateless. **Global backups run in a worker thread** that never blocks the event loop, and MVP auth is a self-hosted **JWT and bcrypt** session that defers Clerk's roles model to V2.


Herramientas

Nuxt 4 + Tailwind CSS v4 + Pinia + Nuxt UI v4
Full-stack Vue 3 framework with a 110+ component UI library. *Frictionless setup* compared to PrimeVue (heavier) or shadcn-vue (requires copying components in).
Node.js 20 LTS + Express 5 + TypeScript
Express 5's native async/await sends rejected promises straight to the error middleware. Chosen over Fastify (*no clear win here*) and NestJS (*unnecessary DI overhead*).
Drizzle ORM
TypeScript-first with **native JSONB support** and no external binary, avoiding Prisma's 150 to 300 ms Rust engine cold start on Heroku.
PostgreSQL 16 on Neon (serverless)
**Serverless Postgres** with usage-based cost. Chosen over AWS RDS (fixed instances) and Supabase (abstraction layers this project doesn't need).
JWT (jsonwebtoken + bcrypt)
Self-hosted 8-hour session, *1 to 2 weeks faster to ship* than Clerk Auth for a pilot with 1 to 3 internal users.
Netlify + Heroku
Zero-config CI/CD that reuses the studio's existing accounts and infrastructure, within the required us-east-1/Atlanta region.

Funcionalidades clave

Multi-project hierarchical architecture
Projects hold collections, each behind a **unique, irrevocable API key**, with sub-collections nested to any depth and full data isolation between projects.
Visual field builder
Six field types editable at any time with *zero DDL migrations*. Records that no longer match the schema are flagged automatically, never altered or deleted.
One-click endpoint kill switch
Returns 403/404 in **under 2 seconds** and logs every change in the audit trail.
Direct-to-Cloudinary media uploads
Client-side validation of size, dimensions and aspect ratio. *No binary ever touches the server.*
Non-blocking global backups
A worker thread exports every project and collection without interrupting active API traffic.
Markdown editor with live preview
Side-by-side editing built for non-technical editors, backed by an internal audit log of administrative actions.

Resultados e impacto

In active development
Requirements and architecture work began in May 2026. Production results are not yet available.
Concrete launch targets
At least a **40% cut in monthly infrastructure cost** by month 3, kill switch effect in under 2 seconds, and a full centralized backup in under 3 minutes.
Pilot across 8 client projects
Consolidates 8 separate Heroku and Strapi instances into a single CMS instance.

Galería

Kairos CMS screenshotKairos CMS screenshotKairos CMS screenshotKairos CMS screenshotKairos CMS screenshot