COVID caused massive damage to the tourism economy and with the long lockdown periods, businesses are forced to operate at a much smaller scale or simply closed. Information regarding tourism is also outdated, causing problems for people looking to travel after COVID. The idea that comes to mind is an app that could link users with locals, which would provide connections between people, and also provide updated information. This would bring more attention from users to smaller businesses that are struggling, providing job opportunities for locals, helping users to acquire necessary information before/during their travelling period.
What it does
AirTour is an open platform that connects prospective tourists with local guides for the purposes of increasing awareness and engagement in local attractions. AirTour aims to fill the gap in servicing domestic and international tourists with a more authentic and localized tour experience.
How we built it
AirTour is built using an Ionic + ReactJS frontend with a GraphQL backend written with NodeJS. Ionic allowed us to write web code that could be run directly on the web, android and ios without the need to use native components like React-native or Flutter. In addition, GraphQL was chosen to minimise the number of endpoints and queries required to be called and developed during the competition. This made the backend much easier to develop and decreased the number of calls hitting the backend, saving plenty of resources in infrastructure.
We are using a serverless architecture on Google Cloud Platform (GCP) with our backend running in a docker container with Cloud Run. For our current NoSQL database, we are using Firestore with its free tier. For authentication, we are leveraging Firebase Authentication with integration both in the front end and back end. We are currently also running a Heroku instance for our socket.io implementation. We chose Heroku be socket.io cause getting socket.io to run serverless is much cheaper on Heroku than GCP.
Our front end is currently deployed on Netlify for efficiency in CI/CD pipelines and developer experience. Netlify provides a free platform to host our code and excellent global edge CDN.
Challenges we ran into
- The ODM (object document mapper) we chose in an attempt to reduce the amount of data access code we needed to write for Firestore turned out to be quite poor. Since we have committed to use it throughout most of our backend, we didn't want to spend time again removing it. However, this would be one of the first things we do if we had the time.
- Overscoping the project - downsized our project by removing payment and transaction part of our app.
Accomplishments that we're proud of
- Designed and created a fullstack scalable application with production technologies.
- Fully embrace the use of serverless GraphQL
What we learned
- Ionic framework with multiple platform support using capacitor v2
- GraphQL - inmemory cache, designing
- GCP - Serverless Cloud Run, Firestore
- Figma - designing UX/UI
What's next for AirTour
There are still plenty of features we want to implement and bugs to fix. Below are our major things we want to improve
AirTour's roadmap is designed to geared towards rapidly increasing it's user numbers to
- Release Beta to App Store and Google Play Store.
- In-app transactions
- Partnerships with local tourism businesses and guides