Skip to content
Docs just relaunched - explore the new sidebar, OG images, and AI-ready content.
Overview

Project Structure

How the apps and packages in the SyntaxKit monorepo are organized.

Last updated on

3 min read

SyntaxKit is one pnpm + Turborepo monorepo. apps/ holds the deployable surfaces, and packages/ holds the focused product modules they share. This page is the visual map of that layout; the deeper subsystem guides live under Build With SyntaxKit.

Repo At A Glance

Each row notes what it owns. Expand apps/ and packages/ to see the surfaces and modules underneath.

package.jsonRoot scripts, dependencies, and workspace metadata
pnpm-workspace.yamlDeclares apps/* and packages/* as pnpm workspaces
turbo.jsonTurborepo task pipeline and caching rules
app/Next.js App Router routes, layouts, and pages
components/App-specific React components
lib/Server helpers, clients, and app-level config
api/oRPC routers and application API behavior
auth/Better Auth setup, sessions, and access control
database/Prisma schema, migrations, and client
payments/Stripe billing, subscriptions, and webhooks
storage/S3-compatible file uploads and object storage
email/React Email templates and Plunk delivery
i18n/next-intl messages and locale wiring
analytics/PostHog tracking and product event helpers
ui/Shared UI components and primitives
shared/Schemas, types, and helpers used across packages

How It's Layered

Two apps sit on top of three layers of shared packages. Read the repo top-down: pick the app surface you care about, then follow ownership into the layer that owns the subsystem.

Apps

Next.js logo

apps/web

The integrated Next.js product app: routes, dashboards, marketing, and product flows. Start here for anything user-facing.

apps/docs

This documentation site (Fumadocs). Start here for content under content/docs or the docs shell itself.

Core spine

The packages every other module leans on. Touch these when you change schemas, sessions, or the typed API contract.

Prisma logo

packages/database

Prisma schema, migrations, and the generated client used everywhere.

Better Auth logo

packages/auth

Better Auth setup, sessions, organizations, and access control.

packages/api

The oRPC routers that define the application API surface.

packages/shared

Schemas, types, and helpers shared across packages.

Product capabilities

Single-responsibility packages that own a SaaS subsystem behind a stable interface, so you can extend or swap them without touching the rest of the app.

Stripe logo

packages/payments

Stripe billing, subscriptions, portal, and webhook handling.

AWS logo

packages/storage

S3-compatible uploads and object storage adapters.

packages/email

React Email templates and Plunk delivery.

packages/i18n

next-intl messages, locale wiring, and translated UI strings.

PostHog logo

packages/analytics

PostHog tracking and product event helpers.

UI

Radix UI logo

packages/ui

Reusable UI components and primitives shared across the product app.

Where To Start For Common Tasks

You want to change…Start in
Routes, pages, or dashboard flowsapps/web/app
App-specific React componentsapps/web/components
Documentation contentapps/docs/content/docs
Database schema or migrationspackages/database
Sign-in, sessions, or organizationspackages/auth
API endpoints or contractspackages/api
Billing, plans, or webhookspackages/payments
Workspace scripts, tasks, or buildsRoot files (package.json, turbo.json)

Where To Go Next

Was this page helpful?

On this page