⏱️ Time saved: 200+ hours (even more with AI assistance!)
A premium Flutter starter kit implementing MVVM architecture with Riverpod state management and Supabase backend. This template provides a solid foundation for developing your own business management solution with features like sales tracking, customer management, and PDF invoice generator.
💰 One-time purchase: $39 USD
Buy Now & Start Building!
Get instant access to the BEH App Starter Kit by purchasing through Buy Me a Coffee and don’t forget to use the coupon code for discount price! 😎
✅ Pre-configured flutter_screenutil, gap, go_router, shorebird_code_push and more
✅ Custom theme with light/dark mode support
🗃️ Database Resources
✅ Ready-to-import SQL schema files:
roles.sql - Database role definitions
schema.sql - Complete table structure and relationships
🧩 Feature Modules
✅ Sales Management system with detailed tracking
✅ Purchase Recording with product breakdowns
✅ Customer Database with balances and history
✅ PDF Invoice Generator with Bangla text support
✅ Multi-language Support (English & Bangla)
🎓 Learning Resources
✅ Video tutorials for setup and configuration
✅ Comprehensive README with step-by-step guides
💯 Why Choose This Kit?
Save weeks of development time with a production-ready foundation built following best practices. Perfect for developers looking to quickly launch professional business management apps.
⏱️ Time Savings Breakdown:
Architecture Setup: 40-60 hours saved
UI Components & Theming: 30-40 hours saved
Authentication System: 20-30 hours saved
Feature Implementation: 80-100 hours saved
Database Schema: 20-30 hours saved
Testing & Debugging: 30-40 hours saved
Total: 200+ hours (4-6 weeks) of development time saved!
With AI Assistance: Reduce remaining customization time by up to 70%
This starter kit follows the Model-View-ViewModel (MVVM) architecture pattern:
Model: Represents the data and business logic of the application
View: UI components that display data and send user actions to the ViewModel
ViewModel: Manages UI state and connects the View with the Model
2.1. Key architectural principles:
Separation of Concerns: Each layer has a specific responsibility
Testability: Business logic is separated from UI for easier testing
Maintainability: Modular architecture makes code easier to maintain
Reusability: Components can be reused across different parts of the app
3. Tech Stack
Framework: Flutter for cross-platform mobile development
State Management: Riverpod with code generator
Architecture: MVVM (Model-View-ViewModel)
Backend: Supabase for database, authentication, and real-time updates
PDF Generator: Flutter PDF library with Bangla text support
Language Support: Easy Localization for multiple languages
Routing: Go Router for declarative routing
UI Components: Custom responsive widgets with Flutter ScreenUtil
4. Core Dependencies
flutter_riverpod & riverpod_annotation: Reactive state management
supabase_flutter: Backend services, auth, and real-time database
pdf: PDF document generator
bijoy_helper: Bangla text support for PDF generator
easy_localization: Internationalization and multiple language support
go_router: Navigation and routing
flutter_screenutil: Responsive UI scaling
envied: Secure environment variable management
freezed: Immutable state models
intl: Date formatting and localization
share_plus: Sharing PDFs and reports
5. Project Structure
bash
1lib/
2├── constants/ # App constants and configurations3├── environment/ # Environment configuration for dev/prod4├── extensions/ # Extension methods and custom extensions5├── features/ # Feature modules6│ ├── about/ # About screen and information7│ ├── authentication/ # Login, registration and auth services8│ ├── buy/ # Purchase management module9│ ├── common/ # Shared UI components and widgets10│ ├── customer/ # Customer management 11│ ├── home/ # Home dashboard and analytics12│ ├── home_layout/ # Main app layout and navigation13│ ├── onboarding/ # User onboarding flows14│ ├── pdf_generator/ # Invoice and document generator15│ ├── profile/ # User profile management16├── icons/ # Custom icon definitions17├── routing/ # Route configurations and navigation18├── theme/ # Theme configurations and styling19├── translations/ # Localization files and translations20└── utils/ # Utility functions and helpers
6. Code Organization
Each feature module follows this structure:
bash
1feature_name/
2├── model/ # Data models for the feature3├── repository/ # Data sources and repositories4└── ui/ # UI components5 ├── view_models/ # Riverpod providers and state management6 ├── state/ # State classes for the feature7 ├── widgets/ # Reusable UI components specific to the feature8 └── *_screen.dart # Screen widgets
This structure follows the MVVM pattern where:
Models (M): Defined in the model/ directory
Views (V): Implemented in UI screens and widgets
ViewModels (VM): Located in the ui/view_models/ directory to connect models with views
Get the new database connection string from your Supabase project:
Go to your project dashboard
Click on "Project Settings" > "Database"
Click the "Connection string" button and select "URI"
Copy the connection string (will look like
postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@aws-0-us-east-1.pooler.supabase.com:5432/postgres)
Replace [YOUR-PASSWORD] with your database password
Restore the database using the provided SQL files:
bash
1# Restore the database (using the files provided with your purchase in the database directory)2psql --single-transaction --variable ON_ERROR_STOP=1 --file roles.sql --file schema.sql --command "SET session_replication_role = replica" --dbname [CONNECTION_STRING]
Right-click on "Servers" in the pgAdmin browser and select "Register" > "Server..."
In the "General" tab, name your server (e.g., "BEH Supabase")
In the "Connection" tab:
Enter the Host name/address from your Supabase connection string
Enter "5432" as the port
Enter "postgres" as the maintenance database
Enter "postgres" as the username
Enter your database password
In the "SSL" tab:
Set "SSL mode" to "Require"
Download your SSL certificate from the Supabase Dashboard's Database Settings
Set the "Root certificate" field to the path of the downloaded certificate
For comparing and synchronizing schema changes between development and production:
Right-click on your database in pgAdmin
Select "Compare" > "Schema Comparison"
Select your source and target databases
Select the schemas to compare
Click "Compare" to see the differences
Click "Generate Script" to create a SQL script of the changes
Review and run the script on your target database
8. Deployment Guide
8.1. Code Generation and Cleanup
Before building for production, clean up generated files and regenerate them:
8.1.1. For Windows (PowerShell)
bash
1# Remove all generated files2Get-ChildItem -Path .\lib -Recurse -Include *.freezed.dart,*.g.dart | Remove-Item -Force
34# Clean the project5flutter clean
67# Get dependencies8flutter pub get
910# Clean and regenerate code11dart run build_runner clean
12dart run build_runner build --delete-conflicting-outputs
8.1.2. For Mac/Linux (Bash/Shell)
bash
1# Remove all generated files2find lib -name "*.freezed.dart" -o -name "*.g.dart"|xargsrm -f
34# Clean the project5flutter clean
67# Get dependencies8flutter pub get
910# Clean and regenerate code11dart run build_runner clean
12dart run build_runner build --delete-conflicting-outputs
Configure signing in android/app/build.gradle.kts:
kotlin
1// Add this at the top of the file, before the android block
2val keystorePropertiesFile = rootProject.file("key.properties")
3val keystoreProperties = java.util.Properties()
4keystoreProperties.load(java.io.FileInputStream(keystorePropertiesFile))
56android {
7 // Existing configuration...
89 signingConfigs {
10 create("release") {
11 keyAlias = keystoreProperties["keyAlias"] as String
12 keyPassword = keystoreProperties["keyPassword"] as String
13 storeFile = file(keystoreProperties["storeFile"] as String)
14 storePassword = keystoreProperties["storePassword"] as String
15 }
16 }
1718 buildTypes {
19 release {
20 // Update this line to use release signing config
21 signingConfig = signingConfigs.getByName("release")
22 // Other release settings like minifyEnabled, etc.
23 }
24 }
25}
When you purchase the BEH App Starter Kit, you'll receive a ZIP file containing:
14.1. Source Code and Assets
Complete Flutter project with all source code
Pre-configured Android and iOS configurations
Asset files including images, icons, and animations
Theme configuration files
14.2. Database Files
SQL schema files (located in the database directory):
roles.sql: Database role definitions
schema.sql: Complete database structure with tables and relationships
14.3. Video Tutorials
Setup screencasts in the video directory
Database configuration tutorials
User interface walkthrough video
14.4. Support Resources
Access to future updates and improvements
Troubleshooting guides
15. Video Setup Instructions
For detailed visual guidance on setting up and using this starter kit, please refer to the video screenrecords in the video folder. These recordings provide step-by-step instructions on:
Supabase configuration and database setup
Flutter project configuration
Environment setup and API key integration
Running the application for the first time
Watch these instructional video for a comprehensive visual guide to get your application up and running quickly.
16. Getting Started for Non-Technical Users
If you're new to app development, this section will help you understand what you need to get started with this kit.
16.1. What You Need to Learn
Basic Flutter Concepts: Understanding how Flutter works, including widgets and basic UI building
By combining this starter kit with an AI code editor, you can:
Reduce the Learning Curve: Get explanations of complex code patterns in simple terms
Accelerate Development: Complete in days what might take weeks for a beginner
Experience "Vibe Coding": Enjoy a more intuitive, conversation-based coding experience
Gain Confidence: Make changes with the safety net of AI assistance
Learn Faster: Understand best practices through AI explanations rather than trial and error
This combination creates a powerful environment where even non-technical users can successfully modify and extend the application with minimal frustration.
16.4. Simple Steps to Begin
Learn the basics: Spend time with the learning resources mentioned above
Set up your development environment: Install Flutter and a code editor
Watch the setup videos: In the videos folder for visual guidance
Follow the setup instructions: In the "Getting Started After Purchase" section
Experiment with small changes: Start by making minor UI modifications
Join Flutter communities: For help when you get stuck (Flutter Discord, Stack Overflow)
Remember, app development is a learning journey. Start with small changes, gradually increase complexity, and don't hesitate to use the provided example code as a reference.
17. What You'll Learn from This Project
By studying and working with this starter kit, you'll gain valuable experience and knowledge in:
Production-Grade Flutter Architecture: Understand how to structure large Flutter applications using MVVM architecture with clear separation of concerns.
Advanced State Management: Master Riverpod's powerful state management techniques including providers, state notifiers, and code generator.
Backend Integration Best Practices: Learn how to properly connect Flutter apps to Supabase backend services, including authentication, database operations, and real-time updates.
PDF Generator and Document Processing: Explore techniques for creating professional documents directly from your app, with support for complex text including Bangla characters.
Proper Error Handling: See examples of robust error handling patterns that improve app stability and user experience.
Multi-Language Support: Understand internationalization implementation for supporting multiple languages in your app.
Theme Management: Learn techniques for implementing and switching between light and dark themes while maintaining a consistent design language.
Responsive UI Design: Gain insights into building interfaces that work across different screen sizes and orientations.
Data Modeling Techniques: See how to create efficient, type-safe data models with Freezed for serialization and immutability.
Professional App Organization: Experience a well-structured project that follows industry best practices for maintainability and scalability.
These skills are highly transferable to other Flutter projects and will significantly improve your capabilities as a mobile app developer, regardless of your starting point.
18. Developed By
SpeedOut Source - A digital product studio specializing in Flutter development and business solutions.