Skip to content

How we build

No marketing fluff: the technical diary of how we build sites, apps and our own site. Decisions, missteps and what we learned along the way.

Selling hosting by showing the machine, not the slogan
Product

Selling hosting by showing the machine, not the slogan

A market where everyone promises "unlimited" and nobody says which CPU is underneath. How we built a hosting store whose argument is publishing the whole spec sheet.

David Abellán·August 4, 2026·4 min
Castellón: the city that moved itself (and why our engineering team is here)
Castellón

Castellón: the city that moved itself (and why our engineering team is here)

In 1251 a king signed a permit and an entire town walked down from its hill to the plain to reinvent itself. 770 years later, that same city makes a large share of Europe's ceramic tiles and hosts our Mediterranean office. This is its story.

David Abellán·July 20, 2026·3 min
60 fps or nothing: what we learned polishing the performance of our own site
Performance

60 fps or nothing: what we learned polishing the performance of our own site

Animating the wrong property can cost you 55 frames per second. A practical guide, measured on a real site, to keep a page packed with effects running smooth as silk.

Pablo Huget·July 17, 2026·2 min
A site that lets you touch it: interactive console and live project estimator
Interactivity

A site that lets you touch it: interactive console and live project estimator

We turned our own homepage into a playground: a real terminal where you type commands and a configurator that builds your project plan in 30 seconds. Here's how it was built, and why it converts better than any banner.

David Abellán·July 16, 2026·4 min
How we redesigned Intervolutions: a cinematic hero drawn in Canvas
Frontend

How we redesigned Intervolutions: a cinematic hero drawn in Canvas

From a static green background to a cinematic hero in cobalt and cyan: orbital rings, decoding text and 60 fps fought for frame by frame. The full technical story.

David Abellán·July 12, 2026·2 min
We record real walkthroughs of every site with Playwright (and why)
Tools

We record real walkthroughs of every site with Playwright (and why)

Instead of generic mockups, every case study shows the real site scrolling. Here's how we built the pipeline: headless browser, video capture and transcoding.

David Abellán·July 8, 2026·3 min
Tuning WordPress for a newsroom that publishes daily
WordPress

Tuning WordPress for a newsroom that publishes daily

How we built a digital tech-and-culture magazine on custom WordPress, with GSAP animations, that loads as if it were static.

David Abellán·June 27, 2026·4 min
Auditing a website in seconds: how we built the scanner
Product

Auditing a website in seconds: how we built the scanner

A tool that audits your site instantly and returns metrics you actually understand. How we thought through the UX of a tool that has to be fast and honest.

Ignacio Pineda·June 15, 2026·3 min
Gamifying a community without wrecking performance
Community

Gamifying a community without wrecking performance

An abandonware portal with editorial entries, badges, quests and leaderboards, where downloading a game from 1994 feels like playing one from 2026. Here's how we built its gamified community.

Ignacio Pineda·June 5, 2026·3 min
Serving an 870-title archive without it owning the page
Design

Serving an 870-title archive without it owning the page

Preserving the history of classic gaming in Spanish calls for a site that breathes nostalgia without giving up modern usability. Here's how we solved it.

David Abellán·May 30, 2026·4 min
Typography and pacing for a long-form history site
Design

Typography and pacing for a long-form history site

When the goal isn't selling but getting people to read, design plays by different rules. The site for a trilogy about the Ifni War, told by soldiers from Castellón, that had to reach the heart.

Ignacio Pineda·May 12, 2026·3 min

Want a project worth its own post?

Tell us your idea and we'll turn it into the next success story in this devlog.