Quick Start
Create and run a BowlerKit Expo project with the Account or Guest profile.
This guide assumes you have completed the prerequisites and installed the BowlerKit CLI.
The CLI creates a configured project from the licensed distribution. Do not clone the private BowlerKit repository.
Create the project
Run the CLI
bowler create my-expo-appSelect Expo, then choose Account or Guest when prompted. The CLI asks whether it should install dependencies after extraction.
Prepare the mobile app
cd my-expo-app/mobile-app
cp .env.example .env
pnpm install
pnpm startFor Android, press a in the Expo terminal or run pnpm android. For iOS, run pnpm ios on macOS. Account projects should set EXPO_PUBLIC_API_URL to the reachable Laravel/gateway host root; the client adds /api/v1 itself. Guest projects do not need an API URL.
Account profile setup
Choose this profile when the app needs sign-in, cloud data, uploads, or server-managed notifications.
1. Configure Laravel
cd my-expo-app/admin-panel
cp .env.example .env
composer install
npm install
php artisan key:generateSet the PostgreSQL, Redis, mail, Firebase, and RevenueCat values in .env. The default template uses PostgreSQL; SQLite is not the configured default.
2. Migrate and seed local data
php artisan migrate --seed
php artisan serveThe development seeder creates [email protected] / superapp and [email protected] / user. Treat these as local-only credentials and replace or remove them before production.
The Laravel admin panel is available at http://localhost:8000/admin. It also serves the Account profile's public landing page and SEO surface at / plus the built-in theme routes; customize those in admin-panel/resources/js/Pages/Home.tsx and the theme files. Laravel owns authentication, Sanctum token issuance, migrations, uploads, webhooks, and destructive account operations.
3. Start the Go API when needed
cd ../api-backend
cp .env.example .env
# Match the shared PostgreSQL and Redis settings used by Laravel.
go mod download
go run ./cmd/apiThe Go service validates Laravel Sanctum tokens and serves the protected mobile resource routes. It shares Laravel's database; it does not issue tokens or run migrations. Start Laravel first, then place the Go service behind the production gateway when you are ready to use it.
Guest profile setup
Guest projects are local-first and do not include admin-panel/ or api-backend/. They include the standalone landing-page/ app for marketing, legal pages, and SEO.
- Account routes and remote API work are runtime-gated.
- Local settings, local notifications, static help/about content, Paywall/RevenueCat, and AdMob remain available.
- Store purchase and restore operations still require internet access.
- Optional dependency and route removal is documented in the generated
docs/AI-GUEST-CLEANUP.md.
Verify the app
- Launch the mobile app.
- For Account, register or sign in and confirm the profile loads from
/api/v1/app/me. - For Guest, confirm the app opens without a login or backend connection.
- If you use the Go service, verify
/healthand/api/v1/healthbefore routing mobile traffic to it.
What's next?
Project Structure
Understand the generated folders and profile manifest.
Features Overview
Review the runtime features and their Account/Guest behavior.
Customization Guide
Customize themes, tokens, and app branding.
Troubleshooting
Connection refused
- Android emulator: use
http://10.0.2.2:8000for a Laravel server running on the host. - iOS simulator:
http://127.0.0.1:8000usually works. - Physical device: use the host computer's LAN IP and allow the port through the firewall.
- Do not append
/api/v1toEXPO_PUBLIC_API_URL.
Database or cache errors
Check the Laravel .env PostgreSQL and Redis values, then run:
php artisan migrate:fresh --seedThis resets the local database. Never run it against production data.
Metro cache issues
pnpm start -- --clear