Senior Backend Engineer · Java / Spring Boot · Python / FastAPI
8+ years · Fintech · Microservices · Event-Driven Architecture
Based in Paris · Open to international freelance contracts
| Domain | Capabilities |
|---|---|
| Event-Driven Systems | Kafka, Dead Letter Topics, DDD, at-least-once delivery, Hexagonal Architecture |
| Resilient API Gateways | Circuit breaker, rate limiting, retry, JWT validation, WebFlux, Resilience4j |
| Fintech / Payments | Stripe integration, idempotency, webhooks, JWT/RBAC, PSD2-aware APIs |
| Data Pipelines | Real-time ETL, OHLCV aggregation, Kafka + Pandas + PostgreSQL |
| ML APIs | scikit-learn, MLflow model registry, feature engineering, FastAPI serving |
| SaaS Products | Multi-tenant billing systems, multi-currency, Docker Compose deploy |
Backend — Java / Spring
Backend — Python
Data & Messaging
Observability
Frontend
DevOps & Testing
Event-driven microservice built on Hexagonal (Clean) Architecture — demonstrating how to design a Kafka consumer that is resilient to failure, testable without infrastructure mocks, and completely decoupled from the framework at the domain layer.
Architecture — 4-module Maven (strict dependency rule)
exposition ──► infrastructure ──► application ──► domain
(pure Java · zero framework deps)
Key design decisions
| Pattern | Implementation |
|---|---|
| Retry + DLT | @RetryableTopic — 3 attempts, ×2 exponential backoff, automatic Dead Letter Topic routing |
| DDD | Aggregate roots, value objects, domain events — JPA entities never cross into the domain |
| Hexagonal Architecture | Domain has zero Spring/JPA imports — ports are plain Java interfaces |
| Integration testing | Testcontainers spins up real Kafka + PostgreSQL — no H2, no mocks for the DB layer |
| API docs | OpenAPI 3 generated from controllers, browsable at /api/docs |
Java 21 Spring Boot 3 Apache Kafka DDD Hexagonal Architecture Clean Architecture
Testcontainers Docker Compose OpenAPI Event-Driven Dead Letter Topic
Production-grade reactive API Gateway implementing the full resilience stack — circuit breaker, rate limiting, retry, and JWT validation — with a pre-built Prometheus + Grafana observability dashboard.
Filter chain (every request passes through in order)
Client
│
▼ RequestLoggingFilter — logs method, path, latency (global)
│
▼ JwtAuthenticationFilter — validates HS256 token · injects X-User-Email / X-User-Role
│
▼ RedisRateLimiter — token bucket per user (50 req/s) or per IP (20 req/s) · 429 on exceed
│
▼ CircuitBreaker — Resilience4j · CLOSED → OPEN at 30–50% failure rate · fallback 503
│
▼ Retry — exponential backoff on 502/503/504 · POST /payments never retried
│
▼ Downstream Service
Key design decisions
| Pattern | Implementation |
|---|---|
| Circuit Breaker | Stricter for payments (30% / 30 s open) than user service (50% / 10 s open) |
| Rate Limiting | Redis Lua script — atomic token bucket, works across multiple gateway instances |
| JWT propagation | Authorization header removed before forwarding; downstream trusts X-User-* headers only |
| POST idempotency | POST /payments is excluded from retry to prevent double-charges |
| Observability | Prometheus scrapes /actuator/prometheus; Grafana shows P50/P95/P99, CB states, 429 rate |
Java 21 Spring Cloud Gateway Resilience4j Circuit Breaker Rate Limiting Redis
JWT Prometheus Grafana Docker Compose OpenAPI Microservices Resilience Patterns
| Project | Description | Stack |
|---|---|---|
| spring-kafka-microservice-demo | Event-driven microservice — Kafka retry, DLT, Hexagonal Architecture, Testcontainers | Spring Boot 3, Kafka, DDD |
| api-gateway-resilience-demo | Reactive API gateway — circuit breaker, rate limiting, JWT, Prometheus + Grafana | Spring Cloud, Resilience4j, Redis |
| payment-account-api | REST API with JWT, RBAC, RFC 7807 error handling, Testcontainers | Spring Security 6, PostgreSQL |
| notification-service | Multi-channel notifications (Email / SMS / Push) unified under one API | Twilio, Firebase FCM, Thymeleaf |
| batch-processing-demo | CSV / Excel import pipeline with skip policy and job restart | Spring Batch 5, Apache POI |
| Project | Description | Stack |
|---|---|---|
| financial-etl-pipeline | Real-time market data ETL with OHLCV aggregation | aiokafka, Pandas, PostgreSQL |
| credit-scoring-api | ML credit scoring API with model versioning and audit logging | scikit-learn, MLflow, FastAPI |
| payment-service | Payment microservice with Stripe + Redis idempotency layer | FastAPI, Stripe, Redis |
| fastapi-finance-api | Personal finance manager REST API — async, JWT, Alembic | FastAPI, SQLAlchemy 2.0, JWT |
| price-monitor | E-commerce price monitor with multi-spider scraping and alerts | Scrapy, Celery, Redis |
exposition → infrastructure → application → domain
(pure Java / Python · zero framework deps)
Every project applies the same set of principles:
- Hexagonal / Clean Architecture — domain layer has no Spring, JPA, or Kafka imports
- Event-driven — Kafka with @RetryableTopic + Dead Letter Topic for fault tolerance
- Resilience patterns — circuit breaker, rate limiting, retry with exponential backoff
- RFC 7807 ProblemDetail — structured error responses on all REST APIs
- Testcontainers — integration tests run against real PostgreSQL and Kafka, never H2
- OpenAPI 3 — auto-generated interactive docs on every service
- JWT + RBAC — stateless auth, role-based access control, 30 min access / 7 day refresh tokens
Decimalnotfloatfor all monetary values · UUID primary keys · PostgreSQL for all persistence
I'm available for part-time and full-time remote contracts — fintech backends, microservices, data pipelines, and API development.
| Platform | Rate | Profile |
|---|---|---|
| Upwork | 55–80 $/h | View profile |
| Malt | 500–550 €/day | View profile |
Response time: within 24 hours · Timezone: CET (Paris)
Open to fintech, payments, microservices, and data engineering contracts.

