Behind the PyTexas.org Web App
PyTexas.org may not look too flashy on the outside but the tech behind the app is pretty interesting. In this post I’ll explain to you how we build the app and some of the decisions that went into making it.
Oldie but a Goodie
Parts of the web app are pretty standard battle tested Python libraries and frameworks. Some of these include:
- Django: Django is a popular web framework that lets us focus on the important things and takes cares of the boring parts of web development. We need to store some structured data for the conference so Django’s ORM helps do that with minimal effort.
The Young and Upcoming
- DJZen: DJZen is a new library that helps you start a new Django project. It comes with an easier URL structure and a project template that includes a static file server and production deployment setup out of the box.
- Graphene: Graphene is a Python implementation of GraphQL which not only allows you to build API’s very fast but also gives you a more standardize way to communicate data with your API. This helps improve your development velocity because you’ll need fewer iterations between your frontend and backend development.
- VueJS: The PyTexas.org site is build with a Single Page Architecture and using VueJS accomplishes this. It is also one of the easier frontend frameworks to learn, so the barrier to contributing to PyTexas.org is lower.
- Service Workers and Progressive Web Apps: One of the goals of the PyTexas.org site is to give a great app like experience and still work when your offline. With the new service worker feature and progressive web app development style, PyTexas.org fully functions offline after your first visit. It also functions more like a phone app than a website. This is all done in the background of your web browser with no install required.
SQLite + Google Drive: While working on PyTexas.org through the years we noticed that having a database and structuring data is great and very efficient for development but has the downside of extra administration and cost. Also, typically there is long period every year after the conference where the site does not get updated. Couple that with the fact that our data is really small and the cost of running a database doesn’t really add up.
This year we setup our database with SQLite in a single file. This matches our data size and performance needs perfectly, however, because its a single file database and we deploy to a non-persistent storage, we would lose our data with every deploy. To get around this, we added a Google Drive sync with gdrive. On every deploy we pull down the latest database from Google Drive, and then sync it back up when things change.