Autor – Marcin Nowak
1. Cel i podstawowe założenia
Celem pracy jest zaprojektowanie i realizacja modułu analitycznego aplikacji która ułatwi użytkownikom zarządzanie budżetem domowym poprzez dostarczenie narzędzia do analizy wpływów i wydatków, wizualizacji trendów oraz automatycznej kategoryzacji wprowadzonych danych. W zamierzeniu, aby ułatwić obsługę, wymagać będzie minimalnej wiedzy i konfiguracji ze strony użytkownika, dostarczając jednocześnie możliwie najlepsze narzędzia. Będzie to aplikacja przeglądarkowa napisana w języku Python, wykorzystująca pakiety (tzw.: frameworki): Bootstrap, Flask, WTForms, jinja2, oraz bibliotekę chart.js.
2. Realizacja pracy
Przygotowane rozwiązanie spełnia założenia określone w celu pracy. Pełny kod aplikacji w obecnej formie dostępny jest w publicznym repozytorium Git wraz z licencją open source. Rozwiązanie przyjęło formę aplikacji przeglądarkowej Righten skonteneryzowanej na platformie uruchomieniowej Docker. Aplikację napisano w języku Python, z wykorzystaniem pakietów Flask oraz Bootstrap. Dane przechowuje w bazie PostgreSQL o architekturze współdzielonej bazy i schematu ponieważ wstępnie założone podejście współdzielonej bazy i oddzielnego schematu okazało się zbyt skomplikowane i nieadekwatne do skali projektu. Zadowalający poziom zabezpieczeń osiągnięto przez separację dostępu na poziomie rekordu, a samą odpowiedzialność zapewnienia odpowiedniego dostępu przesunięto do warstwy logiki biznesowej (tzw.: backend). Aplikacja wykorzystuje także wiele bibliotek zewnętrznych jak jschart do generowania wykresów, czy WTForms do obsługi danych wprowadzanych przez użytkownika.
3. Produkt końcowy – gotowa aplikacja
Podstawowe wymagania aplikacji
Ponieważ środowisko aplikacji został skonteneryzowane, uruchomić ją można lokalnie na maszynie użytkownika lub na dedykowanym serwerze. W obu przypadkach należy zainstalować i uruchomić aplikację Docker, następnie w głównym katalogu aplikacji pod ścieżką ./Righten/Sources , w którym znajduje się plik Docker-compose.yaml uruchomić tworzenie środowiska poleceniem docker compose up –detached. Administrator może edytować dane zawarte w tym pliku, oraz w plikach .env oraz __init__.py aby zmienić ważne ustawienia aplikacji jak port na którym aplikacja wystawiona jest na zewnątrz czy poświadczenia użytkownika administracyjnego bazy danych aplikacji. Na czas rozwoju aplikacji administrator może ustawić zmienną środowiskową FLASK_ENV która znajduje się w pliku ./Righten/Sources/Web/Resources/.env na wartość development aby uruchomić aplikację w trybie debugowania w środowisku programistycznym – ta wersja aplikacji działa na lokalnej bazie SQLite która znajduje się w katalogu projektu.
![](https://www.wsti.pl/wp-content/uploads/2024/07/image10.jpg)
Budowanie skonteneryzowanego środowiska
![](https://www.wsti.pl/wp-content/uploads/2024/07/image3.jpg)
Inicjalizacja bazy danych RightenDB w PostgreSQL
Po wstępnej inicjalizacji podczas pierwszego uruchomienia dane z kontenera bazy PostgreSQL przechowywane są na dysku komputera gospodarza, więc kolejnym razem krok inicjalizacji jest pomijany. Zrzut ekranu prezentuje kontener aplikacji który okresowo próbuje nawiązać połączenie z bazą do skutku – sukces widać na kolejnej grafice.
![](https://www.wsti.pl/wp-content/uploads/2024/07/image4.jpg)
![](https://www.wsti.pl/wp-content/uploads/2024/07/image5.jpg)
4. Funkcjonalność oprogramowania
Aplikacja jest w stanie obsługiwać wielu użytkowników jednocześnie, a ich dane przechowuje we wspólnej bazie. Dzięki temu użytkownik może wprowadzić swoje zarobki, wydatki, oszczędności czy progi wydatków, oszczędności i ustalać priorytety a także w pełni nimi zarządzać. Righten udostępnia również przydatne wizualizacje które pozwalają użytkownikowi wyciągnąć wnioski z wprowadzonych przez siebie danych. Dodatkowym atutem jest wbudowany poradnik który wyjaśnia użytkownikom jak korzystać z aplikacji, a jednocześnie przekazuje wiedzę z dziedziny finansów, dzięki czemu aplikacja edukuje użytkowników. Podczas testów użytkownika końcowego aplikację wypełniono rzeczywistymi danymi z rachunków zgromadzonych z kilku miesięcy. Wizualizacje pomogły uwidocznić trendy w wydatkach, oraz kategorie i produkty które użytkownik samodzielnie określił jako mało ważne, więc pominięcie ich podczas zakupów w naturalny sposób skłania do oszczędności. Natomiast główny problem stanowi wymóg wprowadzania danych pojedynczo co wskazuje kierunek, rozwoju oprogramowania na przyszłość.
5. Informacje o możliwości wykorzystania / wykorzystaniu pracy
Architektura aplikacji umożliwia łatwą rozbudowę logiki, algorytmów analitycznych i wizualizacji. W przyszłości można więc poszerzyć zakres informacji dostępnych dla użytkownika oraz dodać kolejne funkcje które zaplanowano jednak na chwilę obecną nie zostały zaimplementowane – m.in. cele oszczędnościowe. Pozwala to także na rozwój modeli predykcyjnych z wykorzystaniem uczenia maszynowego, które mogą przewidywać trendy wydatków co zapewne okaże się wartościową informacją dla użytkownika systemu. W dłuższej perspektywie, przy większych nakładach pracy możliwe jest także wyciąganie ogólnych trendów statystycznych ze zagregowanych i odpowiednio zanonimizowanych danych użytkowników, co pozwoli przeprowadzać większe analizy ekonomiczne podobne do badań prowadzonych przez Główny Urząd Statystyczny. Tego typu dane mogą także posłużyć do wdrożenia mechanizmu gamifikacji (zwanej także grywalizacją) dzięki porównaniu danych użytkownika do średniej użytkowników aplikacji lub wybranej populacji, i pozytywne wzmocnienie trendów wskazujących zdrowe zarządzanie finansami poprzez zachęty i nagrody wewnątrz aplikacji.