Communicating your location can be hard, and can only be so accurate. Longitude and latitude can be used to relay ones location to a tee, but remembering exact longtitude and latitude values is hard enough, and to pass them to someone else would prove to be even harder.
The Open Location Code system is a geocode system that can also be used to identify an area anywhere on earth. This system provides codes that can narrow a location down to 3.5m by 3.5m distances. However, one pitfall to this system is the hard to remember strings - for example, 849VCWC8+R9.
Where Am I aims to solve this problem by converting the strings into a memorable four-to-five word phrase.
tl;dr - need to relay your location?
longitude and latitude, Open Location Code, Where Am I :heavy_check_mark:
What it does
Using the Google Maps API, we were able to get the longitude and latitude values, which we send to the Plus Codes API to produce its Open Location Code. Using the Open Location Code in conjunction with our large dictionary that maps codes to words, we were able to generate a word phrase to return to the user.
In addition to being a web application, it is also a CLI tool and Discord bot, powered by our REST API.
How we built it
- We made the REST API using FastAPI.
- We made the CLI tool using Typer.
- We made the Discord bot using discord.py
Challenges we ran into
This was the first time any of us have used certain libraries, like FastAPI and Typer. It took a bit of time to learn how to use these and incorporate it to our project. Constructing the queries to be sent to our API was difficult and took some trial and error. Rendering the map into our Flask app also proved to be difficult. The Discord bot was also hard to work with as sending and receiving requests was a bit hard to understand.
Accomplishments that we're proud of
- First time any of us used FastAPI and Typer libraries.
- Deployed TWO apps from ONE GitHub repository!
- We're really happy with how our web app looks
- This project originally started off as only a web app, but slowly we decided to integrate and expand it (first a web app, then we expanded to a CLI tool, then making it into a REST API, then finally a Discord bot)
What we learned
- How to use all these technologies, and how to incorporate and tie them together.
- How to manage your time under a time-restrained environment
What's next for Where Am I?
- Refactor some frontend code and change the design a bit
- Use HTTPie so you can send requests to our API from a terminal