BowlerKitBowlerKit

Quick Start

10/11/2026

Create and run a BowlerKit Flutter project with the Account or Guest profile.

This guide assumes the prerequisites are installed and the BowlerKit CLI is available.

The CLI creates a configured project from the licensed distribution. You do not clone the private repository.

Create the project

Run the CLI

bowler create my-flutter-app

Select Flutter, then choose Account or Guest. The CLI asks whether it should install dependencies after extraction.

Prepare the mobile app

cd my-flutter-app/mobile-app
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter run

Use flutter run -d <device> to select a target. Account projects point lib/config/app_env.dart (API_BASE_URL) at a reachable Laravel/gateway host root; Endpoints.buildApiPath adds /api/v1. Guest projects do not need a backend URL.

Account profile setup

1. Configure Laravel

cd my-flutter-app/admin-panel
cp .env.example .env
composer install
npm install
php artisan key:generate

Set PostgreSQL, Redis, mail, Firebase, and RevenueCat values. The template's .env.example uses PostgreSQL—not SQLite—as the default database contract.

2. Migrate and seed

php artisan migrate --seed
php artisan serve

Local seed fixtures:

Use these only for local development and replace/remove them before production. The Filament panel is at http://localhost:8000/admin. The same admin-panel also serves the Account profile's public landing page and SEO surface at / plus the built-in theme routes; customize resources/js/Pages/Home.tsx and the theme files.

3. Start Go when needed

cd ../api-backend
cp .env.example .env
# Match Laravel's DB_*, REDIS_*, and rate-limit namespace.
go mod download
go run ./cmd/api

Go validates Laravel Sanctum tokens and serves protected /api/v1/app/* resources. It does not issue tokens, run migrations, own uploads/webhooks, or handle destructive account operations.

Guest profile setup

Guest archives omit admin-panel/ and api-backend/, but include the standalone landing-page/ app for marketing, legal pages, and SEO.

  • Account routes and network work are blocked by isGuestLocal.
  • Local settings, local notifications, static help/about, Paywall/RevenueCat, and AdMob remain.
  • Store purchases and restore can still require internet access.
  • Optional deep cleanup is documented in generated docs/AI-GUEST-CLEANUP.md.

Verify

  1. Launch the Flutter app.
  2. Account: register/sign in and confirm the user loads from /api/v1/app/me.
  3. Guest: confirm the app opens without login or a backend.
  4. If Go is enabled, check /health and /api/v1/health before routing mobile traffic to it.

Troubleshooting

Connection refused

  • Android emulator: http://10.0.2.2:8000 for Laravel.
  • iOS simulator: http://127.0.0.1:8000 or http://localhost:8000.
  • Physical device: your computer's LAN IP.

Do not put /api/v1 in the API_BASE_URL host root.

Code generation

dart run build_runner clean
dart run build_runner build --delete-conflicting-outputs

Database reset

cd admin-panel
php artisan migrate:fresh --seed

Only run this against a disposable local database.