Giter Site home page Giter Site logo

test_template's Introduction

Scalable Flutter App Starter

๐Ÿ‘‹ Hey, welcome to Scalable Flutter App.

Watch/star this repo to be notified when updates are pushed.

Table of Contents

What is Scalable Flutter App?

Scalable Flutter App is a starter template for Flutter apps.

It's designed to be scalable and easy to maintain. And should save you weeks of development time.

To get started, click on the green "Use this template" button on the top-right.

About the Author

I'm Milos Jokic and I:

  • built my first mobile app in 2007
  • grew my apps to 214k users and $106,140 revenue.
  • built apps for 10 Toptal clients.

And now I run a 6-figure devs agency where we launch MVPs in 4 weeks using Flutter & Firebase.

You can find me on:

Features

Feature Starter Pro
Platforms: Android, iOS, web โœ… โœ…
Scalable Architecture using flutter_bloc โœ… โœ…
Navigation using go_router โœ… โœ…
Scalable App Styling โœ… โœ…
GitHub Actions - code and formatting check โœ… โœ…
Responsive Design โœ… โœ…
UserMockProvider โœ… โœ…
Profile Page โœ… โœ…
Settings Page: sign out, app version... โœ… โœ…
Legal: Terms, Policy, Data Deletion โœ… โœ…
Google Fonts โœ… โœ…
Sign in and Sign Up Pages โœ… โœ…
Input Validators โœ… โœ…
Cached network image โœ… โœ…
Email Support โŒ โœ…
Lifetime Updates โŒ โœ…
Firebase Project Integration โŒ โœ…
Firebase Authentication โŒ โœ…
Firebase Remote Config โŒ โœ…
Firebase Crashlytics โŒ โœ…
Firebase Firestore โŒ โœ…
Firebase Analytics โŒ โœ…
Firebase Storage โŒ โœ…
Google Sign In โŒ โœ…
Apple Sign In โŒ โœ…
Email Link Sign In โŒ โœ…
Common Cubits โŒ โœ…
In App Purchases (RevenueCat) โŒ โœ…
App Store Review Request โŒ โœ…
Notifications (Firebase) โŒ โœ…
HTTP Requests โŒ โœ…
Local Storage โŒ โœ…
Permissions โŒ โœ…
Environments โŒ โœ…
Localization โŒ โœ…
Dark Mode โŒ โœ…
Connectivity check โŒ โœ…
Hive - local database โŒ โœ…
MixPanel - analytics โŒ โœ…
Android - Release Signing โŒ โœ…
Onboarding โŒ โœ…
Forgot Password โŒ โœ…
๐ŸŽ‰ BONUS: Scalable Firebase Backend Template โŒ โœ…

Pro Presale Discount

Get Your Scalable Flutter App PRO for $47 ($200 OFF) Here

$200 off discount code (APP200) lasts until end of October.

Scalable Flutter App - Pro launches in November.

Docs

Code Architecture

The code architecture is based on flutter_bloc architecture proposal.

There are 4 layers:

  1. UI (Flutter Widgets)
  2. BLoC (stateful business logic)
  3. Repository (high-level API)
  4. Provider (low-level implementation)

And there's only 1 communication rule that we must follow:

The layer can only call the one layer below it.

That means that:

  • UI can only call BLoC
  • BLoC can only call Repository
  • Repository can only call Provider
  • Provider can only call external services (Firebase, HTTP, etc.)

And we avoid same-layer communication (as it creates interdependencies):

  • UserRepository calling AuthRepository is not allowed.
  • UserCubit calling UserRepository and AuthRepository is allowed.

Styling

Styling is based on Google's Material Design.

App-wide styling is defined in core/app/style.dart and is easy to update.

Here's a quick tip on custom Widget params. There are 2 Widget param types:

  • data (user, title, ...)
  • style (colors, paddings, ...)

Our custom Widgets should only hava data params.

And the style should be done app-wide (in style.dart).

That way all of our UI is consistent and easy to update.

Google Fonts

To change the font:

  1. Go to Google Fonts and select a font.
  2. Download the font files.
  3. Add the font files to assets/fonts (remove the old ones).
  4. Update style.dart with the new font (i.e. return GoogleFonts.rubikTextTheme(textTheme)).

Useful GitHub Pull Request Settings

I've found that turning on these 2 settings in GitHub repo settings helps a lot:

  1. Always suggest updating pull request branches
  2. Automatically delete head branches

FAQ

Why bloc and not X?

While GetX, Provider, Riverpod, MobX, Redux, etc. are all great solutions, most of them are too forgiving. They allow us to access and change state globally.

Whereas flutter_bloc forces us to have BuildContext in order to access and change the state. The stricter the rules, the harder it is to make mistakes.

And flutter_bloc has a great architecture proposal that scales well.

Who is Scalable Flutter App for?

Scalable Flutter App is for developers, agencies, and founders who want to:

  • build scalable Flutter apps
  • save weeks of development time
  • learn best practices

Where to learn Flutter basics?

I can only recommend what I've used myself:

What if I want more?

If you want Firebase integration, notifications, in-app purchases and more, you can get the Pro version here ($200-off discount lasts until end of October):

Get Your Scalable Flutter App PRO for $47 ($200 OFF)

Resources

Build your app icon in minutes (free): Icon Kitchen

CI/CD for mobile apps (free & paid): Codemagic

Want me to launch your MVP in 4 weeks (premium)? Go to App Launch Program

Need a Flutter Expert (paid)? Go to Flutter Devs Board

Feedback

Found an issue or want to request a feature? Open an issue

Have a question? Ask me on LinkedIn or Twitter.

test_template's People

Contributors

marcostort avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.