Apprenticeship @ Horizon Trading Solutions

Théo DULUARD

Software Engineer

Master's graduate in Computer Science with 2 years of apprenticeship experience. I specialize in Java/JS backend development and React on the frontend. Curious, rigorous and reliable, I strive to bring value to every project I work on.

Main stack

Java Spring Boot React JavaScript TypeScript Docker PostgreSQL GitLab CI

01. Education

Master's in Computer Science — Software Engineering

University of Rennes • 2024 - 2026

Programme focused on complex software design, distributed architectures and software quality. Grounded in modern industry practices: microservices, cloud, formal verification and mobile development.

Topics covered

Software Architecture (Microservices, Monolithic)Design PatternsDSL & Language EngineeringLogic Programming (Prolog)Database DesignSolution SecurityWebSocket & Message Broker (RabbitMQ)

Technologies & Tools

React Java JavaScript PostgreSQL MySQL Firebase Angular Keycloak Xtext Langium Postman JUnit GitLab

Bachelor's in Computer Science

University of Le Mans • 2021 - 2024

Multidisciplinary programme covering the fundamentals of computer science: algorithms, object-oriented programming, databases, networking and web development. Completed alongside my apprenticeship at Horizon Trading Solutions.

Topics covered

Algorithms & Data StructuresObject-Oriented ProgrammingRelational DatabasesNetworking & SystemsWeb DevelopmentSoftware EngineeringDesign Patterns

Technologies & Tools

C Java Python JavaScript HTML CSS PostgreSQL GitHub Unix / Shell Prolog Haskell

First year of Bachelor's — Mathematics & Applications

University of Le Mans • 2020 - 2021

University year centred on mathematical foundations and their application to computer science and natural sciences. Strengthened my analytical rigour and capacity for abstraction, both valuable in programming and algorithms.

Topics covered

Linear AlgebraAnalysis & Differential CalculusProbability & StatisticsMathematical LogicIntroduction to Programming

Technologies & Tools

Python Scilab

02. Work Experience

Apprenticeship · Ongoing

Java Developer

Horizon Trading Solutions · Rennes, France

Publisher of real-time algorithmic trading solutions for investment banks and brokers (130+ employees, international presence).

Sept. 2024 — Aug. 2026
  • Design and development of a Functional Monitoring system for the H3 platform: real-time capture of client activity metrics via a high-performance messaging framework (Aeron).
  • Centralisation of market events (orders, volumes) in a time-series database (InfluxDB) with visualisation via Grafana.
  • Development of a data extraction process (Flux queries, CSV export) for analysing client activity volumes and tracking usage metrics.
  • Various contributions: bug fixes, business logic improvements, exception handling in a distributed environment, unit and integration tests (JUnit, Mockito).
  • Agile Scrum cycle (2-week sprints): grooming, estimation, systematic code review, quality control and continuous delivery.

Stack

JavaAeronInfluxDBFluxGrafanaPostgreSQLJUnit · MockitoGradleGitLabJenkinsJira · Scrum
Pre-hire internship

Java Developer — Integration & Onboarding

Horizon Trading Solutions · Rennes, France

Pre-hire internship ahead of the Master's apprenticeship, embedded in a Scrum team on the H3 trading platform.

Jul. — Sept. 2024
  • Onboarding and setup of the development environment (IntelliJ IDEA, Git, Gradle, Jenkins) and functional discovery of the H3 trading platform.
  • Configuration of a full local trading environment: importing financial instruments, order management and reading the market depth book.
  • Development of a Java market connectivity client: subscription to real-time event streams (orders, depth), order submission and implementation of an automated response strategy.
  • Autonomous completion of first Jira tickets: feature development and Java fixes within the team Scrum cycle.

Stack

JavaIntelliJ IDEAJUnit · MockitoGitGradleDockerJira · Scrum

03. Personal & Academic Projects

Microservices & AI Master's 2

VoiceMail AI Assistant

AI-powered voice email assistant built around a BFF pattern orchestrating multiple microservices (11 Docker containers) with local LLM processing.

  • Privacy by Design: Automatic anonymisation of personal data before model processing.
  • Local NLU: Intent analysis via Ollama (Llama 3.1) to generate schema-validated JSON action plans.

Tech Stack

React TSSpring BootOllama 3DockerKeycloakGitLab CI
—/16
CLIENT UIReact · TSAPI GATEWAYBFF · OrchestrateurANONYMIZERJava · Stanford NLPOLLAMA LLMLlama 3.1VALIDATORAJV · JSON SchemaEMAIL SVCTypeScriptMAIL SERVERIMAP · SMTP

Cliquez sur ▶ pour simuler un traitement de commande vocale.

Mobile App Master's 2

Allo-Mission

