-
Flutter SDK (3.0.0 or higher)
- Download from flutter.dev
- Add Flutter to your PATH
-
Development Tools
- Android Studio or VS Code with Flutter extensions
- Xcode (for iOS development on macOS)
- Git
-
Accounts Required
- Supabase Account
- Plaid Account (for banking integration)
- Google Play Console (for Android deployment)
- Apple Developer Account (for iOS deployment)
- Go to app.supabase.com
- Click "New Project"
- Fill in:
- Organization: Select or create
- Project name: "Vayne Budget Manager"
- Database Password: Generate a strong password
- Region: Choose closest to your users
- Pricing Plan: Free tier is fine for development
- Go to SQL Editor in your Supabase dashboard
- Copy the entire SQL schema from
vayne_database_schema.sql - Run the schema to create all tables, indexes, and policies
- Go to Authentication → Settings
- Enable Email Auth
- Configure email templates:
- Confirmation Email
- Password Reset Email
- Set Site URL to your app's deep link URL
- Go to Settings → API
- Copy:
- Project URL (SUPABASE_URL)
- Anon/Public Key (SUPABASE_ANON_KEY)
- Sign up at dashboard.plaid.com
- Create a new app in the dashboard
- For development, use Sandbox environment
- In Plaid Dashboard, configure:
- Products: Enable "Transactions"
- Countries: United States (or your target countries)
- Redirect URIs: Add your app's deep link
- Copy from dashboard:
- Client ID (PLAID_CLIENT_ID)
- Sandbox Secret (PLAID_SECRET)
# Create project directory
mkdir vayne_budget_manager
cd vayne_budget_manager
# Initialize Flutter project
flutter create . --org com.yourcompany --project-name vayne
# Copy all the provided code files to their respective locations- Create
.envfile in project root:
SUPABASE_URL=your_supabase_project_url
SUPABASE_ANON_KEY=your_supabase_anon_key
PLAID_CLIENT_ID=your_plaid_client_id
PLAID_SECRET=your_plaid_secret_key
PLAID_ENV=sandbox- Add
.envto.gitignore:
.env
.env.*flutter pub get-
Update
android/app/build.gradle:- Set
minSdkVersionto 21 - Configure signing for release builds
- Set
-
Add internet permission in
android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>- Configure Plaid for Android:
- Add Plaid repository to
android/build.gradle - Configure ProGuard rules if using minification
- Add Plaid repository to
-
Update
ios/Runner/Info.plist:- Add required permissions
- Configure URL schemes for deep linking
-
Run in iOS folder:
cd ios
pod install- Configure signing in Xcode:
- Open
ios/Runner.xcworkspace - Select your team
- Configure bundle identifier
- Open
- Never commit
.envfiles - For production, use:
- Environment variables on CI/CD
- Secret management services
- Platform-specific secure storage
For production apps, implement certificate pinning for Supabase and Plaid connections.
# For Android
flutter run
# For iOS (macOS only)
flutter run -d ios
# For Web (limited functionality)
flutter run -d chrome-
Authentication Flow
- Sign up with email
- Sign in
- Password reset
-
Budget Management
- Create budgets
- View budget progress
- Edit/Delete budgets
-
Transaction Tracking
- Add manual transactions
- Categorize transactions
- View transaction history
-
Banking Integration
- Connect Plaid account (Sandbox)
- Sync transactions
- View account balances
- Generate keystore:
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload-
Configure signing in
android/key.properties -
Build APK:
flutter build apk --release- Build App Bundle:
flutter build appbundle --release-
Configure in Xcode:
- Set deployment target
- Configure app capabilities
- Set up provisioning profiles
-
Build:
flutter build ios --release- Archive and upload via Xcode
-
Create app in Google Play Console
-
Upload App Bundle
-
Fill in store listing:
- App description
- Screenshots
- Privacy policy
- Content rating
-
Submit for review
-
Create app in App Store Connect
-
Upload build via Xcode
-
Fill in app information:
- App description
- Screenshots
- Privacy policy
- Age rating
-
Submit for review
- Set up crash reporting (Firebase Crashlytics)
- Monitor Supabase usage
- Track Plaid API usage
- Keep dependencies updated
- Monitor security advisories
- Respond to user feedback
-
Build Errors
- Clean build:
flutter clean - Update dependencies:
flutter pub upgrade - Check Flutter doctor:
flutter doctor
- Clean build:
-
Supabase Connection Issues
- Verify API keys
- Check RLS policies
- Monitor Supabase logs
-
Plaid Integration Issues
- Verify environment (sandbox/production)
- Check redirect URIs
- Monitor webhook events
- Flutter Documentation: flutter.dev/docs
- Supabase Documentation: supabase.com/docs
- Plaid Documentation: plaid.com/docs
- Environment variables secured
- API keys rotated from development
- Database backups configured
- Error tracking implemented
- Performance monitoring active
- Privacy policy published
- Terms of service published
- GDPR compliance (if applicable)
- App store assets prepared
- Release notes written