Public version of Community Service App (Triber) with sensitive keys removed as follows:
- Google Maps Api Key
- Firebase Key
- Google AdMob
This is a showcase of the code implementation for the project. #Work in Progress
It all started as a project to make finding where to volunteer easier on the mobile platform with the option to navigate to the address efficiently. Triber at its core is a mobile app volunteering directory for Malaysia with the ability to suggest the relevant service recipients based on users’ preferences and app usage behaviour.
Triber was created to enhance individuals' ability for better selection of service recipients by providing a central database of others' feedback on various service recipients. It exposes various types of service recipients, volunteering opportunities and crowdfunding platform availability in Malaysia.
Aim
To create awareness of civic responsibility in the role that can be played by individuals towards the contributions in supporting their community. The volunteering activities may take place in public institutions such as hospital, non-profit organizations, welfare homes and environmental organizations.
Objectives
- To assist individuals in finding suitable service recipients (NGOs / NPOs) in Malaysia to provide their volunteering service and be exposed to a wide variety of opportunities.
- To build recognition for the help rendered to the needy and contribution made for the development of society.
- To understand the social issues and responsibilities to gain a sense of belonging to the society.
Application of AI
The app uses two concept to recommend relevant service recipients:
- Knowledge-Based Filtering (KBF)
- Content-Based Filtering (CBF)
Knowledge-Based Filtering
Based on users’ explicitly predefined recommendation criteria:
- Location of service recipients (e.g. Selangor, Kedah, etc.)
- Job nature of service recipients (e.g. Environment, Children, Health, etc.)
This approach is similar to filtering which provide a very wide scope of recommendation and is used as the basis of recommendation.
Content-Based Filtering
Based on the service recipient that the user visited, commented and rated on, a weight is assigned for these three actions performed by the user as shown below.

Once a user completes any of the action above, the job nature of the service recipient is recorded and given a score based on the action’s weight. This information is recorded for each session the user uses the app and the score is added incrementally for repeating job nature found as shown below.

Then, the top five highest score job nature related service recipients will be recommended to user based on their previous interaction and display in the recommendations tab as shown below.

The computation is executed on the mobile device and user’s past app usage behaviour information will be stored in local database.
To summarise, the recommendation criteria collected from KBF form the basis for recommendation of service recipients to the users. Then based on CBF, the recommendation criteria are fine-tuned to recommend a more specialized service recipient list focusing on the similar type of service recipient that the user have interacted with before.
| Home_1 | Home_2 | Favourites |
|---|---|---|
![]() |
![]() |
![]() |
| Set Location Recommendation | Set Job Nature Recommendation | Search Recipient |
|---|---|---|
![]() |
![]() |
![]() |
| Recipient Details_1 | Recipient Details_2 | Review Recipient |
|---|---|---|
![]() |
![]() |
![]() |
| Recipient Reviews | Filter (Show All) | Filter Options |
|---|---|---|
![]() |
![]() |
![]() |
| Map | Map_MarkerSelected | Sort Recipient By Distance |
|---|---|---|
![]() |
![]() |
![]() |
- Kotlin
- MVVM architecture
- Coroutine
- Flow (for data layer)
- Material Design
- Google Maps with Fused Location Provider and Utility Library
- Security Library (for sharedPreferences encryption and decryption)
- Google AdMob
- Leak Canary
Backend (Firebase)
Dependency Injection (DI)
Image Hosting
Image Loader
- DataBinding
- LiveData (for view layer)
- Navigation Component
- Room Persistence Library (local db)
- WorkManager
- Paging 3
Logging
Others
This project is maintained by one person thus it is very much appreciated for any support and help given. There are a few ways you could help as follows:
1) Report Broken or Missing Social Media Links
Recipient may have social media that was incorrectly linked thus making it impossible to open or some social media may have been missed out. Currently, eight social media are being collected:
a) Instagram
b) LinkedIn
c) Facebook
d) Twitter
e) Vimeo
f) Youtube
g) Flickr
h) Pinterest
2) Contribute to Recipient Data Collection / Amendment
Recipient information may change over time due to various reasons, there is no way to prevent it but there is a need to identify how to provide the latest information. This would require a dedicated person or team to periodically perform validation check with the recipient based on the existing data collected as well as to obtain data that needs to be collected.
Kindly contact +601 6820 9425 or [email protected] to learn about what data need to be collected specifically.
3) Rate the App on Playstore
Rating allows the app to be recommended by PlayStore to other users with similar interest thus reaching a wider audience.
4) Share App With Friends
If you find the app to be useful, share it with friends to spread awareness!
5) Buy me a Coffee
You can buy me a coffee here to continue support the cost of running the app.
https://www.buymeacoffee.com/Triber
6) Provide Feedback or Suggesstion
Triber continually strive to improve itself, but it cannot be done alone thus your feedback and suggestion is needed on:
a) User Experience
b) User Interface
c) Features you would like to have
d) Reporting bugs or crashes
e) What can be done better?
7) Help in App Development
If you are a developer (front-end or back-end) and are interested to help, kindly contact +601 6820 9425 or [email protected] for further discussion.
Alternatively, you can submit a PR while adding your own:
- Firebase Key
Put 'google-services.json' under project app folder - Google Maps Api Key
Put your maps api key in local.properties file under root folder like this
sdk.dir=........
MAPS_API_KEY=YOUR_KEY_HERE
The information collected and displayed for this app are from various online sources and is free for personal usage.














