Loading project...
contact

Additional information

Would you like to share more details?

Contact me

Replies within 24–48 hours.

services

  • Web and Mobile application development
  • Internal systems and dashboards
  • Automations and LLM Workflows
  • Data management and Cloud infrastructure
  • Security
  • Video production

portfolio

  • CityEventScout
  • Fintech App
  • 3D Web Game
  • Expense Tracker

resources

  • GitHub
  • YouTube
  • FAQs

navigation

  • About
  • Services
  • Portfolio
  • Home

©Copyright 2026 kamesprojects

GitHubLinkedInEmailYouTubeFAQs
Admin
KPR
AboutServicesPortfolioHome
KPR
Back to projects
Expense Tracker cover
Cloud-deployed Web ApplicationMay, 2025

Expense Tracker

School project: real-time expense tracking deployed on Azure Kubernetes Service (AKS)

Expense Tracker is a real-time web application for managing expenses with live synchronization across multiple clients. It uses Socket.IO for instant updates, stores data in MySQL, and is deployed to Microsoft Azure using Kubernetes (AKS) with NGINX Ingress and HTTPS via cert-manager and Let's Encrypt.

Tech stack

  • Microsoft Azure
  • AKS
  • ACR
  • Kubernetes
  • Docker
  • NGINX Ingress
  • cert-manager
  • Let's Encrypt
  • Python
  • Flask
  • Flask-WTF
  • Flask-SocketIO
  • Socket.IO
  • MySQL
  • Jinja2
  • Tailwind CSS
  • JavaScript
Expense Tracker preview

Project details

Overview

Users can add, edit, and delete transactions including a title, amount, note, and the client IP address. Updates propagate in real time to all connected clients through Socket.IO, while the full transaction history is persisted in a MySQL database.

Architecture

The application is a containerized Flask system deployed on AKS. The Flask app runs as a Kubernetes Deployment, while MySQL runs as a StatefulSet with a PersistentVolumeClaim for durable storage. The cluster uses NGINX Ingress to expose the app and cert-manager + Let's Encrypt to automate TLS certificates. Container images are stored in Azure Container Registry (ACR).

Frontend

Server-rendered HTML (Jinja2 templates) styled with Tailwind CSS and enhanced with JavaScript. The UI uses Socket.IO to receive and broadcast real-time updates and includes client-side validation and interactive modals.

Backend

A Flask backend provides server-side rendering and REST endpoints for transaction operations, plus Flask-SocketIO for real-time synchronization. Transaction data is stored in MySQL and total spending is computed via a dedicated endpoint.

Features

CRUD transaction management, real-time multi-client updates via Socket.IO, total expense calculation, client-side table search filter, IP-based transaction filtering, date sorting (ascending/descending), toast notifications for real-time action feedback, and new-row highlight animation.

Gallery

Project image lightbox

Expense Tracker

Year
May, 2025
Category
Cloud-deployed Web Application
Back to projects

Deployment

Deployed on Microsoft Azure using AKS and ACR. Kubernetes resources include a Deployment (Flask), StatefulSet + PVC (MySQL), Services, Secrets/ConfigMaps (env + init.sql), and NGINX Ingress with staging/production TLS manifests. The deployment workflow is automated with scripts that build/push images and apply manifests.

AI Processing

AI tools were used to help generate security patterns, understand Kubernetes/AKS concepts, and troubleshoot deployment issues.

Security

CSRF protection via Flask-WTF/CSRFProtect, server-side validation with WTForms, client-side input checks, basic input sanitization to reduce injection/XSS risks, and XSS mitigation through Jinja2 autoescaping. HTTPS is enabled via cert-manager and Let's Encrypt.

Testing

Manual testing focused on CRUD flows, real-time synchronization across clients, database persistence, and HTTPS ingress behavior.

Collaboration

Solo project (built end-to-end)

Database

MySQL stores transactions with fields for ip_address, title, amount (DECIMAL with non-negative constraint), currency (EUR), date (default current timestamp), and note.

Links

GitHub (educational): https://github.com/kamesprojects/expense-tracker-azure-k8s

Observability

Debugging and verification were performed primarily through Kubernetes logs and standard kubectl inspection commands during deployment.