Ming: Find new family for abandoned pets.

Last update: May 25, 2022

ming

Application for abandoned pets.

Getting Started

Directory structure

  • ui
    • screens
      • screen view for applications (e.g. setting, login, etc)
    • components
      • reusable components for all screens
  • blocs
    • Check bloc pattern
    • Level of "business model"
    • multiple blocs and their states, events
    • Rules
      • Single bloc file will contains bloc and its corresponding state, event.
  • models
    • "Interface" of repositories and services
  • entities
    • data entity
  • adapters
    • "Implementation" of each models
  • di
    • Dependency injection roots (repositories and blocs)

String resource management

bloc pattern

Auth plan

Testing

Integration_test

Firebase Emulation

  • Firebase auth emulation test sequence.
    • firebase emulator를 시작한다. firebase emulators:start --import="./integration_test/resources/emulator_dump"
    • test를 진행한다.
  • 새로운 emulation setting을 만들고 싶을 때
    • firebase emulator를 export option으로 시작한다. firebase emulators:start --export-on-exit="./integration_test/resources/emulator_dump"

GitHub

https://github.com/ming-app/ming-app
Comments
  • 1. Page skeleton을 figma를 사용해서 만들기

    사용자 화면

    Admin 화면

    • 보호소 등록 (효진)
    • Terms page (혁중)
    • 동물 등록 (효진)
      • 사진 선택 page
      • 동물 profile 등록 page
    • 동물 게시물 등록 (효진)
      • 사진 선택 page (multiple 허용 여부 필요)
      • text (tag 기능 넣을지 고민 필요)

    공통 화면

    • Login (혁중)
      • id
      • password
      • 보호소 등록 버튼
    • 보호소 profile (효진)
      • 보호소 대표 사진
      • 보호소에 등록된 동물 사진
      • 연락처 연결
    • 동물 profile (효진)
      • 보호소 profile link
      • 동물 피드
      • 동물 대표사진
    • feeds (혁중)
      • 보호소 로그인 버튼
    • tutorial view (next) (혁중)
    • setting (혁중)
      • 알람설정
      • 튜토리얼
    Reviewed by wangmir at 2022-05-02 13:50
  • 2. Repository setup

    • firebase firestore sample doc 작성
    image https://console.firebase.google.com/u/0/project/ming-6dd75/firestore/data/~2Fanimals~2FR4TnntIm0pwY8IKYMAqT
    • entity 정의
    • animal repository 구현

    firebase integration test 짜고싶은데 여기서 막혀가지고.. 우선 여기까지만 올립니다..

    Reviewed by KimHyoJin at 2022-05-07 14:44
  • 3. Logout implementation & Refresh support.

    1. Logout button을 profile에 만듦.
    2. Refresh 시에도 auth가 정상동작하도록 함 (refresh 시에 async하게 user status change가 되는 걸 기다림)

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-06-03 14:31
  • 4. Change router into GoRouter, Enable Theme for Ming.

    1. Flutter navigation 2.0을 적용해야 web에서 더 routing이 정상적으로 동작한다고 하고, 또 declarative routing을 더 수월하게 할 수 있는 것으로 보여, (routing과 주소관계) GoRouter를 적용했습니다. 관련하여 해당 codelab 참조 (https://codelabs.developers.google.com/codelabs/flutter-boring-to-beautiful#3)

    2. Material UI 3.0의 theme skeleton을 적용해놓았습니다. Material UI를 기준으로 변경하고 싶은 GUI는 추후 extension이나 color code 등으로 변경 가능합니다.

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-05-22 11:55
  • 5. Add Log system to log properly.

    Loggy(https://pub.dev/packages/loggy) library로 logging system을 구성하였고, Firebase Crashlytics를 enable 해놓았습니다.

    현재 web에서는 firebase crashlytics를 support하지 않아서 그 때에는 단순 print로 처리한 상황입니다.

    사용법은 간단한데, Log.d("logg"); 처럼 사용하면 됩니다. Test code에 간단한 예제가 있습니다.

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-05-22 09:03
  • 6. Delete github action for deploy at pull request.

    Pull request에서 deploy를 진행하려면 secret에 문제가 있어 두가지 중 하나를 해야합니다.

    1. pull_request대신 pull_erquest_target 사용.
    2. secret key를 공유.

    둘 다 그다지 보안상 좋아보이진 않고(우리 repo가 public이기 때문에), pull request에서 꼭 sample deploy를 할 필요는 없기 때문에 삭제합니다.

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-05-22 02:36
  • 7. Login page, sign up page 구현. 전체 directory structure 수정.

    Multi package project로 정리하고, directory path를 feature 단위로 수정함. Login page와 sign up page를 https://bloclibrary.dev/#/flutterfirebaselogintutorial 를 기반해서 구현.

    Firebase로 create account가 정상적으로 보내지는 것까지 확인함.

    스크린샷 2022-05-15 오후 6 40 52

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-05-15 09:44
  • 8. App 이름 변경, Auth repository impl 구현.

    1. App 이름을 com.ming.ming으로 변경.
    2. Auth repository를 firebase 기반으로 구현. firebase emulator 기반으로 integration test 진행.

    TODO:

    • view와 firebase 실제 서버 기반으로 test 진행
    • integration test를 action에서 돌릴 수 있도록 환경 설정 진행.
    Reviewed by wangmir at 2022-05-14 17:17
  • 9. Enable integration test with sample. Add Sign In Sequence and its int…

    …erface.

    1. Integration test 를 위한 sample code 및 test.
    2. Sign In Sequence diagram을 docs/auth/auth_plan.md에 넣음.
    3. auth_repository.dart 에 auth interface 정의.

    todo:

    • Integration test를 CI에서 진행할 방법 필요. (Firebase에서 test가능하지만, 하루에 10번으로 제한되어 있음)

    Signed-off-by: Hyukjoong Kim [email protected]

    Reviewed by wangmir at 2022-05-08 16:19
  • 10. IOS & Android build fail fix, Web build enable.

    IOS의 platfrom versino number를 12로 올리고, Android의 minSdkVersion을 21, targetSdkVersion을 26으로 올렸습니다.

    그리고 github action에서 web build를 enable했습니다.

    현재까지 기능들에 대해서는 web 에서 잘 동작하는 거 확인했습니다.

    Reviewed by wangmir at 2022-05-08 12:33
  • 11. Business Logic component 와 entity 정의

    Sign in

    Entity

    class User {
      String id;
      String key;
      String pwd;
      List<String> shelterId;
    }
    

    Feed (Read)

    • infinite scrolling을 고려해야 한다

    Entity

    class Post {
      String id;
      String userKey;
      String animalId;
      String imageUrl;
      String desc;
      String createdAt;
    }
    

    Admin (보호소 프로필 CRUD, 동물 CRUD, post CRUD)

    Entity

    class Shelter {
      String id;
      String name;
      String imageUrl;
      String instagramUrl;
      String email;
      String phoneNumber;
      String desc;
      String createdAt;
    }
    
    class Animal {
      String id;
      String shelterId;
      String name;
      String imageUrl;
      String desc;
      String createdAt;
    }
    
    

    Terms

    class Terms {
      String terms;
      bool isConsented;
    }
    

    External App Interaction (instagram, 통화, e-mail)

    entity 필요없음

    Reviewed by wangmir at 2022-05-03 13:46

Related

Find The Latest trending and upcoming movies and tv shows with MovieDB app. The app contains all info about movies and tv shows. find similar movies or shows, Browse all genres, video trailers, backdrops, logos, and posters.

MovieDB App Features. Dynamic Theming Search Functionality Onboarding-Screen Select favourite movie Home Screen Tranding movie Movies different catego

Jun 23, 2022
Find-Kosan-Cimahi - Find Kosan Cimahi App With Flutter
Find-Kosan-Cimahi - Find Kosan Cimahi App With Flutter

Find Kosan Cimahi Masih Tahap Belajar Dart This project is a starting point for

Feb 17, 2022
Jan 11, 2022
E-Family Flutter App

e_family_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Jan 3, 2022
Messenger is an instant messaging app & by using this you can send message to your friend and family virtually

⚡️ Flash Chat ⚡️ Our Goal ?? The objective of this project is to learn how to incorporate Firebase into our Flutter apps. We'll be using Firebase Clou

Jun 19, 2022
Messenger is an instant messaging app & by using this you can send message to your friend and family virtually

⚡️ Flash Chat ⚡️ Our Goal ?? The objective of this project is to learn how to incorporate Firebase into our Flutter apps. We'll be using Firebase Clou

Jun 19, 2022
A flutter plugin to draw the coordinates on the widget and as well as to find the given point is inside a list of coordinates or not.
A flutter plugin to draw the coordinates on the widget and as well as to find the given point is inside a list of coordinates or not.

Draw On A flutter plugin to draw the coordinates on widget and as well as to find the given point is inside a list of coordinates or not. For Draw on

Apr 5, 2022
A Flutter App That Find Party Event
A Flutter App That Find Party Event

EventZ ?? ?? Description: Discover events & upcoming events in your city and near you. Get personalized event recommendations! Find events your friend

Jun 30, 2022
Academic master is E-learning app where students can share their doubts wiith their peers they can chat and also they can find their notes
Academic master is E-learning app where students can share their doubts wiith their peers they can chat and also they can find their notes

Academic Master is E-learning App. Features:- 1) You can post real Post query in Images and video formates. 2) We will Provide notes,books and previou

