Package Map
Every workspace package: what it owns, what it exports, and where the deep dive lives. Use Project Structure for the visual repo tour; follow each row's deep-dive link for a subsystem narrative.
Last updated on
3 min readOn This Page
Apps
Core Spine
The packages everything else builds on. Schemas and sessions at the bottom, the typed API and domain use-cases above them.
| Package | Owns | Public exports | Deep dive |
|---|---|---|---|
@syntaxkit/database | Prisma schema, migrations, generated client, and the multi-domain models (auth, billing, AI, effects). | ., ./health | Database |
@syntaxkit/auth | Better Auth: sessions, OAuth, 2FA, passkeys, the organization plugin, hooks, permissions, post-login redirects, and the bootstrap-admin script. | ., ./server, ./client, ./redirect, ./permissions, ./utils, ./bootstrap-admin | Authentication |
@syntaxkit/api | The oRPC router, middleware (authorized, withActiveOrganization, withPermission, requireAdmin), guards, lib helpers, and request-scoped session cache. | ., ./client (type-only Router), ./session-cache | API |
@syntaxkit/core | Domain use-cases the API routers call: organizations, billing, chat, usage quotas, dashboard stats, admin helpers, and abuse enforcement. | ./abuse, ./organizations, ./billing, ./usage, ./chat, ./dashboard, ./admin | API, Organizations, Billing, AI |
@syntaxkit/shared | Cross-package primitives: Zod schemas, abuse policies, env and setup helpers, client env, test fixtures, Vitest defaults. | ., ./abuse, ./client, ./testing | Conventions |
Product Capabilities
One package per SaaS subsystem. Each exposes a stable interface so you can extend or swap one without touching the rest.
| Package | Owns | Public exports | Deep dive |
|---|---|---|---|
@syntaxkit/payments | Stripe billing: plan catalog, entitlements, checkout, portal, subscription sync, idempotent webhook handler, price-catalog sync, and reconcile/drift reporter. | ., ./client, ./server, ./catalog, ./types, ./stripe/client, ./stripe/price-catalog-sync, ./stripe/reconcile, ./stripe/checkout, ./stripe/portal, ./stripe/webhook, ./stripe/subscription | Billing, Webhooks And Async Workflows |
@syntaxkit/storage | S3-compatible uploads: object-key conventions, upload policy (size/MIME/schemas), sharp image pipeline, presign + finalize, cleanup, and the useFileUpload hook. | ., ./policy, ./hooks | Storage |
@syntaxkit/email | sendEmail transport (log / noop / provider modes), renderEmail, transactional composers, and the React Email template barrel. | ., ./templates, ./transactional | |
@syntaxkit/i18n | Locale registry, localeLabels, path builders (withLocalePrefix, getLoginPath, …), and validation helpers. | ., ./config | Internationalization |
@syntaxkit/analytics | PostHog client/server wrappers, the typed event catalog (16 events), and the OpenTelemetry-backed log helper. | ./client, ./server, ./events, ./logger | Analytics, Monitoring |
UI
| Package | Owns | Public exports | Deep dive |
|---|---|---|---|
@syntaxkit/brand | Brand name, wordmark, URLs, social handles, legal entity, and SEO defaults. One file for metadata, Logo, emails, and legal pages. | . | Customization |
@syntaxkit/ui | shadcn/ui-style primitives, Tailwind v4 theme tokens, the cn helper, and shared icons re-exported from lucide-react. | ./components/*, ./hooks/*, ./lib/* (cn at ./lib/utils), ./styles/* (./styles/globals.css), ./icons | Customization |
The wildcard exports (./components/*, ./hooks/*) give every component and hook its own import path. Add a primitive and import it as @syntaxkit/ui/components/<name>. No barrel to edit.
Dev-Only Configs
Shared tooling presets every package extends. No runtime surface, no deep-dive page.
| Package | Owns | Public exports |
|---|---|---|
@syntaxkit/typescript-config | Shared TypeScript configs. | ./base.json, ./nextjs.json, ./react-library.json |
@syntaxkit/eslint-config | Shared ESLint configs. | ./base, ./nextjs, ./react-library |
Where To Go Next
Project Structure
The visual repo map this page complements.
Conventions
Naming, type flow, tests, and how to extend the starter.
Also useful: Commands And Scripts.
Environment Variables
Every variable the kit reads, where it is used, and what it controls. A fresh clone runs with three core vars (DATABASE_URL, NEXT_PUBLIC_APP_URL, BETTER_AUTH_SECRET). Optional groups degrade cleanly when blank.
FAQ
Common questions before purchase and during the first day. Expand an entry or use Cmd-F. Missing something? Email the support address on the License page.
