53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
#### 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.
|