A production-ready monorepo template for building modern web and mobile applications with a unified design system.
For operational use (non-technical operator + AI), start here:
This is the official PRD -> independent app repo workflow and handover library.
- Web: Next.js 14 (App Router) + TypeScript + Tailwind CSS + shadcn/ui
- Mobile: React Native + Expo + NativeWind
- Backend: Supabase (Auth, Database, Edge Functions)
- Payments: Stripe integration
- Automation: n8n workflows
- Design System:
@starter/uiwith design tokens - Deployment: Vercel (web), EAS (mobile)
linkdev-starter-kit/
βββ apps/
β βββ web/ # Next.js web application
β βββ mobile/ # React Native mobile application
βββ packages/
β βββ ui/ # Shared UI components and primitives
β βββ config/ # Shared configuration (Tailwind preset, etc.)
β βββ utils/ # Shared utility functions
βββ mcp/ # MCP servers for Cursor integration
β βββ supabase/ # Supabase MCP server
β βββ stripe/ # Stripe MCP server
β βββ figma/ # Figma MCP server
β βββ shadcn/ # Shadcn/UI MCP server
βββ design/
β βββ DESIGN_TOKENS.json # Design system tokens
βββ docs/ # Project documentation
- Node.js 20+
- pnpm 10+
- Expo CLI (for mobile development)
# Install dependencies
pnpm install
# Start web development server
pnpm dev:web
# Start mobile development server (in another terminal)
pnpm dev:mobile- Copy the example file and fill in your values:
cp .env.example .env
- Gather credentials:
- Supabase: Project URL + anon key + service role key from Project Settings β API.
- Stripe: Secret key(s), publishable key(s), price IDs, and webhook signing secret from Stripe Dashboard β Developers (API keys/Webhooks).
- Resend: API key from https://resend.com/api-keys.
- n8n/cron: Webhook URL/secret and cron bearer token you control.
- Validate by starting the app (
pnpm dev:web); the env validator fails fast if anything required is missing.
See the detailed guide in apps/web/docs/ENVIRONMENT_SETUP.md for service-by-service instructions and example values.
# Verify web application (typecheck, lint, build, test, routes)
pnpm verify:web
# Verify mobile application (typecheck, lint, tests)
pnpm verify:mobile
# Verify both web and mobile
pnpm verify:all
# Run web tests
pnpm test:web
# Run E2E tests
pnpm e2e:web
# Run release readiness gate
./scripts/release-readiness.shThis project includes Model Context Protocol (MCP) servers for enhanced Cursor IDE integration:
- Supabase MCP: Database operations, migrations, and queries
- Stripe MCP: Payment and subscription management
- Figma MCP: Design file access and component inspection
- Shadcn MCP: Component discovery and source code retrieval
-
Install dependencies:
for dir in mcp/*/; do (cd "$dir" && npm install); done
-
Set environment variables (add to
~/.zshrcor~/.bashrc):export SUPABASE_URL="https://your-project.supabase.co" export SUPABASE_SERVICE_ROLE_KEY="your-service-role-key" export STRIPE_SECRET_KEY="your_stripe_secret_key" export FIGMA_ACCESS_TOKEN="your_figma_access_token"
-
Restart Cursor completely (Cmd+Q, then relaunch)
-
Test the setup:
mcp servers call SupabaseMCP.ping
π Full documentation: See mcp/SETUP_GUIDE.md for detailed setup and usage instructions.
- Platform: Vercel
- Command:
pnpm build(automatically deployed on push to main) - Environment: Production-ready with Supabase integration
- Platform: EAS (Expo Application Services)
- Command:
eas build(configured inapps/mobile/) - Distribution: App Store and Google Play ready
Create a brand-new independent app repository from this starter:
./scripts/create-app-repo.sh --slug <app-slug> --out <parent-dir> --prd <absolute-prd-path>Then follow:
The project uses a token-based design system:
- Design Tokens: Defined in
/design/DESIGN_TOKENS.json - Tailwind Preset: Consumed via
@starter/config/tailwind-preset - UI Primitives: Available through
@starter/uipackage - Application: Uses Tailwind classes that map to design tokens
DESIGN_TOKENS.json β tailwind-preset.js β Tailwind CSS β Application Components
- Commits: Use Conventional Commits
- Branches:
feat/,fix/,chore/prefixes - PRs: Required for all changes, must pass quality gates
- TypeScript: Strict type checking enabled
- Linting: ESLint with Next.js and Tailwind configurations
- Formatting: Prettier with Tailwind plugin
- Testing: Vitest (web), Jest (mobile)
- ESLint Rule:
no-restricted-importsprevents direct primitive imports - Color Usage: No raw hex colors in app code (use design tokens)
- Component Reuse: Prefer
@starter/uiprimitives over custom implementations
- Operator Library (Official) - workflow, governance, handover
- Documentation Index - technical docs map
- Project Structure - architecture-level structure
pnpm dev:web- Start web development serverpnpm dev:mobile- Start mobile development serverpnpm verify:web- Run all web quality gatespnpm verify:mobile- Run all mobile quality gatespnpm verify:all- Run web and mobile quality gatespnpm test:web- Run web testspnpm test:mobile- Run mobile testspnpm e2e:web- Run web E2E testspnpm release:alpha- Prepare alpha release./scripts/create-app-repo.sh- Create independent app repo from starter./scripts/release-readiness.sh- Run release readiness gate
pnpm dev- Start Next.js dev serverpnpm build- Build for productionpnpm start- Start production serverpnpm lint- Run ESLintpnpm test- Run Vitest testspnpm e2e- Run Playwright E2E testspnpm verify- Run all quality gates
pnpm dev- Start Expo development serverpnpm android- Run on Androidpnpm ios- Run on iOSpnpm web- Run on webpnpm test- Run Jest tests
- Reference
.cursor/11-webapp-structure.mdcfor complete design system rules - No direct primitive imports (use
@starter/ui) - No raw hex colors (use design tokens)
- Script:
pnpm run verify:routeschecks required routes exist - CI Integration: Route verification runs in build pipeline
- Documentation: Route inventory maintained in
docs/structure.md
- Fork the repository
- Create a feature branch (
feat/your-feature) - Make your changes following the conventions
- Run quality gates:
pnpm verify:all - Commit with conventional commits
- Push and create a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- Project Structure - Detailed monorepo documentation
- Operator Library - Official workflow and governance
- Design System Guide - Complete design system rules
- Web App - Next.js application
- Mobile App - React Native application
- UI Package - Shared design system components
Ready to build? Start with pnpm install && pnpm dev:web and follow the Operator Library.