Finance Management System - Spendify
As part of my Bachelor’s thesis at Roskilde University, I developed a scalable and secure finance management system aimed at improving users' financial awareness. The project focused on connecting users to their Danish bank accounts via Nordigen’s API, allowing them to visualize and categorize their transactions. Built with a client-server architecture, the system leverages a React frontend and a Node.js/Express backend. It features OAuth 2.0 authorization and JWT-based authentication, ensuring secure data access and user privacy.
System Architecture & API Integration
Designed a layered server architecture integrating Nordigen’s API to allow users to fetch transaction and account balance data from multiple Danish banks. The server interacts with a PostgreSQL database to store user credentials, account details, and device information. A RESTful API was implemented using Express.js, managing secure communication between the client and server while processing user requests efficiently.
Data Processing & Categorization
Implemented a rule-based transaction categorization system to organize user expenses into predefined categories such as Food & Groceries, Transfers, and Utilities. The system processes incoming transaction data in real-time, assigning categories using keyword matching algorithms. This approach enhances user experience by allowing them to filter and visualize their expenses across customizable date ranges, with options to compare transaction histories over different periods.
Security & Authorization
Integrated OAuth 2.0 and JSON Web Tokens (JWT) to handle secure authentication and authorization, ensuring that sensitive user data is protected during all interactions with the system. The application also implements a refresh token mechanism to extend session longevity without compromising security. User devices are tracked during login sessions, and additional security features, such as IP-based monitoring, were proposed to improve account safety.