Files
2026-05-13 14:29:13 +02:00

2.5 KiB

Motivation

This application was developed by Theo Tappe as a comprehensive technical showcase for my application and to have some fun with friends. It demonstrates a full-stack approach, combining cross-platform development with a robust, automated infrastructure.

Frontend Architecture

  • Native Performance via KMP: By leveraging Kotlin Multiplatform, the app compiles to native binaries. This ensures the UI remains fluid and responsive, meeting the high performance standards of modern applications.

  • Maximum Code Reuse with Compose Multiplatform: The entire UI layer is built using Compose Multiplatform, sharing code across all supported platforms. This ensures feature parity and allows a single developer to maintain a multi-platform ecosystem efficiently.

  • End-to-End Type Safety: To eliminate integration errors, Data Transfer Objects (DTOs) are shared between the frontend and backend. This creates a "Single Source of Truth," ensuring the app and server are always in sync and reducing bugs during API communication.

Backend Setup

  • Zero-Trust Validation: While the client provides instant feedback for a smooth UX, all data is strictly validated on the backend. This ensures the system remains secure and resilient against manipulated client-side requests.

  • Financial Data Integrity: To avoid the precision errors common with floating-point math, money is handled via a dedicated Cash class using Long values for both major and minor units, which ensures accuracy for all financial calculations.

  • Real-World Data Integration: The application integrates with the Alpaca API to fetch market data.

Infrastructure & DevOps

The application is deployed on a self-managed production environment that I have maintained for several years, hosting services like Nextcloud, GitLab, Homeassistant or Vaultwarden (Bitwarden server). This project follows Infrastructure as Code principles:

  • Orchestration with Kubernetes via K3S: Backend services are containerized and managed within a K3S cluster. This setup ensures high availability, automated rollouts, and efficient resource management.

  • Reproducible Systems via NixOS: K3S runs on NixOS, allowing for entirely declarative and reproducible system configurations. This minimizes "it works on my machine" issues and ensures a stable production environment.

  • Virtualization with Proxmox: The entire stack is hosted on a Proxmox VE cluster. This allows me to manage an internal network including TrueNAS for storage, OPNsense for networking and NixOS for deploying.