Skip to content
View M-Touiti's full-sized avatar

Block or report M-Touiti

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
M-Touiti/README.md

Mohamed

Senior Backend Engineer · Java / Spring Boot · Python / FastAPI
8+ years · Fintech · Microservices · Event-Driven Architecture
Based in Paris · Open to international freelance contracts


What I Build

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

Tech Stack

Backend — Java / Spring

Java Spring Boot Spring Security Spring Cloud Gateway Spring Kafka Spring Batch Resilience4j OpenAPI

Backend — Python

Python FastAPI

Data & Messaging

Apache Kafka PostgreSQL Redis SQLAlchemy Pandas

Observability

Prometheus Grafana MLflow

Frontend

React TypeScript Tailwind CSS Vite

DevOps & Testing

Docker Testcontainers Stripe AWS


Featured Projects

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


Open-Source Portfolio

Java / Spring Boot

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

Python / FastAPI

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

Architecture Principles

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
  • Decimal not float for all monetary values · UUID primary keys · PostgreSQL for all persistence

GitHub Stats


Hire Me

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.

Pinned Loading

  1. spring-kafka-microservice-demo spring-kafka-microservice-demo Public

    Event-driven microservice built with Spring Boot 3, Kafka, and Clean Architecture. Features circuit breaker, idempotent subscription flow, Testcontainers integration tests, OpenAPI docs, and Promet…

    Java

  2. api-gateway-resilience-demo api-gateway-resilience-demo Public

    API Gateway with Circuit Breaker, Rate Limiting, Retry, and JWT authentication — built with Spring Cloud Gateway and Resilience4j. Includes Prometheus + Grafana monitoring and a Postman demo collec…

    Java

  3. payment-account-api payment-account-api Public

    Production-grade payment account REST API — Spring Boot 3, JWT, Clean Architecture, Testcontainers

    Java

  4. batch-processing-demo batch-processing-demo Public

    Production-grade Spring Batch microservice — CSV & Excel financial transaction import with validation, parallel chunk processing, skip policy, currency conversion, and REST job monitoring. Hexagona…

    Java

  5. notification-service notification-service Public

    Production-grade notification microservice — multi-channel (Email, SMS, Push), event-driven with Kafka retry/DLT, clean architecture, Testcontainers integration tests. Built with Spring Boot 3, Twi…

    Java