ApparenceKit is a comprehensive Flutter template designed to accelerate mobile app development. After making apps for 6+ years, the creator developed this tool to eliminate repetitive tasks that make up about 30% of app codebases.
Key Offerings:
AI Integration: Custom AI agent cursor rules for 10x more productive Flutter development
Authentication: Ready-to-use auth pages with Firebase or Supabase integration, plus REST API support and social logins
Monetization: In-app subscription setup with RevenueCat integration, multiple paywall templates, and subscription management
Notifications: Complete Firebase notification system with notification history page and foreground notification handling
Onboarding: Feature showcase, user questions, permission explanations, and strategic paywall placement
Architecture: Scalable, clean architecture with Riverpod state management, 100% unit tested, and CI/CD templates
ApparenceKit is trusted by over 250 developers and companies, with several successful apps reaching thousands of users daily.
A fully customizable starter kit to seamlessly launch responsive Android, iOS, and Web apps with Flutter powered by Firebase and Vertex AI.
Dart
Custom UI
Material
Firestore
Lemon Squeezy
RevenueCat
Firebase
Flutter
Features:
AI
Analytics
Auth
Backend
CRUD
Feedback
i18n
+11 more
Frequently Asked Questions
Dart
What makes Dart ideal for SaaS development?
Dart excels in SaaS development due to its robust ecosystem, strong typing capabilities, and excellent library support. Dart boilerplates leverage language-specific features to provide type-safe database queries, efficient API routing, and optimized runtime performance. The language's maturity means you get battle-tested packages for authentication, payment processing, and background jobs that integrate seamlessly.
Flutter
What Flutter-specific architecture patterns are implemented?
Flutter boilerplates leverage the framework's native architecture patterns including its routing system, middleware pipeline, and controller/handler structure. They implement Flutter's conventions for separating concerns, dependency injection, and service layer patterns. The codebase follows Flutter's best practices for organizing models, views/components, and business logic to ensure maintainability as your application grows.
Riverpod
What Riverpod-specific architecture patterns are implemented?
Riverpod boilerplates leverage the framework's native architecture patterns including its routing system, middleware pipeline, and controller/handler structure. They implement Riverpod's conventions for separating concerns, dependency injection, and service layer patterns. The codebase follows Riverpod's best practices for organizing models, views/components, and business logic to ensure maintainability as your application grows.
Flutter
What Flutter-specific component architecture is used?
Flutter boilerplates follow the framework's component composition patterns with reusable, atomic design components. They implement Flutter's best practices for component structure, props handling, event management, and lifecycle methods. The component library includes authentication flows, dashboards, data tables, forms with validation, and navigation—all built with Flutter's native features like hooks (React), composition API (Vue), or directives (Angular).
Firestore
What Firestore-specific features are leveraged in these boilerplates?
Firestore boilerplates utilize the database's native capabilities including its transaction model (ACID for SQL, eventual consistency for NoSQL), indexing strategies (B-tree, GiST, full-text search), and advanced features like JSON columns, array types, window functions, or document queries. The schema design takes advantage of Firestore's strengths—whether that's PostgreSQL's JSONB, MySQL's full-text search, MongoDB's aggregation pipeline, or Redis's data structures.
Supabase
What Supabase-specific features are leveraged in these boilerplates?
Supabase boilerplates utilize the database's native capabilities including its transaction model (ACID for SQL, eventual consistency for NoSQL), indexing strategies (B-tree, GiST, full-text search), and advanced features like JSON columns, array types, window functions, or document queries. The schema design takes advantage of Supabase's strengths—whether that's PostgreSQL's JSONB, MySQL's full-text search, MongoDB's aggregation pipeline, or Redis's data structures.
RevenueCat
What RevenueCat API features are implemented?
RevenueCat boilerplates implement the provider's complete API suite including checkout sessions, subscription lifecycle management, customer portal, webhook event handling, and invoice generation. They use RevenueCat's latest API version with proper error handling, idempotency keys, and retry logic. The integration includes RevenueCat-specific features like payment intents, setup intents, subscription schedules, and tax calculation APIs.
Dart
What Dart-specific tools and libraries are included?
Dart boilerplates include the language's most popular and production-proven tools. This typically includes testing frameworks, linters, formatters, build tools, and package managers specific to Dart. You'll get pre-configured toolchains that enforce best practices, automated testing pipelines, and development environments optimized for Dart development workflows.
Flutter
How does Flutter's ORM/database layer work in these boilerplates?
Flutter boilerplates use the framework's native ORM or query builder (Prisma, Eloquent, Active Record, SQLAlchemy, etc.) with pre-configured models for users, subscriptions, teams, and common SaaS entities. They include optimized queries, relationships, migrations, seeders, and database connection pooling. The implementation leverages Flutter's specific features like eager loading, query scopes, and transaction handling for performance.
Riverpod
How does Riverpod's ORM/database layer work in these boilerplates?
Riverpod boilerplates use the framework's native ORM or query builder (Prisma, Eloquent, Active Record, SQLAlchemy, etc.) with pre-configured models for users, subscriptions, teams, and common SaaS entities. They include optimized queries, relationships, migrations, seeders, and database connection pooling. The implementation leverages Riverpod's specific features like eager loading, query scopes, and transaction handling for performance.
Flutter
How is state management handled in Flutter boilerplates?
Flutter boilerplates use the framework's recommended state management approach—whether that's React Context + hooks, Redux Toolkit, Zustand, Pinia (Vue), NgRx (Angular), or Svelte stores. They include pre-configured state slices for authentication, user data, subscriptions, and UI state with proper TypeScript typing. The implementation follows Flutter's patterns for global state, local component state, and server state synchronization.
Firestore
How is the Firestore schema designed for SaaS applications?
Firestore boilerplates include production-tested schemas for multi-tenancy, user management, subscriptions, and billing. The design follows Firestore's best practices for data modeling—whether that's normalized tables with foreign keys (SQL), embedded documents vs. references (MongoDB), or partition key strategies (DynamoDB). Schemas include proper constraints, default values, and relationship management optimized for Firestore's query engine.
Supabase
How is the Supabase schema designed for SaaS applications?
Supabase boilerplates include production-tested schemas for multi-tenancy, user management, subscriptions, and billing. The design follows Supabase's best practices for data modeling—whether that's normalized tables with foreign keys (SQL), embedded documents vs. references (MongoDB), or partition key strategies (DynamoDB). Schemas include proper constraints, default values, and relationship management optimized for Supabase's query engine.
RevenueCat
How are RevenueCat webhooks handled securely?
RevenueCat webhooks are verified using the provider's signature validation to prevent spoofing attacks. The boilerplate includes webhook endpoints with proper RevenueCat signature verification, event type filtering, and idempotent event processing to handle duplicate deliveries. Events are processed asynchronously with retry logic, and the implementation handles RevenueCat's specific webhook events like subscription updates, payment failures, and customer changes.