An amazing open-source group messaging app build with flutter. ✨
This is a Flutter mobile app targeting Android and iOS.
The code for the Flutter app is contained in the folder
lib and the
different native apps are in
ios. Extra project assets are in
As well, this repo hosts a series of Firebase config files and cloud functions.
The documentation for Firebase part is inside the
To build and run the mobile apps you’ll need to install Flutter and its dependencies. To verify your installation run in the project’s root directory:
$ flutter doctor
The app is optimised for Android and iOS phones in portrait mode.
IMPORTANT: The project only supports Flutter version 1.10.5, you will have to change your configuration to it. We cannot make sure that other Flutter versions will work.
$ flutter version 1.10.5
Note: Additionally you’ll need to setup the backend and add the GoogleService-Info of your Firebase app to your clients as described below.
The backend is build using Firebase’s
node.js SDK. All files are provided in the
firebase folder. To deploy the code create an app and install the firebase CLI (See steps 1 & 2 in Getting started).
Note: The following steps assume you’re using Firebases’ free
Spark Plan. Therefore we’re performing the configuration manually.
An initial sign-in method needs to be configured.
Sign-in methodsand activate
Email / Password.
Adding a user
Currently, users need to be added manually.
Please copy the
User-UID of the created user. We’ll need to add this ID to a group in the next step.
Note: You’ll need to have at least one user configured to use the app.
Next, you’ll need to configure your firebase app for Flutter as described in Add Firebase to an App / Flutter
NOTE: If you’re building for release you’ll additionally need to add a GoogleService-Info-Prod.plist pointing to your production Firebase app.
Follow the instructions in
In the firebase console select
Develop and create a Cloud Firestore Database. Setup database in
test mode if you don't want to care about access permissions now.
At this point, you need to run and perform login once on the App, it will create a user document inside the
You will see an empty screen. To fix that, continue this setup. You may need to restart the app after the setup is done.
Create group collection
Create collectionand name it
|members||array||User-UID we’ve retrieved in Adding a user above|
We’ve now setup our first test group. In addition to this step, we’ll need to setup a default
Channel (e.g. something similar to
#general in Slack).
Add the new created Group id to the User document
joinedGroupsand make it type
Create channel sub-collection
groupscollection select the newly created group.
Create collectionwithin the group called
Your Firestore database should look like this (with different ids)
Navigate to the
firebase directory and deploy all functions using:
$ firebase deploy --only functions
Some features of the app can be used without Cloud Functions running, but some others will not work. We recommend you to perform this step to enjoy all features.
Login with the user you’ve created above.
Next create your first
event to setup the calendar collection in our backend.
Create an event
+sign next to
At the root level of your database you should now see a collection called
calendar in your firebase console.
Now we’re ready to deploy all other parts of our backend using:
$ firebase deploy
The app is setup to work with a development and production environment. We suggest you create a different Firebase app for each environment.
When building for release the app will automatically use the production configuration that you’ve configured in step
We hope this project can be a reference or building block for your next flutter app. 🚀