Seuraavassa lyhyt esittely kehittämästäni varallisuudenhallintasovelluksesta.

Jutun lopussa kerron käyttämistäni ohjelmointityökaluista ja -menetelmistä.

Taseen kirjaaminen varallisuudenhallinnan verkkosovelluksessa

Sovelluksessa voi luoda uuden taseen esimerkiksi kerran kuukaudessa. Taseeseen kirjataan tilien saldot tiettynä päivänä.

Listanäkymässä näkee kokonaisvarallisuutensa sekä bruttona (gross) että nettona (net). Erona on, että nettosummasta on vähennetty maksettavaksi koituvat verot, jos päättäisit myydä omaisuutesi ja muuttaa Thaimaahan joogaopettajaksi.

Lista taseista varallisuudenhallintasovelluksessa.
Lista taseista varallisuudenhallintasovelluksessa.

Klikkaamalla tasetta pääsee muokkaamaan tilien rahasummia ja kirjoittamaan kommentteja. Jokaisen tilin osalta on näkyvissä ero edelliseen taseeseen.

Yksittäisen taseen muokkaaminen varallisuudenhallintasovelluksessa.
Yksittäisen taseen muokkaaminen varallisuudenhallintasovelluksessa.

Tilien hallinta varallisuudenhallinnan verkkosovelluksessa

Taseissa näkyviä tilejä hallinnoidaan omasta listanäkymästä.

Lista tileistä varallisuudenhallintasovelluksessa.
Lista tileistä varallisuudenhallintasovelluksessa.

Tili täytyy luokitella sen huomioimiseksi yhteenvetoraporteissa. Omaisuuden myynnistä aiheutuvan veroprosentin voi halutessaan syöttää. Tilin saldon historiallisen kehityksen ja tulevaisuuden ennusteen näkee oheisessa kuvaajassa.

Valitun tilin yksityiskohtanäkymä ja muokkaaminen.
Valitun tilin yksityiskohtanäkymä ja muokkaaminen.

Ryhmittelin omaisuustyyppini muutamaan luokkaan:

VarallisuusluokkaEsimerkkejä
KäteinenLompakko, pankkitili,
LyhytaikainenLuottokorttivelka, laina ystävälle
PitkäaikainenAsunto, metsä
KiinteäMökki, omaisuus jota et aio myydä
SijoituspääomaAlkusijoitus osakkeisiin tai ETF:iin
SijoitusvoittoOsakkeiden tai ETF:n arvonnousu
LainaAsuntolaina, opintolaina

Varallisuusluokkaa määrittävä tekijä on, kuinka nopeasti se voidaan tai kannattaa muuttaa käteiseksi ja millaisia veroseuraamuksia myynnistä aiheutuu.

Ennusteet varallisuudenhallinnan verkkosovelluksessa

Koska tase kertoo vain menneestä, järjestelmällinen varallisuuden hallinta edellyttää myös ennusteita.

Ennusteet on ryhmitelty kokonaisuuden hahmottamiseksi.

Ennusteen voi asettaa toistuvaksi esimerkiksi kerran kuukaudessa. Ympyränuoli-ikoni osoittaa jäljellä olevat toistot.

Vaakaikoni osoittaa vaikutuksen kokonaisvarallisuuteen seuraavan vuoden aikana.

Ennusteet ovat tärkeä osa oman talouden suunnittelua.
Ennusteet ovat tärkeä osa oman talouden suunnittelua.

Ennusteille määritellään funktio, joka suoritetaan valittuna päivänä. Oma funktio löytyy rahasumman lisäämiseen tai vähentämiseen tililtä, siirtämiseen tilitä toiselle, lainan takaisinmaksuun, sijoitustuotolle ja saldon muuttamiseksi kertoimella.

Ennusteen muokkausnäkymä varallisuudenhallinta sovelluksessa.
Ennusteen muokkausnäkymä varallisuudenhallinta sovelluksessa.

