An Android app that connects your customers with your business
The contact with the business was never been easier. Just choose one of the provided contact methods:
- Calling
- Navigation
- Open Facebook page
- Chat on Facebook Messenger
- Open Instagram page
All operations handled by external apps through Intents
Let your customers create a profile and provide you with contact information.
Customer must first verify their email in order to proceed
Customers will receive push notifications with FCM for important updates that you sent.
Provide your opening hours to your customers.
To build the project you must provide:
-
a google-services.json file in the root project* folder. You can retrieve it from "Project Settings" at Firbase console
-
a .jks file in order to sign the release build
-
a keystore.properties file with the following structure:
storePassword = <Keystore password>
keyPassword = <Signing key password>
keyAlias = <Key alias>
storeFile = <Path to the .jks file>
Those fields corresponds to properties at module level build.gradle** file.
You need both .jks and keystore.properties files in order to sign the release build.
* Be sure to check the official Firebase documentation
** keystore.properties file's path should also be changed inside build.gradle if the file is not located at project's root
- a fb_secrets.xml which will include the following strings:
<string name="facebook_app_id_secret" translatable="false">your_app_id</string>
<string name="fb_login_protocol_scheme_secret" translatable="false">fbyour_app_id</string>
<string name="facebook_client_token_secret" translatable="false">your_client_token</string>
Be sure to check the official Facebook Login Android documentation
- a googleApi.properties file with the following structure:
webClientId = "<your_web_client_id>"
You can find your web client ID from Google API console, navigating to the "Credentials" tab. This key is needed for Google One Tap sign-in.
In order for the app to work without any modifications you must enable the following sign-in methods from Firebase console:
-
Email/Password
-
Google
-
Facebook*
* Facebook sign-in method must be enabled in order to link user's email or Google account with their Facebook one. It is not used for authentication.
You must provide the following database structure to provide the businesses' opening hours and social information:
Structure
firestore {
business_info {
<business_name> {
opening_hours: array {
morning: map {
from: string
to: String
}
afternoon: map {
from: string
to: string
}
order: number
}
social_info: map {
fbPageName: string
fbPageUniqueName: string
fb_page_id: string
instagram_profile: string
mapsCoordinates: string
mapsName: string
maps_query: string
phone: string
}
}
}
}
Fields description
Field | Description |
---|---|
<business_name> | Business name |
opening_hours | An array which holds the week's opening hours |
morning | A map that holds the morning opening hours. Set it to null if business is closed on morning hours. |
afternoon | A map that holds the morning opening hours. Set it to null if business is closed on afternoon hours. |
from | Opening hour |
to | Closing hour |
order | In which order it will appear |
fbPageName | Page's name |
fbPageUniqueName | Page's unique name to avoid conflicts |
fb_page_id | Page's id (you can take it from the url) |
mapsCoordinates | Latitude and Longitude (separated by ',') |
mapsName | Business name on Google Maps |
maps_query | What you would search on Google Maps to find the business tip: include area's location to avoid conflicts |
phone | Business' phone |
Here is a brief summary of what technologies have been used for the app:
- Firebase for authentication and storage
- Coroutines
- FCM for push notifications
- Retrofit and Moshi to communicate with the FCM API
- Google Sign-In for Android for Google One Tap sign-in
- Navigation component
- Coil to load profile image
This software uses the following open source packages:
The administration app is available on the APPointment Admin repo