Skip to content
Anahê ecosystem · 04/05admin.anahe.com.br

Anahê · Painel

One dashboard for three sites.

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 01Login · Dashboard

Sign in and see what happened

The dashboard calls the API through its own /api, so the session cookies stay on the dashboard's domain and never reach the public sites. The second login step is an emailed code or an authenticator app. The dashboard shows first-party analytics for all three sites, with no third-party scripts.

admin.anahe.com.br
  • httpOnly, SameSite=Strict cookies
  • Analytics without cookies or stored IPs

Chapter 02Posts · Editor

One editor, two destinations

The editor uses Tiptap and shows the text in the same style it will have on the site (Editorial, Essay or Visual). When publishing, the question is "Where to publish": Blog or Writings.

admin.anahe.com.br
  • Drafts saved automatically
  • Images upload straight to storage through a presigned URL

Chapter 03Writer · Studio · Portfolio

Every list on the sites is editable

Stores, services, steps, clients, testimonials: all follow one pattern. Search, a drag-to-sort list, a "show on site" switch and editing in a side drawer. Case studies, being longer, open a full-page editor.

admin.anahe.com.br
  • dnd-kit with a tilted, translucent preview
  • Reordering with the arrow keys too

Chapter 04Leads · Briefs · Media

Who came through the sites

Contacts and quotes land in Leads, on a kanban board where they're dragged between stages, and the reply to the client is written and emailed from inside the dashboard. Briefs, comments waiting for moderation and the media library of all three sites live in the same place.

admin.anahe.com.br
  • Emails queued on BullMQ, with retries
  • Media stripped of EXIF and GPS, blur generated on upload

Chapter 05Settings · Account

Language, theme and tour

The account menu sits at the bottom of the sidebar: language (Portuguese or English), light or dark theme, and sign out. The dark theme is a warm brown, never pure black, and a guided tour introduces the dashboard the first time.

admin.anahe.com.br
  • Dashboard in Portuguese and English
  • Guided tour on first use

— Technologies

Front

  • Next.js 16
  • TanStack Query
  • React Hook Form
  • Zod
  • next-intl

UI

  • shadcn/ui
  • Radix
  • Tiptap
  • dnd-kit
  • TanStack Table

Monorepo

  • Turborepo
  • pnpm workspaces

API

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

Infra

  • Vercel
  • Railway
  • Cloudflare
  • R2