A production-ready Flutter starter app template with authentication, Firebase services, testing, and multi-platform support.
first_app is a Flutter starter template that bundles essential production features like authentication, Firebase services, testing, and multi-platform support into a single, well-architected codebase. It solves the problem of transitioning from simple demo apps to real-world applications by demonstrating how to integrate and structure complex functionalities.
Flutter developers and teams building production mobile or web applications who need a reference architecture for authentication, state management, testing, and third-party service integration.
Developers choose this starter app because it provides a battle-tested, opinionated structure that emphasizes separation of concerns, testing, and real-world integrations, saving time and reducing risk compared to assembling these features from scratch.
Starter app for Flutter that includes many different production app features; some not typically included in demo apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Bundles OAuth2 authentication for Google and GitHub, Firebase Analytics, Crashlytics, and Cloud Messaging with secure token storage and push notification handling, as detailed in the auth and Firebase setup sections.
Supports iOS, Android, and web from a single codebase, including platform-specific configurations for web deployment and native features like location tracking using the geolocator plugin.
Emphasizes separation of concerns with business logic in models/providers and UI in separate folders, using Provider for state management to support maintainability and clear abstractions.
Includes unit, widget, and integration tests with mocking examples using mockito, and the README provides guidance on running integration tests with Flutter 2 changes.
firebase_crashlytics does not support web, and GitHub authentication is disabled on web due to security constraints, as noted in the known issues and web support sections.
Requires manual setup of OAuth2 clients, Firebase projects, and Google Maps API keys across multiple platform files (Android, iOS, web), with detailed steps in QUICKSTART that can be error-prone and time-consuming.
Uses Provider for state management and a specific folder structure, which may not align with teams preferring newer solutions like Riverpod or BLoC, and the README acknowledges this could require evaluation on a case-by-case basis.