Web development

Rebuilding Pànxing from scratch

Why I'm leaving WordPress and building my own platform for panxing.net.

2 min read

The starting point

Pànxing is the digital magazine for Cerdanya, Maresme, and Berguedà. It has been running on WordPress for years: Elementor for layout (designing the pages), Toolset for structured content (data with fixed fields, not free text), and Advanced Ads for advertising. It works, but every new improvement is a fight against the theme (the visual template) and the plugins (extensions that add features).

There is one number that defines the entire project: 78% of the traffic is organic (people arriving from Google) and 69% comes from mobile. Any change that touches the URLs puts the majority of visits at stake.

Why a custom platform

I've decided to leave WordPress and build a platform designed from day one to work with AI. The stack (the set of technologies): Next.js 15, Payload CMS 3, and PostgreSQL (the database), all self-hosted with Docker (a way to package software so it runs the same everywhere) on my own server. Development happens on a private server and, once it's ready, it will be exported to production with the content migrated.

This isn't a technical whim. I want three things WordPress doesn't give me well:

  • Truly structured data: an agenda with multi-day programs, routes with km and difficulty, establishments by region.
  • LaIA, an assistant that generates personalized plans combining real events, getaways, and establishments from the agenda.
  • Full control over advertising and the newsletter (the email bulletin), without depending on third-party plugins.

How I'll explain it here

This post is the first in a series. I'll document the entire process in this journal: the research, the design, the specifications, and from now on, the day-to-day of the build, problems and all. A sample of the journal's tone: The densest Saturday.

One rule I've set for myself: the project has no delivery dates. It advances in phases, and each phase closes when it's done right.