Project Structure

Understanding how a SeanStack monorepo is organized

Directory Overview

The top-level structure of a SeanStack project

my-awesome-app/
├── apps/                    # Your applications
│   ├── marketing-site/      # Public-facing marketing site
│   ├── web-app/            # Main SaaS application
│   └── admin-dashboard/    # Admin control panel
├── packages/               # Shared packages
│   ├── ui/                # Component library
│   ├── utils/             # Utility functions
│   ├── supabase/          # Database & auth logic
│   └── integrations/      # Third-party integrations
├── patterns/              # Reusable feature patterns
├── .env.example          # Environment variables template
├── turbo.json           # Turborepo configuration
└── package.json         # Root package file

Apps Directory

marketing-site

Your public website with landing pages, pricing, and blog. Optimized for SEO and performance.

Port 3000

web-app

The main application your users log into. Includes auth, dashboard, and all your core features.

Port 3001

admin-dashboard

Internal admin panel for managing users, viewing analytics, and controlling your application.

Port 3002

Packages Directory

@myapp/ui

Shared React components, built with Radix UI and Tailwind. Used across all your apps.

@myapp/supabase

Database client, auth helpers, and type-safe queries shared between apps.

@myapp/integrations

Configured integrations with Stripe, Resend, and other third-party services.

App Structure

Each Next.js app follows the App Router convention

apps/web-app/
├── app/                    # App Router pages
│   ├── (auth)/            # Auth group (login, signup)
│   ├── dashboard/         # Protected dashboard routes
│   ├── api/              # API routes
│   └── layout.tsx        # Root layout
├── components/           # App-specific components
├── lib/                 # App-specific utilities
├── public/             # Static assets
└── middleware.ts       # Auth & routing middleware

Key Configuration Files

turbo.json

Defines build pipeline and caching strategy for the monorepo

pnpm-workspace.yaml

Configures workspace packages for pnpm

tsconfig.json

Base TypeScript configuration inherited by all packages

.env.local

Environment variables (not committed to git)