Kori
A personal finance app that categorises transactions automatically.
- Technologies
- Vue 3, TypeScript, Vite, Dexie (IndexedDB), Pinia, Tailwind CSS 4, Workbox, Python 3.12, FastAPI, SQLAlchemy 2, PostgreSQL 16, Alembic, scikit-learn
What I built
An installable web app (PWA) that reads and writes to a local database. An API handles synced backups, accounts and notifications. A machine learning service categorises transactions automatically.
Technical choices
The app runs on Vue 3 and TypeScript, with Dexie on top of IndexedDB for the local database, Pinia for state and Workbox for offline support. The API is written in Python 3.12 with FastAPI, SQLAlchemy 2 and PostgreSQL 16, with migrations handled by Alembic. Categorisation relies on scikit-learn: TF-IDF vectorisation of transaction labels and a logistic regression, served by FastAPI. The repository also holds the brand guidelines, mockups, technical decisions and deployment guide.
The outcome
The app is live at kori.bykelani.dev.