Reference

Architecture

How the Mise web app, API, database, and search service fit together.

Mise is a pnpm monorepo with three product packages and this documentation app.

Browser


Express API :3000 ─────► React SSR server :4000
   │                              │
   ├────────► PostgreSQL          └── Vite-built frontend

   ├────────► Meilisearch

   └────────► MCP + OAuth endpoints

Workspace packages

PackageResponsibility
apps/serverExpress API, Prisma, OAuth, MCP, and OpenAPI
apps/webReact frontend, TanStack Router, and SSR runtime
apps/docsNext.js and Fumadocs documentation website
packages/commonShared schemas, models, and recipe utilities

One public port

The Express server is the public entry point in development and production. It handles API, OAuth, and MCP routes and proxies all other requests to the frontend server. This keeps cookies and browser API calls same-origin.

Data ownership

PostgreSQL is authoritative. Meilisearch is a derived, eventually consistent index. Recipes use Schema.org shapes across server and frontend boundaries, reducing mapping between import, API, UI, and export representations.

Authentication

Browser sessions use signed HTTP-only cookies. External callers use bearer access tokens. MCP adds OAuth 2.1 discovery, dynamic registration, PKCE authorization, and rotating refresh tokens over the same token model.

On this page