Skip to content

Inside EverDuetLearn the system by following its decisions

An interactive architecture notebook about building a private, dependable full-stack product without building a platform larger than the problem.

EverDuet mark

EverDuet is intentionally small enough to understand end to end. That makes it a useful full-stack laboratory: product behavior, database invariants, authentication, performance, queues, testing, containers, and operations all exist—but each earns its complexity.

How to use this site

  1. 1 · OrientBuild a mental model of the services and the boundary owned by each one.
  2. 2 · TraceFollow a user intent down through auth, domain logic, data, and back to presentation.
  3. 3 · ChallengeUse the tradeoff and scale tools to ask when today's decision should change.
Interactive map

Select a layer to inspect its responsibility

The boundary between layers matters more than the framework inside each box.

Next.js 16 + React 19

Experience

Two server-rendered apps keep the private couple experience separate from administrative curation.

Owns
  • Web navigation and forms
  • Admin curation
  • Route-level loading states
Boundary protects against

A single permission-heavy application shell

The constraints behind the design

One real user, production quality

Throughput is modest, but privacy, concurrency, migrations, and recovery still deserve correct boundaries.

Learning over résumé architecture

The public API and queue are useful seams to study, not excuses to invent clients or background work.

Fast emotional product

Prompt flows should feel immediate and safe. Performance work follows user-visible waits and protects private state.

One maintainer

Automation should increase confidence without creating a platform that needs its own operator.

IMPORTANT

This site describes the current repository, not an idealized reference architecture. When a choice is educational but not yet product-critical—such as BullMQ—it says so directly.

A compact thesis

Keep durable truth and hard concurrency rules in PostgreSQL. Keep product rules in a client-neutral domain layer. Let Next.js optimize delivery, not own the model. Add distributed machinery only when measured evidence makes its coordination cost worthwhile.

Continue to the system map, or jump to the guided code tour if you learn best from source.

Built as a living architecture notebook for a personal project.