An application built in Flutter that showcases certifications and todo functionality.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
-
This application was initially developed by using data from the Cloud Certifications pages of Confluence that could be retrieved using FastAPI via the Confluence API. This data was then displayed in a Flutter UI.
-
The application now uses firebase functions to fetch data from firestore database.
-
The application now has expanded with more features being integrated such as Authentication, profile, Todo
For details related to the user flow and usage, please visit the confluence page for this project.
- We pass data through
cloud functions
which is a serverless framework provided by Google Firebase. High level overview of the architecture can be seen below. For details about this please visit the confluence page for this project.
- For the frontend flutter application we use, we use layered architecture to follow Bob-Martin's clean Architecture where we use repository pattern for data layer and use
Bloc pattern
in presentation layer.More info
To get a local copy up and running follow these simple steps.
- Flutter
- Firebase CLI
In order to run the application locally, you must have the Flutter SDK installed. Follow the steps within the Flutter Documentation to install the Flutter SDK on your local machine.
In order to acess Firebase CLI, you must install it locally. Follow this steps
# clone the repo
git clone https://github.com/capcodigital/flutter-confluence.git
# configures the local env
source .env
To run the app locally you need flutter sdk and firebase cli installed as details provided in prerequisites section.
- Open terminal app and go to functions folder inside your project folder.
- Run
npm run serve
.(if you don't have npm installed, follow this).
- Open flutter app located in
front-end/flutter_confluence
of your project folder in Android Studio, Intellij or Visual Studio Code. - Go to file named
constants.dart
and replace thestatic const BASE_API_URL = 'https://europe-west2-io-capco-flutter-dev.cloudfunctions.net/app';
withstatic const BASE_API_URL = 'http://localhost:5001/io-capco-flutter-dev/europe-west2/app';
. - Go to file named
main.dart
and addawait FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
beforerunApp()
. - Go to terminal and Run
Flutter pub get
.(This will load all dependencies). - Once dependencies are loaded. Run
Flutter run
. and The app will be launched in default device.
- Flutter bloc: Bloc design pattern helps to separate presentation from business logic. Following the BLoC pattern facilitates testability and reusability. More info
- Firebase Auth: Firebase Authentication provides backend services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to your app.More info
- Firebase Functions:Cloud Functions for Firebase is a serverless framework that lets you automatically run backend code in response to events triggered by Firebase features and HTTPS requests. More info.
- Firebase Firestore:Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud. More info.
- Lottie: Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile.More info
-
Firebase is a Backend-as-a-Service (BaaS) app development platform that provides hosted backend services such as a realtime database, cloud storage, authentication, crash reporting, machine learning, remote configuration, and hosting for your static files.More info.
-
Before using Firebase on your application, you must first connect to your Firebase project with your application. Firebase provides well written documentation for different platforms. Follow these links for respective platforms:
Note: In Flutter hub
application we already have google-services.json
(For Android) and GoogleService-Info.plist
(For IOS) files, please replace these files with the one provided in project setting console of your firebase app.
Tests help ensure that your app performs correctly before you publish it, while retaining your feature and bug fix velocity. We have used following types of test in the project..
- Unit Test: tests a single function, method, or class.
- Widget Test: tests a single widget
- Integration Test: tests a complete app or a large part of an app.
more about testing in flutter can be found here.
Use following command
# to run test in terminal
flutter test
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
If you would like to contribute to any Capco Digital OSS projects please read:
Distributed under the MIT License. See LICENSE
for more information.