#2 - Planned Tech stack

Framework, packages, database, and other tools used (to be used) in Wobu

Jun 13, 2023ยท

2 min read

We saw a brief background about Wobu in my previous post. After deciding the features that are planned for the first rollout, the logical next step will be to decide on the tech stack to be used.

The plan is to use django as the underlying framework.

Why: It's a time-tested framework in terms of reliability, scalability and speed. One can develop applications quickly as the base framework has a lot of nuts and bolts built-in so that the developer does not have to re-invent the wheel.

From a frontend perspective, I plan to keep it simple with html and css, no fancy frontend js frameworks. The only twist is to use tailwind css instead of plain vanilla.

Why: tailwind is a low-level css framework, meaning nothing is pre-built. I imagine it as Lego blocks, it's up to the developer's creativity and needs to build what they want. For someone coming more from a backend world, tailwind is quite intuitive and easy to understand. Most importantly, everything sits in html.

To bring in more reactive behavior, I'll use htmx wherever applicable.

Why: htmx is quite a tool in a developer's pocket. Especially when one does not want to start with heavy frontend frameworks, and still wants to provide an event-driven experience, htmx fits the bill.

The database is going to be Postgresql.

Why: Similar reasons as why I chose django plus it's a ORDBMS. Wobu is user-centric with a lot of text. Text search features are quite powerful in Postgresql.

pytest and pytest-django will be used for unit testing, and playwright and playwright-pytest for end-to-end testing.

Smart notifications will have a strong focus in Wobu. I'm exploring multiple options for real-time notifications, one is django channels and celery, another option is firebase cloud messaging, and the last one is magicbell.

For monitoring, I plan to start with Sentry that has django integration. I may explore a few other tools as the usage grows.

For deployment, I'm going to use Pulumi, an Infrastructure as code platform to deploy in AWS. I usually deploy directly on Digital Ocean and GCP. This will be my first time taking this route. Since I heard a lot of benefits about Pulumi from one of my favorite python communities, planning to give it a go.

There are other touchpoints like integrated chat in the website for customer support, newsletter subscription, and subscription payment. I've shortlisted products for each of these, but similar to notifications, I shall write separate short posts when we get there.

That's all for now ๐Ÿ‘‹