Skip to content

n-luke-th/self-pudding

Repository files navigation

Pudding

A Flutter project designed for a couple to pudding (putting) things on the lists for future reference.

Features

  • Create a set of items for saving such things together with your partner for future reference.
  • Edit each pudding (item) on the list in real time with your partner.

Platforms Currently Support

  • Android
  • iOS
  • Web

Tech Stack & System Architecture

  • Firebase: Authentication, Database (Firestore)

Database schema

/users/{userId}                                             # other user data, small cached stats

/collections/{collectionId}                                 # metadata about each collection (ownerId, title, summary)

/collections/{collectionId}/members/{userId}                # membership documents (role, joinedAt, displayName/email cached)

/collections/{collectionId}/puddings/{puddingId}            # posts (previewUrl, notes, createdBy, createdAt, url)

/invites/{inviteId}                                         # invitation documents (token, email, collectionId, expiresAt, inviterId, status)

/userCollections/{userId}/collectionRefs/{collectionId}     # cached collection(s) summary and its metadata of a user so listing is a single, cheap read (collectionId, user role to the collection, title, etc.)

Folder Structure

  • from lib\ as the root.
└── 📁lib
    └── 📁common
        └── 📁components
            ├── app_info_cont.dart
            ├── drawer_panel.dart
            ├── full_page_loading.dart
            ├── btns.dart
            ├── loading_overlay.dart
            ├── toast_overlay.dart
            ├── view_wrappers.dart
        └── 📁utils
            ├── firestore_collections_name.dart
            ├── routing.dart
            ├── show_and.dart
            ├── svg_color_mapper.dart
        ├── parts.dart
    └── 📁core
        └── 📁logger
            ├── logger_providers.dart
        └── 📁models
            ├── app_info_model.dart
            ├── appbar_cfg_model.dart
        └── 📁providers
            ├── app_info_provider.dart
            ├── firebase_providers.dart
    └── 📁features
        └── 📁auth
            └── 📁data
                ├── auth_repository.dart
            └── 📁presentation
                ├── auth_gate.dart
                ├── signin_anony.dart
                ├── signin_email.dart
            └── 📁providers
                ├── auth_providers.dart
        └── 📁collections
            └── 📁data
                ├── collection_model.dart
                ├── collections_repository.dart
            └── 📁presentation
                ├── collections_list_screen.dart
            └── 📁providers
                ├── collections_providers.dart
        └── 📁puddings
            └── 📁data
                ├── pudding_model.dart
                ├── puddings_repository.dart
            └── 📁presentation
                ├── puddings_screen.dart
            └── 📁providers
                ├── puddings_providers.dart
    ├── firebase_options.dart # generated by the flutterfire cli
    └── main.dart

Getting Started

  1. make sure you have config the latest changes of the app by run command: git pull

  2. run dart pub global activate flutterfire_cli then run flutterfire configure to configure the firebase options

  3. run flutter clean && flutter pub get to clean up and get dependencies

  4. run app on another terminal by using command flutter run -d chrome --web-port 5555 (this will run on Chrome with port 5555)

Notable Configurations

Splash screen

(source: https://pub.dev/packages/flutter_native_splash)

  • config the native_splash.yaml file then
  • (everytime after changes were made) regenerate the splash screen based on the native_splash.yaml file by run command: dart run flutter_native_splash:create --path=native_splash.yaml

Launcher icon

(source: https://pub.dev/packages/icons_launcher)

  • run command flutter pub add -d icons_launcher
  • config the launcher_icons.yaml file then
  • (everytime after changes were made) regenerate the launcher icon based on the launcher_icons.yaml file by run command: dart run icons_launcher:create --path launcher_icons.yaml

Change package name

(source: https://pub.dev/packages/change_app_package_name)

  • run command flutter pub add -d change_app_package_name to add the helper package
  • then run dart run change_app_package_name:main com.your.package.name to change the package name

About

A Flutter project designed for a couple to pudding (putting) things on the lists for future reference

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors