PetFolio is a feature-rich, social-commerce platform built specifically for pet owners — combining an Instagram-style social network, a Tinder-style pet discovery/matching service (for breeding and playdates), a comprehensive health and daily care tracker, and an e-commerce marketplace for pet products.
- Flutter 3.11.5+ / Dart 3.11.5+
- Android or iOS development tools
Three variables must be provided at build/run time via --dart-define. The app will throw a descriptive error on startup if any are missing — there are no hardcoded fallback values.
| Variable | Description |
|---|---|
SUPABASE_URL |
Your Supabase project URL |
SUPABASE_ANON_KEY |
Your Supabase anonymous (public) API key |
STRIPE_PUBLISHABLE_KEY |
Your Stripe publishable key (pk_test_… or pk_live_…) |
flutter run \
--dart-define=SUPABASE_URL=https://<project-ref>.supabase.co \
--dart-define=SUPABASE_ANON_KEY=<anon-key> \
--dart-define=STRIPE_PUBLISHABLE_KEY=pk_test_<key>Create a .env file at the project root (already in .gitignore):
SUPABASE_URL=https://<project-ref>.supabase.co
SUPABASE_ANON_KEY=<anon-key>
STRIPE_PUBLISHABLE_KEY=pk_test_<key>
Then run:
flutter run --dart-define-from-file=.env
--dart-define-from-filerequires Dart 2.19+.
# Install dependencies
flutter pub get
# Regenerate Freezed / JsonSerializable code
flutter pub run build_runner build --delete-conflicting-outputs
# Watch mode (auto-regenerate on save)
flutter pub run build_runner watch
# Static analysis
flutter analyze
# Run tests
flutter test
# Debug APK
flutter build apk --debug --dart-define-from-file=.env
# Release APK
flutter build apk --release --dart-define-from-file=.envFeature-first structure under lib/features/. Core shared code in lib/core/. See CLAUDE.md and docs/ for full architecture, schema, and implementation status.
Flutter 3.44 introduced built-in Kotlin support in AGP, deprecating the explicit id("kotlin-android") + kotlinOptions {} pattern. The app and several plugins need to migrate before AGP 9.0 enforces the change.
Current workaround — android/gradle.properties holds two compat flags added by the Flutter migrator:
android.builtInKotlin=false
android.newDsl=falseThese suppress build failures today but will be removed in a future Flutter release.
Blocked on these plugins releasing KGP-migrated versions:
| Plugin | Status |
|---|---|
image_picker_android |
Awaiting upstream release |
shared_preferences_android |
Awaiting upstream release |
url_launcher_android |
Awaiting upstream release |
share_plus |
Awaiting upstream release |
stripe_android |
Awaiting upstream release |
Migration steps (do all at once, after all plugins above are updated):
flutter pub upgrade— pull in the migrated plugin versions- In
android/app/build.gradle.kts:- Remove
id("kotlin-android")from theplugins {}block - Replace
kotlinOptions { jvmTarget = ... }insideandroid {}with:kotlin { compilerOptions { jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 } }
- Remove
- In
android/gradle.properties, delete (or flip totrue) both compat flags:android.builtInKotlin=true android.newDsl=true
- Run
flutter build apk --debugto confirm a clean build.