Jun 9, 2022
In this app, it's possible to find some different kind of flutter animations

flutter_animations Apprendre à utiliser les animations avec Flutter Getting Started This project is a starting point for a Flutter application. A few

Dec 24, 2021
Find a good meeting time across multiple timezones.

meeting_scheduler Adventures in scheduling across timezones. A project by the Adventures In [Dart, Flutter, Firebase] group. Goals: Help people find a

May 23, 2022
With TOT you can find a teacher that is suitable for your needs with less effort, less time, and less money.
With TOT you can find a teacher that is suitable for your needs with less effort,  less time, and less money.

TOT App In TOT we are here to help you find a teacher at any aspect of science you want from kindergarten to secondary schools. Instead of searching m

Jan 3, 2022
Lost and Found is an app to help people find their lost items.

lost_and_found A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started i

Jan 20, 2022
Encyclopedia of Memes: Search, Find and Learn about Memes
Encyclopedia of Memes: Search, Find and Learn about Memes

Memepedia Encyclopedia of Memes: Search, Find and Learn about Memes Informations

Feb 7, 2022
Flutter plugin which helps you to find links in String using NSDataDetector and Linkify
Flutter plugin which helps you to find links in String using NSDataDetector and Linkify

Flutter's Native Linkify native_linkify is a Flutter plugin. Use it to find links in plain-text. The plugin uses NSDataDetector for iOS and macOS; Lin

Feb 15, 2022
At its core, Mah-Event lets end-users initiate and find events corresponding to their interests and location
At its core, Mah-Event lets end-users initiate and find events corresponding to their interests and location

Mah-Event Application At its core, Mah-Event lets end-users initiate and find events corresponding to their interests and location. It allows people t

Mar 14, 2022