Skip to content
Anahê ecosystem · 03/05blog.anahe.com.br

Anahê · Caderno

A blog that reads like a notebook.

Role
Design System & Full-stack
Year
2026
Status
Live

— Ecosystem

Four apps, one API

Anahê Canavezzi is a writer and a designer. She needed three public sites (the book, the studio and the blog) and a dashboard to manage all of it without depending on me. I built the four Next.js apps in a Turborepo and pnpm monorepo, served by a single NestJS API and a single database.

Architecture decision

I considered micro-frontends and dropped the idea: there are no multiple teams and no runtime composition. These are four sites sharing a design system, types and schemas, which is exactly what Turborepo is for.

PostgreSQL · Redis · R2Railway · Cloudflare

One dashboard and one API manage the content of all three public sites.

— The story

How I built each part

Chapter 01Home

The notebook's cover

Writing about writing, design and the work behind both. Post titles use Literata, a reading serif, and the Home opens with the latest post and the list of every text, filterable by category.

blog.anahe.com.br
  • Skeleton matching the final layout
  • Categories configured in the dashboard

Chapter 02Post

Read, listen, comment

Posts have a reading mode with adjustable size, font, spacing and theme, and an option to listen to the text. Comments and reactions only ask for a name and email: the reader confirms the email once, and comments go through moderation in the dashboard.

blog.anahe.com.br
  • No account, no password
  • Listen to the text with the Web Speech API

Chapter 03Search · Archive · Category

Finding any post

Search opens as a spotlight, from Ctrl+K, the slash key or the icon, with results as you type. The archive groups everything by year and month, and categories and tags have their own pages.

blog.anahe.com.br
  • Full keyboard navigation
  • Full-text search in Postgres, no external service

Chapter 04SEO · RSS

Cached until something is published

Page data is cached and labelled with tags. When Anahê publishes in the dashboard, the API revalidates only the affected tags. RSS, sitemap and Open Graph images come from the same data.

blog.anahe.com.br
  • Tag-based revalidation, with retries
  • Per-post Open Graph image

— Technologies

Front

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • next-intl

SEO

  • revalidateTag
  • RSS
  • Sitemap
  • Open Graph
  • JSON-LD

Monorepo

  • Turborepo
  • pnpm workspaces

API

  • NestJS 11
  • Prisma 7
  • PostgreSQL 18
  • Redis 7 · BullMQ

Infra

  • Vercel
  • Railway
  • Cloudflare
  • R2