Home
BudgetBuddy Development Blog
Willkommen beim Entwicklungsblog von BudgetBuddy - einer F# Full-Stack Anwendung zur persönlichen Finanzverwaltung.
Über das Projekt
BudgetBuddy verbindet dein Bankkonto (Comdirect) mit YNAB (You Need A Budget) und kategorisiert Transaktionen automatisch mit einer regelbasierten Engine.
Tech Stack:
- Frontend: Elmish.React + Feliz + TailwindCSS
- Backend: Giraffe + Fable.Remoting
- Datenbank: SQLite + Dapper
- Deployment: Docker + Tailscale
Blogposts
Automatische Blog-Veröffentlichung mit Jekyll und GitHub Pages – Zero-Config Publishing für Entwickler
29.11.2025 - Wie ich in 15 Minuten ein automatisches Blog-Publishing-System mit Jekyll und GitHub Actions aufgesetzt habe – komplett kostenlos und ohne Server.
Integration Testing ohne UI: Wie ich YNAB und Comdirect APIs testbar machte
29.11.2025 - Wie teste ich externe API-Integrationen, wenn das UI noch nicht fertig ist? Mit F# Scripts und CLI-Tools.
Milestone 4: Comdirect API Integration – OAuth, Push-TAN und die Tücken von Banking-APIs
29.11.2025 - Implementierung einer sicheren Bankverbindung mit OAuth 2.0 und Push-TAN für die Comdirect API.
Milestone 5: Rules Engine - Automatische Kategorisierung mit F# Regex und Type Safety
29.11.2025 - Das Herzstück der Automatisierung: Regelbasierte Kategorisierung mit Pattern Matching, Regex und F#’s Type-System.
Milestone 6: Backend API Implementation – 29 Endpoints und die Kunst der Fehlerbehandlung in F#
29.11.2025 - Von isolierten Modulen zur vollständigen API: 29 Endpoints mit konsistenter Fehlerbehandlung, Input-Validation und Session-Management.
Frontend Redesign Mobile First
30.11.2025 - Frontend-Redesign: Von “extrem hässlich” zu Premium Mobile-First UI
Milestone 7: Frontend-Implementierung – Von der leeren Leinwand zur vollständigen Elmish-App
30.11.2025 - Milestone 7: Frontend-Implementierung – Von der leeren Leinwand zur vollständigen Elmish-App
Von CSS-Chaos zu F# Design System: Eine Typensichere UI-Komponentenbibliothek aufbauen
30.11.2025 - Von CSS-Chaos zu F# Design System: Eine Typensichere UI-Komponentenbibliothek aufbauen
Bug-Jagd: Wenn die YNAB API nicht das liefert, was man erwartet
30.11.2025 - Bug-Jagd: Wenn die YNAB API nicht das liefert, was man erwartet
Von 1000 Zeilen Monolith zu modularen MVU-Komponenten – Frontend-Refactoring in F#/Elmish
30.11.2025 - Von 1000 Zeilen Monolith zu modularen MVU-Komponenten
Ein Neon-Design-System planen – Vom DaisyUI-Standard zur eigenen visuellen Identität
30.11.2025 - Ein Neon-Design-System planen
Neon Design System: Phase 3 & 4 – Der letzte Schliff
04.12.2025 - Neon Design System: Phase 3 & 4 – Der letzte Schliff
Milestone 13: Duplicate Detection – Wie ich doppelte Bank-Transaktionen in YNAB verhindere
05.12.2025 - Milestone 13: Duplicate Detection
Milestone 14: Split Transactions – Wenn eine Transaktion in mehrere Kategorien gehört
06.12.2025 - Milestone 14: Split Transactions – Wenn eine Transaktion in mehrere Kategorien gehört
Milestone 15: Polish & Testing - Der finale Schliff
06.12.2025 - Milestone 15: Polish & Testing - Der finale Schliff
Test-Isolation: Warum meine Persistence-Tests 236 Rules in die Production-DB geschrieben haben
07.12.2025 - Test-Isolation: Warum meine Persistence-Tests 236 Rules in die Production-DB geschrieben haben
Debugging-Marathon: YNAB-Integration, Race Conditions und die Tücken von JSON-Serialisierung
08.12.2025 - Debugging-Marathon: YNAB-Integration, Race Conditions und die Tücken von JSON-Serialisierung
Test-Coverage und Datenbereinigung: Von 220 auf 279 Tests und die Jagd nach unsichtbaren Zeichen
09.12.2025 - Test-Coverage und Datenbereinigung: Von 220 auf 279 Tests und die Jagd nach unsichtbaren Zeichen
UI-Optimierungen: Kompakte Listen, Searchable Selects und Optimistic UI
09.12.2025 - UI-Optimierungen: Kompakte Listen, Searchable Selects und Optimistic UI
Transparente Duplicate Detection: Warum zeigt mir BudgetBuddy Duplikate an?
11.12.2025 - Transparente Duplicate Detection: Warum zeigt mir BudgetBuddy Duplikate an?
UI Performance Revolution: Von 15 Sekunden auf 18ms und eine neue SearchableSelect-Komponente
11.12.2025 - UI Performance Revolution: Von 15 Sekunden auf 18ms und eine neue SearchableSelect-Komponente
Docker-Operations: Encryption-Bug, Deploy-Script und Comdirect Connection Test
15.12.2025 - Docker-Operations: Encryption-Bug, Deploy-Script und Comdirect Connection Test
Form Validation UX und minimalistisches Dashboard Redesign
15.12.2025 - Form Validation UX und minimalistisches Dashboard Redesign
Frontend Architecture Refactoring: 8 Milestones zur besseren Codequalität
15.12.2025 - Frontend Architecture Refactoring: Vom Review zur Implementierung
BudgetBuddy Architektur-Guide: Ein F# Full-Stack Deep Dive
16.12.2025 - BudgetBuddy Architektur-Guide: Ein F# Full-Stack Deep Dive
Der versteckte Bug: Wie ein Format-Mismatch zu Duplikaten führte
16.12.2025 - Der versteckte Bug: Wie ein Format-Mismatch zu Duplikaten führte
Payee-Feature: ComboBox mit Gruppierung und External Links
29.12.2025 - Payee-Feature: ComboBox mit Gruppierung und External Links
DaisyUI raus, Prototyp rein: Eine CSS-Framework-Migration in einer F# Elmish App
22.03.2026 - DaisyUI raus, Prototyp rein: Eine CSS-Framework-Migration in einer F# Elmish App
| Development Diary | GitHub Repository |
Posts
-
DaisyUI raus, Prototyp rein: Eine CSS-Framework-Migration in einer F# Elmish App
-
Payee-Feature: ComboBox mit Gruppierung und External Links
-
Der versteckte Bug: Wie ein Format-Mismatch zu Duplikaten führte
-
BudgetBuddy Architektur-Guide: Ein F# Full-Stack Deep Dive
-
Frontend Architecture Refactoring: 8 Milestones zur besseren Codequalität
-
Form Validation UX und minimalistisches Dashboard Redesign
-
Docker-Operations: Encryption-Bug, Deploy-Script und Comdirect Connection Test
-
UI Performance Revolution: Von 15 Sekunden auf 18ms und eine neue SearchableSelect-Komponente
-
Transparente Duplicate Detection: Warum zeigt mir BudgetBuddy Duplikate an?
-
UI-Optimierungen: Kompakte Listen, Searchable Selects und Optimistic UI
-
Test-Coverage und Datenbereinigung: Von 220 auf 279 Tests und die Jagd nach unsichtbaren Zeichen
-
Debugging-Marathon: YNAB-Integration, Race Conditions und die Tücken von JSON-Serialisierung
-
Test-Isolation: Warum meine Persistence-Tests 236 Rules in die Production-DB geschrieben haben
-
Milestone 15: Polish & Testing - Der finale Schliff
-
Milestone 14: Split Transactions – Wenn eine Transaktion in mehrere Kategorien gehört
-
Milestone 13: Duplicate Detection – Wie ich doppelte Bank-Transaktionen in YNAB verhindere
-
Neon Design System: Phase 3 & 4 – Der letzte Schliff
-
Ein Neon-Design-System planen – Vom DaisyUI-Standard zur eigenen visuellen Identität
-
Von 1000 Zeilen Monolith zu modularen MVU-Komponenten – Frontend-Refactoring in F#/Elmish
-
Bug-Jagd: Wenn die YNAB API nicht das liefert, was man erwartet
-
Von CSS-Chaos zu F# Design System: Eine Typensichere UI-Komponentenbibliothek aufbauen
-
Milestone 7: Frontend-Implementierung – Von der leeren Leinwand zur vollständigen Elmish-App
-
Frontend Redesign Mobile First
-
Milestone 6: Backend API Implementation – 29 Endpoints und die Kunst der Fehlerbehandlung in F#
-
Milestone 5: Rules Engine - Automatische Kategorisierung mit F# Regex und Type Safety
-
Milestone 4: Comdirect API Integration – OAuth, Push-TAN und die Tücken von Banking-APIs
-
Integration Testing ohne UI: Wie ich YNAB und Comdirect APIs testbar machte
-
Automatische Blog-Veröffentlichung mit Jekyll und GitHub Pages – Zero-Config Publishing für Entwickler
subscribe via RSS