Project Structure
The generated project contains three main directories: mobile/ for the
React Native (Expo) app, web/ for the Next.js web app, and backend/ for the Node.js API server.
Root Level
my-app/
├── mobile/ # React Native (Expo) app
├── web/ # Next.js web app
├── backend/ # Node.js (Fastify) backend
├── scripts/ # Setup and deployment scripts
├── docker-compose.yml # Development Docker config
├── docker-compose.prod.yml # Production Docker config
└── README.md # Project documentationMobile App Structure
The mobile app uses Expo Router for file-based navigation with a clean separation of concerns between app routes and reusable code.
mobile/
├── app/ # Expo Router pages
│ ├── _layout.tsx # Root layout (SDK init, auth check)
│ ├── +not-found.tsx # 404 screen
│ ├── (auth)/ # Authentication screens
│ │ ├── _layout.tsx
│ │ ├── login.tsx
│ │ └── register.tsx
│ ├── (onboarding)/ # Onboarding flow (if enabled)
│ │ ├── _layout.tsx
│ │ ├── page-1.tsx
│ │ ├── page-2.tsx
│ │ └── page-3.tsx
│ ├── (tabs)/ # Main tab navigation
│ │ ├── _layout.tsx
│ │ └── index.tsx
│ └── paywall.tsx # Paywall screen (if enabled)
├── src/
│ ├── services/ # API and SDK services
│ │ ├── api.ts # Axios API client
│ │ ├── sdkInitializer.ts
│ │ └── ... # SDK-specific services
│ ├── store/ # Zustand state stores
│ │ ├── index.ts # Store exports
│ │ ├── auth.store.ts
│ │ ├── session.store.ts
│ │ └── ... # Feature-specific stores
│ ├── hooks/ # Custom React hooks
│ ├── components/ # Reusable UI components
│ │ ├── ui/ # Base UI components
│ │ └── auth/ # Auth-specific components
│ ├── constants/ # Theme and app constants
│ └── utils/ # Utility functions
├── assets/ # Images, fonts, icons
│ └── images/
├── app.json # Expo configuration
├── eas.json # EAS Build configuration
└── package.jsonWeb App Structure
The web app uses Next.js App Router with a clear separation between public and protected routes.
web/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── (auth)/ # Public auth pages
│ │ │ ├── login/
│ │ │ ├── register/
│ │ │ └── forgot-password/
│ │ ├── (app)/ # Protected app pages
│ │ │ ├── dashboard/
│ │ │ └── settings/
│ │ ├── auth/ # OAuth callback routes
│ │ │ └── callback/
│ │ ├── globals.css # Global styles with dark mode
│ │ ├── layout.tsx # Root layout with providers
│ │ └── page.tsx # Home page
│ ├── components/
│ │ ├── ui/ # shadcn/ui base components
│ │ ├── auth/ # Auth forms and buttons
│ │ ├── settings/ # Settings page components
│ │ └── providers/ # React context providers
│ ├── lib/
│ │ ├── auth/ # Auth utilities and server actions
│ │ └── utils.ts # Helper functions
│ └── store/ # Zustand state stores
├── public/ # Static assets
├── tailwind.config.ts # Tailwind configuration
├── next.config.ts # Next.js configuration
└── package.jsonRoute Groups
The (auth) and (app) folders are Next.js route groups. They organize routes without
affecting the URL structure. (auth) routes are public, while (app) routes require authentication.
Backend Structure
The backend follows a clean architecture with separate layers for controllers, domain logic, and infrastructure.
backend/
├── controllers/
│ ├── rest-api/ # Fastify REST API
│ │ ├── server.ts # Server setup
│ │ ├── index.ts # Entry point
│ │ ├── plugins/ # Fastify plugins
│ │ │ ├── auth.ts # JWT authentication
│ │ │ ├── config.ts # Configuration
│ │ │ └── error-handler.ts
│ │ └── routes/ # API route handlers
│ │ ├── auth.ts
│ │ └── sessions.ts
│ └── event-queue/ # BullMQ workers (if enabled)
│ ├── index.ts
│ └── workers/
├── domain/ # Business logic
│ ├── auth/
│ │ ├── schema.ts # Zod validation schemas
│ │ └── repository.ts # Data access
│ ├── user/
│ └── session/
├── prisma/
│ └── schema.prisma # Database schema
├── utils/ # Shared utilities
│ ├── jwt.ts
│ ├── errors.ts
│ └── db.ts
├── Dockerfile
└── package.jsonConditional Files
Some directories and files are only generated based on your selected features
and integrations. For example, (onboarding)/ is only created if
onboarding is enabled, and event-queue/ only appears if the event
queue is enabled.