I run a side project podcatcher site https://jcasts.io. As I don't have a lot of spare time and this isn't making money, simple+cheap are important factors, so I stick with what I'm familiar with and only adopt new things when I have the need.
- Django
Enough said, really, it's a solid workhorse with a healthy ecosystem. The admin feature is very useful for simple backend data management. No other particular reason to pick this over Rails, Laravel etc other than my familiarity with Python and the framework.
- PostgreSQL
No issues here, works just fine. I use the full text search instead of a separate search indexer such as Elastic - it makes the deployment simpler and reduces overhead of serializing and syncing the search index and database. You can get good performance by paying attention to queries and indexing.
- Redis
Caching and queuing. I use rq [1] rather than Celery for running background tasks, it's less complex and generally easier to work with, especially if your needs are simple.
- HTMX and AlpineJS
SPAs can be a pain to build and maintain if you are a solo developer - it's almost like building two separate applications, and then you have to handle the integration of your backend API and frontend app. HTMX [2] lets me get 90% of the way there while still using plain Django views and templates, while still providing a smooth end-user experience. AlpineJS [3] is great for dealing with the more complex interactions where Javascript is really needed, but I still want some lightweight structure.
- Tailwind
I'm not a designer/CSS guru, so Tailwind is great for providing sensible defaults. Was a bit skeptical at first of maintaining long inline class names vs something like Bootstrap, but Tailwind turned out to be surprisingly productive.
- Dokku
Basically Heroku without the expense. Has a ton of features and buildpacks for managing single-node applications, from LetsEncrypt integration to database backups. As I run the whole thing on a single Digital Ocean droplet, this is perfect - not sure what the next step would be when/if I need to scale up to a multi-server setup.
- Ansible
For any server setup and routine maintenance stuff.
- Mailgun
Email sending. Still on free tier.
- Github Actions
CI/CD pipeline. Works fine, very few outages or issues, pretty easy to set up.
I use almost the same stack, except instead of Alpine + htmx I just use Unpoly. Have you tried it? If so, why did you prefer your choices? Any reason you'd recommend your approach?
I looked briefly at Unpoly - it looks an interesting project, but htmx had all the features I needed and the developer was very responsive to questions and bugfixes. It also had good library support for Django (django-htmx).
I also used Hotwire for a while, but that seemed much more of a Rails thing and again, htmx was just a better fit for what I needed to do.
- Django
Enough said, really, it's a solid workhorse with a healthy ecosystem. The admin feature is very useful for simple backend data management. No other particular reason to pick this over Rails, Laravel etc other than my familiarity with Python and the framework.
- PostgreSQL
No issues here, works just fine. I use the full text search instead of a separate search indexer such as Elastic - it makes the deployment simpler and reduces overhead of serializing and syncing the search index and database. You can get good performance by paying attention to queries and indexing.
- Redis
Caching and queuing. I use rq [1] rather than Celery for running background tasks, it's less complex and generally easier to work with, especially if your needs are simple.
- HTMX and AlpineJS
SPAs can be a pain to build and maintain if you are a solo developer - it's almost like building two separate applications, and then you have to handle the integration of your backend API and frontend app. HTMX [2] lets me get 90% of the way there while still using plain Django views and templates, while still providing a smooth end-user experience. AlpineJS [3] is great for dealing with the more complex interactions where Javascript is really needed, but I still want some lightweight structure.
- Tailwind
I'm not a designer/CSS guru, so Tailwind is great for providing sensible defaults. Was a bit skeptical at first of maintaining long inline class names vs something like Bootstrap, but Tailwind turned out to be surprisingly productive.
- Dokku
Basically Heroku without the expense. Has a ton of features and buildpacks for managing single-node applications, from LetsEncrypt integration to database backups. As I run the whole thing on a single Digital Ocean droplet, this is perfect - not sure what the next step would be when/if I need to scale up to a multi-server setup.
- Ansible
For any server setup and routine maintenance stuff.
- Mailgun
Email sending. Still on free tier.
- Github Actions
CI/CD pipeline. Works fine, very few outages or issues, pretty easy to set up.
- [1] https://python-rq.org/
- [2] https://htmx.org
- [3] https://alpinejs.dev/