An Overview of the App
The App
I really enjoy traveling and like to find out about interesting things nearby wherever I happen to be. I am often driving when visiting new places and thus am not necessarily able to look on my phone, so I thought: Why can't an app just read me information about nearby attractions? I couldn't find an existing app that did, so I figured it would be pretty fun write my own. That is how I came up with the idea for the app we are going to be building. For now, we will call it autotoor.
What will the app do?
The app will leverage the user's phone's current location to lookup nearby points of interest and then read information about them to the user. It will also display an associated picture and the text of what it reads aloud.
Where will we get the information about points of interest from?
Luckily Wikipedia offers a Geosearch API that allows you to lookup articles by GPS coordinates. We can pass a user's GPS coordinates to this API which will return a list of articles.
Very High-Level App Architecture
Phone App
We will build a phone app using React Native and Expo. React Native native is an excellent choice for building mobile apps due to the extremely large React community and wealth of examples of all things React available on the web. It will also allow us to write a single codebase that works for multiple phone platforms. Adding Expo into the mix provides even more mobile friendly components for React as well as a CI/CD platform for building, submitting and even updating React Native apps.
Tour Service
Rather than directly calling the Wikipedia API from our phone app, we will leverage a node service which we will call the tour-service to interact with the Wikipedia API and handle any data massaging to make it presentable to our app. By moving as much functionality out of our mobile app into a backend service as possible, we make it much easier to release simple functionality changes, since we have more control over the update process for a backend service vs that of a mobile app. In later iterations of our app, we can also use the tour-service to implement additional functionality.
This node service will be implemented using NestJS, an opinionated Node.js framework that provides things like dependency injection, a declarative controller layer on top of express, and many other very cool features.
Wikipedia API
As mentioned above Wikipedia offers a Geosearch API that will allow us to leverage a user's coordinates to lookup a list of nearby articles. Other Wikipedia APIs such as the MediaWiki query API can then be used to get the content of the articles.

Comments
Post a Comment