Every year, my wife and I try to check off every US state when we see it on someone’s license plate. It’s a fun game and we’ve been pretty successful over the years. In 2024, we completed all 50 states by June 28th!
Since the beginning, we have used the Notes app on our phones to sync the status between our phones which has worked fine, but I’ve always wanted a better experience and to collect more data. As a result, I’ve spent the last few days working with ChatGPT to create a mobile friendly webapp that my wife and I can use for 2025’s game.
The License Plate Webapp
Main Page:
The app can be access while my wife and I are on our VPN. Using an internal domain, we can access the webapp and then add it to our homescreens like a native application.
The homescreen provides quick access to:
- The number of USA States we have seen out of 50 (helps us track our progress)
- The number of unique license plates we have seen which could include plates like Washington D.C., Puerto Rico, states in Mexico, provinces in Canada, etc. (helps us keep the game fun if we finish all 50 states)
- A list of states that have not been seen yet and the ability to mark them as seen
When you click the Mark as Seen button, you are presented a confirmation window to verify this wasn’t an accidental click.
When you click “Confirm”, the popup closes, the state disappears from the list, and then confetti falls from the top of the screen briefly to celebrate marking off another state.
Sightings Page:
Finally, there is a page of the app that shows data on our sightings for the current year. This page shows the state, country, the date/time seen, and the location the plate was seen (by using phone GPS when marking plate as seen). Each column is sortable.
How it works:
Backend:
- Python (Flask)
- SQLite (Database)
- CORS (Cross-Origin Resource Sharing for frontend-backend communication)
Frontend:
- React (for building the UI)
- Tailwind CSS (for styling)
- NPM (for dependency management)
- JavaScript (for interactivity)
How can you follow along?
Since this app runs internally and I don’t have any current plans to expose my network to the internet, I push high level stats to a seperate webpage that is sourced on github. Every night at 2:35 AM, my app does a push to github to update https://licenseplates.cond.io/. If you’re intersted in seeing where we stand for the current year, this site is the best way for me to distribute that data for now. In the future, I may write a BlueSky bot to make posts everytime we see a state, but it’s not high on my priority list.
If you have any questions about the app or the site, please message me on BlueSky.