This website is not finished. I started it because I wanted to learn Python, ORM and the framework Flask. And as I wanted to deploy it to my ISPConfig3 (Nginx + Mariadb) webserver I also had to dive into Docker. This is the first result, some 'highlights':
- Python 3 (3.6)
- Docker, docker-compose
Steps are development, staging and production, all using docker and docker-compose. Development uses the Flask development server, staging and production use the Gunicorn server. Finally, ISPConfig3 is used to control the domain, database and SMTP email, Nignx is configured as a reverse proxy.
I wrote software for a blog / CMS website, this website in fact, with user registration and a lot of administrator functions. So this is not a small project.
Do not expect to find here solutions like using CDNs, Google Analytics, Facebook plugins, etc. Privacy is one of the most important things in life. While impossible to prevent tracking us and collecting our valuable private data, I believe we all must make an effort to minimize this.
While the text of this website is written in English, it supports multiple languages using the Flask-Babel extension. The other language texts are machine translated at the moment using the DeepL API and sometimes are far from perfect, but you can always edit the messages.po files.
Artificial intelligence (AI) is invading our lives in many ways. Python is the language used with machine learning and deep learning. Personally I do not like these developments because no one can be held liable for the decisions taken. But AI can also help us in good ways like recommending other news items at the end of a news item.
Was also looking for a Python GUI. Started using tkinter but soon found this had many limitations for my purpose. Bumped into Kivy and went building a first app with it. It is not easy but the nice thing is you can deploy a Kivy app also on Android. Will also be posting about my Kivy project.
The next months I will try to document some of the things I did to make this work, like using SQLAlchemy without Flask-SQLAlchemy, migrations using Alembic, minimizing the size of a Docker image using Python wheels, docker-compose configurations. Of course most information can be found on the internet, meaning experienced programmers probably will not find much new.
Thank you, Peter
- How to set the timezone when using the Python Alpine Docker image
- Flask multilanguage processing, switching and the 404 Page Not Found exception
- Two Flask apps, frontend and admin, on one domain using DispatcherMiddleware
- Adding url_for() links to Jinja templates of a Flask multilanguage website
- ISPConfig: running a Python Flask Docker container as a jailed Shell User
- Converting to a multilanguage database