Hajj related data is currently available online in CSV/XLS form or is in pdf form. It is not available in a searchable, query-able data that developers, government offices and other Hajj related industries may use for their benefit. They have to reinvent the wheel every time they are using data. Many programmers' comments were also recorded during this hackathon for lack of data which became a basic source of inspiration for us to work on this problem.
What it does
The Hajj API lets developers, government departments, advertisers and other concerned people to query hajj data to bring their creativity to reality and make them more efficient in developing Hajj related apps. Some of the departments that may be connected using this API include:
a. Logistics (including airplanes, busses, cars etc) b. Communication Systems c. Crowd and Traffic Management departments d. Medical and Health Department e. Food and Waste Management f. Saudi Ministry of Hajj g. Drones and other IOT Devices h. Developers, Hackathon participants for future hackathons and coding challenges.
How we are building it?
We set up Clojure environment and implemented GraphQL over lacinia.
First Feature Submission
Successfully created a basic API with searchable queries and successfully submitted before 6pm on 2nd August 2018.
A searchable model for querying in hajj database. API will be able to fetch and convert data on its own without a requirement to change the already implemented databases. API will be able to communicate with a variety of interfaces including HTML, FTP, SQL, MQTT (for IOT) etc. API will run as a service on existing machines and communicate with central repository to make sure it syncs all data in real time.
What code was available before?
GraphQL library and one excel sheet of Pilgrims data were provided.
What was done in 36 hours
- Clojure as web server was set up as it is faster than traditional Java
- Created a script to load pilgrims_entry_exit data and compiled it to proper shape (EDN format).
- Designed a query server for queries and manipulation with Endpoints exposed for client side and request routing using Lacinia. GraphQL was implemented for search
- Created a web Client on top of the Pedestal web tier, using Lacinia-Pedestal to interact with exposed endpoints.
- Deployed the application on Heroku
- Developed Business Model for the Hajj API with consensus from many mentors
- Website set up for Hajj API
API testing was done using in-browser IDE for GraphQL. Queries were also tested using python script.