Skip to content
← Back to work

Arte de Saber Envelhecer

A website and blog for a gerontologist, one she edits herself and no platform can hold hostage.

Role
Design, architecture & full build (real client)
Year
2024
Stack
Next.js 16 · Payload CMS · PostgreSQL (Neon) · Cloudflare R2 · Tailwind
Live
Visit site
Home page of Arte de Saber Envelhecer, a Portuguese gerontology website

Context

A presence she owns, not one she rents.

Mariana is a gerontologist building a professional presence: a brand site plus a blog she can update herself. Her old site lived on Wix: locked in, hard to grow, and not hers in any real sense. She needed something that looked professional, that she (non-technical) could write to without calling me every time, that cost almost nothing to run, and that could grow into a shop later without a rewrite. The constraint that shaped everything: no host lock-in.

My role: I designed and built it end-to-end, and set it up so the client owns and edits the content without me in the loop.

Architecture

No SaaS in the content path.

One Next.js app with Payload CMS embedded, so the admin, the API and the site are the same deployment, not a service she rents. Content lives in Neon (serverless Postgres); media in Cloudflare R2. Posts are written in a Lexical rich-text editor, with categories, comments, likes and view tracking, a generated RSS feed, and versioned database migrations. Everything is portable by design.

One Next.js app Payload CMS admin + API Public site the pages she owns Neon serverless PostgreSQL Cloudflare R2 media
The CMS is code she owns, not a third-party service. Neon and R2 sit behind standard interfaces: swappable, never a lock-in.

Key decisions

Where the senior work lives.

01

No host lock-in, on purpose.

The whole architecture is a bet against renting. Payload embedded in the Next app means the CMS isn't a third-party service that can change pricing or shut down. It's code she owns, running on infrastructure she can move. Neon and R2 are swappable behind standard interfaces. It's built to outlive any one vendor.
02

The client edits, not me.

A non-technical owner writes posts in a Lexical rich-text editor (categories, images, the works) with zero developer involvement. That was an acceptance criterion, not a nice-to-have: the site is only a success if I never have to touch it to publish a post.
03

Accessibility as a requirement.

This is a site about ageing, read by an older audience. Accessibility was written into the acceptance criteria from the start, not bolted on: semantic markup, real contrast, keyboard support.
04

Before / after: leaving Wix.

The old site was a Wix template. The new one is a considered, owned product with versioned migrations and a real content model. That is the difference between renting a presence and having one.

Results

€0

target hosting cost, serverless

100%

client-editable, no dev in the loop

Wix ↓ owned

migrated off a rented platform

Live

at artedesaberenvelhecer.pt

Before / after

From a Wix template to an owned product.

The previous Arte de Saber Envelhecer website, built on Wix
Before: the old Wix site.
The rebuilt Arte de Saber Envelhecer home page
After: the rebuild she owns and edits.
A blog article on the rebuilt Arte de Saber Envelhecer site
A blog article, written by the client in the embedded Lexical editor.

Next case

Pawbook

Multi-tenant SaaS for pet-hotel management, built secure from the ground up.