Skip to content

An intuitive way to work with persistent data in Dart

Notifications You must be signed in to change notification settings

nextfunc-ltd/brick

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An intuitive way to work with persistent data

An intuitive way to work with persistent data in Dart.

Why Brick?

What is Brick?

Brick is an extensible query interface for Dart applications. It's an all-in-one solution responsible for representing business data in the application, regardless of where your data comes from. Using Brick, developers can focus on implementing the application, without concern for where the data lives. Brick was inspired by the need for applications to work offline first, even if an API represents your source of truth.

Quick Start

  1. Add the packages:
    dependencies:
      brick_offline_first: any
    dev_dependencies:
      brick_offline_first_with_rest_build:
        git:
          url: https://github.com/greenbits/brick.git
          path: packages/brick_offline_first_with_rest_build
      build_runner: any
  2. Configure your app directory structure to match Brick's expectations:
    mkdir -p lib/app/adapters lib/app/db lib/app/models;
  3. Add models that contain your app logic. Models must be saved in lib/app/models/<class_as_snake_name>.dart.
  4. Run flutter pub run build_runner run to generate your models (or pub run build_runner run if you're not using Flutter) and sometimes migrations. Rerun after every new model change or flutter pub run build_runner watch for automatic generations.
  5. Extend an existing repository or create your own:
    // lib/app/repository.dart
    import 'package:brick_offline_first/offline_first_with_rest.dart';
    import 'package:my_app/app/brick.g.dart';
    export 'package:brick_offline_first/offline_first_with_rest.dart' show And, Or, Query, QueryAction, Where, WherePhrase;
    
    class Repository extends OfflineFirstWithRestRepository {
      Repository()
          : super(
              migrations: migrations,
              restProvider: RestProvider(
                'http://0.0.0.0:3000',
                modelDictionary: restModelDictionary,
              ),
              sqliteProvider: SqliteProvider(
                _DB_NAME,
                modelDictionary: sqliteModelDictionary,
              ),
            );
    }
  6. Profit.

About

An intuitive way to work with persistent data in Dart

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 100.0%