
Energia Natural
Micael works the land — intuitive agriculture, deep ecology, regenerating a Mediterranean landscape. He couldn't depend on me to change a price; that would go against everything he practices. I built him a site he runs entirely on his own, from the first line of text to the last price.

Nothing could depend on me
- His business is about autonomy — depending on a developer to change a price made no sense.
- He had to manage messages, events, projects, services, settings, users and history — all himself, via admin.
- 16 service pages had to come from the database, not from static files only I could edit.
- Passwordless login — a small team has no time to manage lost credentials.
- Analytics had to exist, but cookieless — GDPR by design, not by a consent banner.
A site he tends himself
Astro 5 in hybrid SSR over Cloudflare Pages and D1, with an admin built around his business — no generic CMS forced to fit. Magic links with single-use tokens and a D1 allowlist take passwords out of the way. Custom analytics, written by me in ~150 lines, writes straight to D1, no cookies, no third-party tools. The result: Micael logs in, changes what he needs, logs out — without waiting on me.
An 8-module back-office, all his
Full back-office
8 modules — messages, events, projects, services, settings, users, analytics, history — run by him, start to finish.
Dynamic pages
16 service pages come from the database: change the text and the page updates itself.
Passwordless auth
Magic links via Resend, single-use tokens, D1 allowlist — no password to forget.
Cookieless analytics
~150 lines written from scratch, GDPR by design, his own dashboard.
Domain email
@energianatural.pt via Cloudflare Email Routing.
Anti-spam
Turnstile + honeypot + per-email rate-limit, no manual intervention.
Building for someone who wants no middleman
Cloudflare D1 is enough for almost everything
I started nervous about distributed SQLite — didn't need to be. For institutional sites with up to a few thousand users, D1 is more than enough, and Cloudflare Pages integration is trivial.
A custom CMS takes longer than it looks
I underestimated the effort of an 8-module back-office. Next time I either charge more for it, or use something like Payload CMS for the generic modules and only build from scratch what's client-specific.
Lighthouse 100/100/100/100 is overkill but it sells
Hitting 100 in every category cost ~2 extra days. For the end user, 90+ was enough. But a perfect Lighthouse screenshot is a direct sales argument for the next client.
Magic links beat passwords
He never once asked for a "forgot password" because there's no password to forget. For small teams (up to ~20 users), I always recommend it.
Enrollment payments and SMS
Next phase: integrate payments for training enrolments and extend notifications to SMS on top of email. Waiting for real-usage feedback before pushing forward.
Need a tailored platform?
I can design and build a complete stack for your business — back-office included.