Final Semester Research Project
For my final semester, I made a cross-platform mobile application, NGO Locator.
Currently, there is no intuitive and simple way of finding out about local NGOs. Finding information along with the geolocation of an NGO is so tedious that more often than not people would simply throw away excess food or old clothes, something that NGOs could use to help people in need.
To solve this problem I made a GIS-based mobile application. The application is developed using Flutter to support cross-platform in a single code base. Using the application, users would simply have to choose which type of NGO they are looking for and press enter. This would automatically show the user the directions to the nearest NGO, all in a single application.
The map data will be taken from ‘Google Maps’ whereas the Indian NGO data will be taken from the government website ‘NGO DARPAN’. Depending upon the user's GPS location and category of NGO, the app will look for NGOs closest to the user.
Google Firebase was used to store NGO data
Flutter to develop the app. It handled both the backend as well as the frontend.
NGO Darpan was used to get NGO data. It's a government website that has over 100,000 active NGOs all over India.
Android Studio was used to develop the application.
Google Maps API was used to display the map, the location markers, and the route between the user's current location and the nearest NGO location.
Python was used to rip data from NGO Darpan since it did not have any API that could be used to access data.
Here is a simple flowchart to show how the app would work:
This 4-month journey was not always smooth! There were a lot of challenges faced:
· In flutter, we make use of various widgets. However, a lot of widgets are now deprecated. This made it difficult to adhere to the timeline since one version of a widget was not compatible with another version and vice versa.
· In Cloud Firestore (GCP NoSQL Database), we cannot do very complex queries that included calculations.
· Sqlite (a database that is stored on the main app itself) also is not capable of the complex query that was required in the app to fetch the nearest NGO based on user location.
· SQL server was being too complex and slow since every time a user would enter NGO category data would have to be sent to the database using REST API, then the query would have to be performed and then data would have to be sent back to the app.
Throughout this journey I had a lot of learning opportunities:
·I further strengthened my knowledge of open-source mobile SDK Flutter.
· I tried out web scraping for the first time
· I got to be mentored by Dr. Kuldeep who has a lot of experience in Geospatial technology.
· I learned to use APIs through this project
· I enhanced my knowledge of cloud computing by learning how to use it in a practical, real-life setting. Prior to this, I had only tried out cloud computing services in the form of Labs.
· I got to explore another cloud computing service, namely Google Cloud Platform (GCP). In college, we were only exposed to Amazon Web Service (AWS). This helped broaden my limited knowledge of cloud technologies.
The whole 4 month experience was very useful in developing my skills as a software developer. It also feels good that the project has an actual use and can help society. Not only would people be more aware of NGOs but it would also save people a lot of time. In the future, I would try to move to open source alternatives for the map and would also like to add functionalities such as user-submitted NGOs to further enhance open source development.