Une API de gestion bancaire personnelle qui ne se contente pas de lister le passé, mais projette votre avenir financier. En intégrant nativement les transactions récurrentes et prévisionnelles, elle permet de visualiser l'état de votre solde à 6, 12 ou 24 mois.
Le projet repose sur une infrastructure hybride visant la haute disponibilité et le coût zéro :
- Production : Déployée sur un cluster k3s (Raspberry Pi) avec base de données PostgreSQL managée sur Aiven Cloud.
- Messaging : Système orienté événements utilisant Kafka (Aiven) en production et Redpanda (C++) en préproduction pour optimiser les ressources du Pi.
- GitOps : Déploiement automatisé via GitHub Actions (Multi-arch ARM64 images) et synchronisation continue.
- Backend: Java 25 (Records, Virtual Threads), Spring Boot 3.4.
- Data: Spring Data JPA, Hibernate, PostgreSQL.
- Streaming: Spring Kafka / Redpanda.
- Sécurité: Spring Security, JWT (HttpOnly Cookies), SSL Encryption.
- DevOps: Podman (Rootless), k3s, GitHub Actions, GHCR.io.
| Feature | Développement | Préproduction | Production |
|---|---|---|---|
| Host | Local Machine | Raspberry Pi (k3s) | Raspberry Pi (k3s) |
| Database | Podman (Postgres) | Podman (Postgres) | Aiven Cloud (SSL) |
| Broker | Redpanda (Local) | Redpanda (C++) | Aiven Kafka |
Contrairement aux outils classiques qui calculent le solde à la volée, MyBank utilise une génération asynchrone :
- Une règle de récurrence est créée.
- Un événement est envoyé dans Kafka/Redpanda.
- Un service génère les transactions futures (
is_projection = true) en base. - Le solde cumulé est récupéré via une Window Function SQL ultra-performante :
SUM(amount) OVER (ORDER BY date)
- Zéro Secret : Aucun mot de passe n'est présent dans le code. Utilisation des variables d'environnement.
- SSL : Connexion obligatoire chiffrée vers Aiven Cloud.
- Isolation : Containers de préprod tournant en mode "Rootless" sur le Raspberry Pi.
- Lancer l'infrastructure locale :
podman-compose up -d