Riadh Mnasri

Portfolio

A selection of personal projects, built end to end: architecture, development, deployment.

See my full CV and freelance profile

EloChessPlanner

Born from my experience helping organize tournaments at Club Échecs Bois-Colombes.

Chess tournament organizer (FIDE Swiss system), Elo import from chess.com, Lichess, CSV or the French federation.

  • Next.js
  • TypeScript
  • PostgreSQL

OpeningBook

Chess opening repertoires shared across the family, with an embedded Stockfish engine.

Opening repertoire exploration through a position graph (FEN), Stockfish WASM engine and a Lichess game explorer.

  • Next.js
  • TypeScript
  • Stockfish WASM

Kortex

Replicable template that grew into a family of revision apps (Kafkex, Vocably, Lingopack).

Kotlin revision app based on spaced repetition (Leitner SRS), bilingual French/English.

  • Next.js
  • TypeScript

MissionMatch

Reference project demonstrating hexagonal/DDD architecture, test-first, end to end.

Kotlin/Spring Boot backend and Angular frontend demonstrating hexagonal/DDD architecture with TDD-BDD, Kafka event streaming and Terraform infrastructure. Not yet publicly deployed: screenshot taken locally.

  • Kotlin
  • Spring Boot
  • Angular
  • DDD
  • Hexagonal
  • Kafka
  • Terraform

counterparty-risk-lab

A teaching implementation of the counterparty risk calculations (EAD, PFE, CVA) I work with in investment banking.

A TypeScript MVP, hexagonal architecture and end-to-end TDD, making counterparty risk concepts approachable without access to a real banking system.

  • TypeScript
  • Hexagonal
  • TDD

kotlin-counterparty-risk

The same domain as counterparty-risk-lab, this time as a Kotlin library rather than a webapp.

A teaching Kotlin/JVM library for calculating exposure, expected loss (EL) and CVA on securities financing transactions (SFT), with a strong pedagogical disclaimer: built to learn and prototype, not for production banking use.

  • Kotlin
  • TDD

GoPrimer

Learning the Go language from scratch, bilingual French/English, no gamification: just pedagogical clarity.

A path of modules and lessons with exercises to discover Go, fully typed pedagogical content kept separate from the display engine.

  • Next.js
  • TypeScript

MissionReady

The same spaced-repetition engine as Kortex, applied this time to my own freelance interview prep.

Spaced-repetition flashcards to prepare for freelance technical interviews: AWS, Kubernetes, DDD, hexagonal architecture, TDD, Kafka, Kotlin, counterparty risk, AI-assisted development.

  • Next.js
  • TypeScript

kotlin-chess-tournament

The Swiss pairing algorithm behind EloChessPlanner, extracted into a standalone Kotlin/JVM library.

Swiss-system pairing, Elo rating calculation and final standings with tiebreaks (Buchholz, Sonneborn-Berger), where only C++/Pascal or JavaScript implementations existed before.

  • Kotlin
  • TDD

Cercle d'Échecs de Bois-Colombes

The official site of the club where I volunteer, migrated from an aging WordPress to Next.js.

A showcase site and member space for a real club (presentation, news, competitions, online membership, admin panel), delivered with a hybrid CMS so the club stays autonomous on its content.

  • Next.js
  • TypeScript
  • Tailwind
  • PostgreSQL

Kafkex

Kortex's revision engine, reapplied to Kafka: my own tool to stay sharp on a subject I use on client engagements.

Expert-level spaced-repetition flashcards on Apache Kafka (clusters, producers, consumers, exactly-once transactions, Kafka Streams, schema registry), bilingual, offline-first with cross-device sync.

  • Next.js
  • TypeScript

learning-rust

Learning a language in public: 16 tested examples, from the first program to async.

A pedagogical path through the Rust language from scratch, each concept illustrated by a standalone example with its own unit tests, clean under clippy.

  • Rust
  • TDD

Finance for Engineers

A bilingual reference site on market finance and counterparty risk, for developers with no finance background.

20 articles and a 71-term glossary, written to make what I practice in investment banking accessible: exposure, CVA, netting, collateral, SA-CCR.

  • Next.js
  • TypeScript