58 lines
2.8 KiB
ReStructuredText
58 lines
2.8 KiB
ReStructuredText
|
History
|
||
|
=======
|
||
|
|
||
|
I created my own private accounting application in Perl_/mod_perl_ in
|
||
|
2007, as part of my personal website. The first revision was made
|
||
|
using Perl/Mojolicious_ in 2019, with the aim of making it
|
||
|
mobile-friendly using Bootstrap_, and with modern back-end and
|
||
|
front-end technologies such as jQuery.
|
||
|
|
||
|
The second revision was done in Python_/Django_ in 2020, as I was
|
||
|
looking to change my career from PHP_/Laravel_ to Python, but lacked
|
||
|
experience with large Python projects. I needed something in my
|
||
|
portfolio and decided to work on the somewhat outdated Mojolicious
|
||
|
project.
|
||
|
|
||
|
Despite having no prior experience with Django, I spent two months
|
||
|
working late nights to create the `Mia! Accounting Django`_
|
||
|
application. It took me another 1.5 months to make it an independent
|
||
|
module, which I later released as an open source project on PyPI.
|
||
|
|
||
|
The application worked nicely for my household bookkeeping for two
|
||
|
years. However, new demands arose over time, especially with tracking
|
||
|
payables and receivables. This was critical `during the pandemic`_ as
|
||
|
more payments were made online with credit cards.
|
||
|
|
||
|
The biggest issue I encountered was with
|
||
|
`Django's MTV architectural pattern`_. Django takes over the control
|
||
|
flow. I had to override several parts of the `class-based views`_ for
|
||
|
different but yet simple control flow logic. In the end, it became
|
||
|
very difficult to track whether things went wrong because I overrode
|
||
|
something or because it just wouldn't work with the basic assumption
|
||
|
of the class-based views. By the time I realized it, it was too late
|
||
|
for me to drop Django's MTV and rewrite everything from class-based
|
||
|
views to function-based views.
|
||
|
|
||
|
Therefore, I decided to turn to microframeworks_ like Flask_. After
|
||
|
working with modularized Flask and FastAPI_ applications for two
|
||
|
years, I returned to the project and wrote its third revision using
|
||
|
Flask in 2023.
|
||
|
|
||
|
|
||
|
.. _Perl: https://www.perl.org
|
||
|
.. _mod_perl: https://perl.apache.org
|
||
|
.. _Mojolicious: https://mojolicious.org
|
||
|
.. _Bootstrap: https://getbootstrap.com
|
||
|
.. _jQuery: https://jquery.com
|
||
|
.. _Python: https://www.python.org
|
||
|
.. _Django: https://www.djangoproject.com
|
||
|
.. _PHP: https://www.php.net
|
||
|
.. _Laravel: https://laravel.com
|
||
|
.. _Mia! Accounting Django: https://github.com/imacat/mia-accounting-django
|
||
|
.. _during the pandemic: https://en.wikipedia.org/wiki/COVID-19_pandemic
|
||
|
.. _FastAPI: https://fastapi.tiangolo.com
|
||
|
.. _Django's MTV architectural pattern: https://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names
|
||
|
.. _class-based views: https://docs.djangoproject.com/en/4.2/topics/class-based-views/
|
||
|
.. _microframeworks: https://en.wikipedia.org/wiki/Microframework
|
||
|
.. _Flask: https://flask.palletsprojects.com
|