Analytiikka varallisuudenhallinnan verkkosovelluksessa

Tietojen syöttämisen tavoitteena on tuottaa hyödyllistä analytiikka parempien taloudellisten päätösten tekemiseksi.

Kiinnostavin kuvaajista lienee kokonaisvarallisuuden trendi. Toinen tärkeä graafi on käteisvarojen ennuste.

Tietojen syöttämisen lopputuloksena omasta varallisuudesta näkee analytiikkaa.
Tietojen syöttämisen lopputuloksena omasta varallisuudesta näkee analytiikkaa.

Ohjelmistokehityksessä käytetyt työkalut

Käytin sovelluksen kehittämiseen vakiotyökalupakkiani.

Käyttöliittymä ja taustajärjestelmä jaetaan samalta palvelimelta FastAPI-viitekehystä hyödyntäen. Ohjelmakoodi on siis Pythonia.

Käyttäjänhallinta on loogisesti eriytetty kokonaisuutensa.

Käyttöliittymä on HTML:ää ja Javascriptia. Yksittäisiä komponentteja on tehty Reactilla. Kehitin yksinkertaisia Javascript-funktioita, joiden ansiosta sovellus toimii niin sanotusti yksisivuisena. Käyttäjälle tällainen toteutus näyttäytyy nopeampana siirtymisenä näkymien välillä ja kehittäjälle helpompana tilan hallintana.

Varallisuudenhallintasovellus pilvessä

Sovellus toimii Docker-kontista yhdestä portista. Käyttöliittymä ja taustajärjestelmä löytyvät eri url osoitteista, esim /app ja /api.

Käytän kolmea eri ympäristöä:

  • Oma tietokone kehitykseen
  • Testiympäristö pilvessä
  • Tuotantoympäristö pilvessä

Jokaisen vaiheen jälkeen omalta koneelta voi ajaa tietokantamuutokset ja testisarjan käsin. Koko prosessi ei ole siis täysin automatisoitu.

Google Cloudissa Docker-konttia isännöidään Google Cloud Run-palvelussa.

Web-sovelluksen tietokanta

Tietokanta on PostgreSQL. Mielestäni SQL-tietokanta tekee sovelluskehityksestä systemaattisempaa, vaikka skaalautuvuus kärsisi. Tosin ongelmia ilmaantuisi vasta todella suurilla käyttäjämäärillä.

Kehitysympäristössä tietokanta on erillisessä Docker-kontissa. Tämä mahdollistaa kehitystyön myös netin toimiessa kehnosti. Testi- ja tuotantoympäristössä sovellus on yhteydessä Google Cloud SQL-tietokantapalvelimeen.

Sovellus on suunniteltu toimimaan useille käyttäjille. Ensimmäinen lähestymistapani oli luoda jokaiselle oman tietokanta.

Tämä osoittautui todella epäkäteväksi tietokannan vaatiessa muutoksia. Jokaisen käyttäjän tietokanta piti päivittää erikseen.

Siirryin lopulta malliin, jossa sovelluksella on vain yksi yhteinen tietokanta kaikille käyttäjille. Yhdestä sarakkeesta löytyy tieto, kenelle mikäkin kirjaus kuuluu. Vaikka toteutustapa vaatii enemmän ohjelmalogiikkaa, se vaikuttaa kokonaisuutena paljon selkeämmältä vaihtoehdolta.

Äärimmäistä tietoturvaa vaativille asiakkaille olisi silti mahdollista luoda omat tietokantapalvelimensa kohtuullisella vaivalla.

Tietokannan muutosten hallintaan käytetään Alembic-kirjastoa.

Varallisuudenhallintasovelluksen kustannukset

Kustannuksia tulee lähinnä tietokannasta, noin 10 euroa kuussa. Koska sovellus on tällä hetkellä vain omassa käytössäni, samaa tietokantaa voi hyödyntää myös muihin harrasteprojekteihin.

Google Cloud Run on omassa käytössä lähes ilmainen.