Back to projects
Les Performeurs

Les Performeurs

Professional Training Platforms

Role: Lead Front End Developer | UI/UX Designer
Period: March 2025 - Present
In Production
Visit project
Client: Les Performeurs (via House of Coding / Amiltone)

Overview

Context

Les Performeurs is a French professional training organization that supports apprentices (apprenants) in their development journey. Each apprenant is accompanied by a tuteur who validates their missions and learning stages. The problem: fragmented pedagogical tracking in spreadsheets and emails, no centralized progress traceability, scattered manual assessments (PIX, Cléa, soft skills), and tutor-apprenant communication without organized history.

Solution

The ecosystem consists of two complementary platforms: (1) LINK-Parcours - Enterprise-grade admin dashboard for training session management, users with 8 role levels, positioning assessments (PIX, Cléa, soft skills), and progress tracking (béabas, missions); (2) Tuto-Mission - Mobile-first PWA for real-time pedagogical monitoring, where tutors track apprenants through media-supported chat and stage validation.

My Role

In LINK-Parcours, I served as Lead Front End and UI/UX Designer, creating the entire admin interface design and implementing the complete system. In Tuto-Mission, I implemented the design received via Figma from House of Coding, developing advanced caching strategies to compensate for legacy API and create a fluid experience.

Tech Stack

Frontend

React
TypeScript
Vite
Tailwind CSS
Radix UI
shadcn/ui
TanStack React Query
TanStack Table
React Hook Form
Zod
React Router
nuqs
Lucide React
react-i18next
Sonner
Recharts
react-dropzone

Backend

PHP REST API (House of Coding team)

Projects

1

LINK-Parcours

Training Admin Dashboard

~21,500
Lines of Code
200+
Files
26+
Components
14
Hooks
11
Pages

Complete admin platform for training session management, users, and assessments. I created the entire UI/UX design and implemented the system with access control based on 8 role levels, server-side paginated tables, and complex forms with i18n validation.

Features

01
User Management

Full CRUD with 8 role levels (superAdmin to apprenant)

02
Session Management

Session creation with multiple days (session_jours) and participants

03
Positioning Assessment

PIX scores, Cléa results, soft skills games, interviews

04
Progress Tracking

Béabas and missions with global percentage calculation

05
Advanced Tables

TanStack Table with sorting, filters, server-side pagination

06
URL State Management

Filters persisted in URL via nuqs for sharing

07
Validated Forms

React Hook Form + Zod with i18n messages in French

08
Photo Upload

Drag & drop with preview and profile management

09
Dashboard with Charts

Visualizations with Recharts for metrics

10
Role System

RoleProtectedRoute + useRoleBasedRedirect for access control

11
Pre-registrations

Candidate management by training session

12
Internationalization

Multi-language system with react-i18next for different language support

Design Patterns

Role-Based Access Control
Container/Presenter
URL State Management
Schema Validation
Composition Pattern
Adapter Pattern

Technical Decisions

Tailwind CSS v4

Increased productivity, integrated design system, automatic purge

Radix UI + shadcn/ui

Accessible primitives without imposed styling, full control over appearance

nuqs for URL state

Automatic bidirectional sync, type-safe with parsers

Hybrid Pagination

Server-side for users/sessions (large volume), client-side for apprenants (fast filtering)

React Hook Form + Zod

Performance (fewer re-renders), native integration, better TypeScript

Challenges & Solutions

8 Role Levels

UserGroupCode enum with hierarchical numeric codes, permission matrix per route

Persistent Filters

URL state via nuqs + location.state for navigation context

Positioning System

Dedicated components per type (PIX, Cléa, soft skills) + centralized usePositioning hook

Multi-Step Forms

Tabs organizing sections, partial Zod schema per section, validation on submit

2

Tuto-Mission

Pedagogical Monitoring PWA

~4,200
Lines of Code
50+
Files
13
Components
5
Hooks
6
Pages

Mobile-first application for real-time pedagogical monitoring. I implemented the design received via Figma, developing a chat system with media support, stage validation, and sophisticated caching strategy to compensate for legacy API.

Features

01
Chat System

Real-time messages tutor ↔ apprenant with persistent history

02
Media Upload

Photos and pedagogical videos with preview before sending

03
Stage Validation

Tuteur validates or requests redo with immediate visual feedback

04
Videos with Timestamps

React Player with stage-specific timestamps

05
Smart Auto-scroll

useScrollToBottom hook observes changes and executes scroll

06
Automatic Token Refresh

JWT refresh 10min before expiration, transparent to user

07
Multiple Apprenants

Auto-selection if tuteur has 1, selection page if N

08
Pedagogy Messages

Automatic system messages with differentiated styling

09
Optimistic Updates

Messages appear instantly before server confirmation

10
Performant Cache

Stale-while-revalidate for zero-latency navigation

11
Internationalization

Multi-language system with react-i18next for different language support

Design Patterns

Provider Pattern
Custom Hook Pattern
Compound Components
Observer Pattern
Interceptor Pattern
Optimistic Updates

Technical Decisions

React Query vs Redux

Automatic cache, mutations with optimistic updates, less boilerplate

Pure CSS

Small mobile-first project, performance without CSS-in-JS runtime

localStorage + Cookies

JWT in cookie for security, user data in localStorage for quick access

Direct Upload via API

Simpler architecture, backend controls validations

Challenges & Solutions

Slow Legacy API

Sophisticated cache: staleTime 5-10min, gcTime 30min, placeholderData for instant UX

Transparent Token Refresh

Timer 10min before expiration + global handleTokenExpiration for 401 errors

Upload with Preview

URL.createObjectURL() for local preview, separate text and media sending

Auto-scroll in Chat

Custom hook observes [messages, isLoading] and executes scrollIntoView

Gallery

1
Image 1
2
Image 2
3
Image 3
4
Image 4
5
Image 5
6
Image 6
Gregory Praxedes | Full Stack Developer & UI/UX Specialist