Professional networking platform. Recruiters can post detailed job listings while candidates can browse and apply directly from their smartphone.

  • Dual role: Dedicated recruiter interface (posting, offer management) and candidate interface (search, one-tap application).
  • Firebase Auth: Account management, session persistence and real-time data security.
  • Cross-platform: Expo app deployed on iOS and Android from a single TypeScript codebase.

Tech Stack

React NativeTypeScriptExpoFirebase
REST API Backend Master's 2

Jibrax API

Full team-oriented project management system, designed to apply advanced software design and data persistence principles. The architecture simulates a real collaborative environment.

  • 4-entity architecture: Management of Users, Teams, Projects and Tasks.
  • CRUD operations: Full lifecycle creation and management for each entity.
  • Advanced queries: Active user filtering, project retrieval by leader, task filtering by assignment or team.

Tech Stack

JavaSpringPostgreSQLKeycloak
GET /api/users/active
200
{
  "count": 3,
  "users": [
    { "id": 1, "name": "t.duluard", "role": "ADMIN" },
    { "id": 2, "name": "a.martin", "role": "DEV" },
    { "id": 3, "name": "l.chen", "role": "DEV" }
  ]
}
{
  "team": "Backend Squad",
  "projects": [
    { "id": 1042, "name": "Jibrax Migration", "status": "IN_PROGRESS" },
    { "id": 1043, "name": "Auth Refactor", "status": "DONE" }
  ]
}
{
  "open_tasks": 4,
  "items": [
    { "id": 201, "title": "Fix N+1 queries", "priority": "HIGH" },
    { "id": 202, "title": "Add pagination", "priority": "MED" },
    { "id": 203, "title": "JWT refresh flow", "priority": "HIGH" }
  ]
}
// POST /api/tasks → 201 Created
{
  "id": 204,
  "title": "Write unit tests",
  "assignee": "t.duluard",
  "project_id": 1042,
  "created_at": "2025-05-18T09:41:00Z"
}
cycling endpoints…
DSL & Language Engineering Master's 2

RoboML

Design of a domain-specific language (DSL) for programming a four-wheeled robot. The project covers the full language development cycle: metamodel, editor with syntax highlighting, web interpreter and Arduino compiler.

  • Abstract syntax: Metamodel defined with Ecore, handling movements, sensors, variables and control structures.
  • VSCode editor: Langium grammar with built-in syntax highlighting and autocompletion.
  • Dual semantics: Interpreter with visual simulator (P5.js) and compiler generating Arduino code executable on real hardware.

Tech Stack

Ecore / EclipseLangiumTypeScriptP5.jsArduino (C++)

RoboML — live simulation

explore.rml
fn explore() {
  Forward(50 cm)
  Rotation(90 deg)
  if Distance() < 20 {
    Backward(30 cm)
  }
}
Ecore metamodelLangium grammarP5.js simulatorArduino compiler
CI/CD & DevOps Master's 2

GitLab CI/CD Pipeline

Implementation of a full CI/CD pipeline on GitLab for a Java Spring Boot application. The pipeline automates the entire delivery cycle, from build through to deployment on AWS EC2.

  • 5-stage pipeline: Build → Tests (JUnit + JaCoCo) → Documentation (JavaDoc) → Automated release → SSH deployment to EC2.
  • Built-in quality: JaCoCo code coverage, status badge generation and automatic artifact reports.
  • Automatic versioning: GitLab releases with tags and generated changelogs on every delivery.

Tech Stack

GitLab CI/CDJava · Spring BootGradleJUnit · JaCoCoAWS EC2Docker

.gitlab-ci.yml

build 12s
test coverage: 87% 34s
documentation 8s
release v1.2.0 5s
deploy → AWS EC2 22s
Pipeline #47 · passed · triggered by push to main
CLI & Multithreading Master's 1

At Wok

Console simulation of a restaurant's operation (waiters, cooks, customers). The goal of this application is to master concurrent programming and resolve simultaneous resource access issues.

  • Semaphores: Complex queue management and concurrent access limiting.
  • Synchronized blocks: Shared variable protection to prevent race conditions.
  • Multithreading: Parallel execution of each restaurant actor's lifecycle.

Tech Stack

JavaThreads (Concurrency)

🍜 At Wok

Server:
👨‍🍳 Chef waiting

🪑 Dining room (Customers)

Empty room...

📋 Terminal (WebSocket)

Waiting for Java server connection...
Desktop App Bachelor's 3

JacoBhashi

Desktop application developed in a team of 8 for the Hashi puzzle. It combines a rich JavaFX interface with a Spring Boot backend, offering both the classic mode and an innovative "Breaking Bridges" mode.

  • Advanced assistance: Expert system suggesting moves, built-in solution checker, and "Hypothesis Mode" for testing paths.
  • Persistence & Progress: Save games linked to user profiles, Undo/Redo system and integrated leaderboards.

Tech Stack

JavaSpring BootJavaFXMaven
JacoBhashi-1.8.1-SNAPSHOT.jar