Skip to main content
Shipnative is a monorepo - one repository with multiple apps and shared packages. Here’s how it’s organized.

What You Cloned

When you run git clone https://github.com/shipnativeapp/shipnative.git, you get this structure:
This is what matters to you as a Shipnative customer. Everything else you might see in external documentation or development setups is for Shipnative’s internal development and maintenance.

The Two Main Apps

Mobile App (apps/app/)

Your primary React Native application. This is where you’ll spend most of your time building features.
Key folders to know:
Pre-built components like Button, Card, TextField, etc. Use these instead of building from scratch.
Native auth hooks for each backend, plus a unified hook.
Zustand stores for app-wide state like subscriptions and preferences.
Service clients for Supabase, RevenueCat, PostHog, etc. Automatically uses mocks when API keys are missing.
Unistyles theme with colors, spacing, typography. Always use theme values instead of hardcoding.

Convex Backend (convex/)

If using Convex, your backend functions live at the root level:

Marketing Page (apps/web/)

A Vite + React application for your app’s marketing/landing page.

Documentation Files

The root directory contains markdown documentation for developers:

The AI Documentation System (Layered Context)

Shipnative uses a Layered Context architecture. This ensures that AI agents get the right amount of information at the right time, minimizing “token waste.”

1. Discovery Layer (AGENTS.md)

Follows the AGENTS.md standard. These are “Front Desk” files that agents read first to understand the directory structure and constraints.
  • Root: shipnative/AGENTS.md
  • Mobile: apps/app/AGENTS.md
  • Web: apps/web/AGENTS.md

2. Specification Layer (vibe/ folders)

These are the “Brain” of the project, containing deep-dive technical specs.
  • App Logic: apps/app/vibe/ (Styling, Architecture, Screen Templates)
  • Infrastructure: vibe/ (Service architecture, Mock mode, Convex patterns)

3. Tech Stack Rules (in AGENTS.md)

The root AGENTS.md contains the tech stack rules (e.g., “Always use Unistyles”) that agents must follow.

Configuration Files

Root Level

  • package.json - Monorepo dependencies and scripts
  • turbo.json - Turborepo build configuration
  • tsconfig.json - TypeScript configuration
  • AGENTS.md - AI context (tech stack, directory map)
  • .cursorrules - Points to AGENTS.md

App Level (apps/app/)

  • app.json - Expo configuration (app name, bundle ID, etc.)
  • .env - Environment variables (API keys, backend provider)
  • package.json - App-specific dependencies
  • tsconfig.json - TypeScript configuration

Convex Level (convex/)

  • schema.ts - Convex database schema
  • auth.ts - Auth configuration

How the Monorepo Works

Turborepo manages the monorepo. When you run commands from the root:
Each app can also be run independently:

Where to Start

For Vibecoders

Start in apps/app/app/ - build screens and components. Let AI help you!

For Explorers

Browse apps/app/app/components/ to see what’s available, then check apps/app/app/screens/ for screen examples.

Finding What You Need

Add it to apps/app/app/screens/. Then register it in apps/app/app/navigators/AppNavigator.tsx or MainTabNavigator.tsx:
  • For main flow screens: Add to AppNavigator.tsx
  • For tab screens: Add to MainTabNavigator.tsx
  • Example: apps/app/app/screens/ProfileScreen.tsx
Add it to apps/app/app/components/. Export it from apps/app/app/components/index.ts so others can import it easily.
Create a Zustand store in apps/app/app/stores/. Follow the pattern in existing stores like subscriptionStore.ts.
Edit apps/app/app/theme/unistyles.ts. This file defines colors, spacing, typography, shadows, and all design tokens.
Supabase: Use the Supabase client in apps/app/app/services/supabase.ts or create Edge Functions.Convex: Add functions to convex/. Create queries, mutations, and actions as needed.
Supabase: Check apps/app/app/hooks/supabase.ts for the useSupabaseAuth hook.Convex: Check apps/app/app/hooks/convex.ts for the useConvexAuth hook.Backend-agnostic: Use apps/app/app/hooks/useAppAuth.ts for components that work with either backend.

Next Steps

Start Vibecoding

Use AI to build features

Explore Components

See what’s available

Understand Services

Learn about mock mode

Configure Backend

Set up Supabase or Convex