Skip to content
Page still under development; content remains to be added and some bugs need fixing.
DevelopmentLOG-5276

An in-house engine so no website starts from scratch

Why I built a shared foundation for my clients' websites, what it includes out of the box and how every improvement reaches all projects.

Javier Exposito Martinez2 min read
Featured image for An in-house engine so no website starts from scratch

Every client website ends up needing roughly the same things: a dashboard to edit content without calling me, a blog, several languages, contact forms, legal pages and SEO that works. Building all of that from scratch for each project is expensive for the client and repetitive for me. That is why I built my own engine, and nikastudio.dev, ragdoll-ragsweet.com and samcreta.es are already running on it in production.

What it is

It is a monorepo with Next.js and React on the frontend, NestJS on the backend and TypeScript on both sides. It is organised into modules (blog, portfolio, services, FAQ, contact, shop…), and each one is switched on or off from the dashboard. If a client does not need a shop, the shop does not exist on their site.

How a new website is born

A script creates the client project from a released version of the engine: it sets up the repository, the branding and the database. Everything specific to the client lives in its own layer, separate from the shared code, so customising it does not break the engine.

How improvements arrive

Another script brings the engine's new changes into the client project and, before merging anything, warns which files will conflict. If I fix something on one website and the fix is useful for all of them, I move it into the engine and from there it reaches the rest.

Quality from the first commit

I come from QA, and it shows: every change goes through a pipeline with secret and dependency scanning, static analysis, linting, type checking, unit tests and end-to-end tests with Playwright. Deployment uses Vercel for the frontend and Fly.io for the backend.

What the client gets

A custom website that does not start from zero: pieces already proven on other projects, and the time spent on what makes their website unique.

Tags