Voltar aos projetos
Les Performeurs

Les Performeurs

Plataformas de Formação Profissional

Função: Lead Front End Developer | UI/UX Designer
Período: Março 2025 - Atual
Em Produção
Visitar projeto
Cliente: Les Performeurs (via House of Coding / Amiltone)

Visão Geral

Contexto

Les Performeurs é um organismo de formação profissional francês que acompanha aprendizes (apprenants) em seu percurso de desenvolvimento. Cada apprenant é acompanhado por um tuteur que valida suas missões e etapas de aprendizagem. O problema: acompanhamento pedagógico fragmentado em planilhas e emails, sem rastreabilidade centralizada do progresso, avaliações manuais dispersas (PIX, Cléa, soft skills), e comunicação tutor-apprenant sem histórico organizado.

Solução

O ecossistema consiste em duas plataformas complementares: (1) LINK-Parcours - Dashboard administrativo enterprise-grade para gestão de sessões de formação, usuários com 8 níveis de roles, avaliações de posicionamento (PIX, Cléa, soft skills), e tracking de progresso (béabas, missions); (2) Tuto-Mission - PWA mobile-first para acompanhamento pedagógico em tempo real, onde tutores monitoram apprenants através de chat com suporte a mídia e validação de etapas.

Meu Papel

No LINK-Parcours, atuei como Lead Front End e UI/UX Designer, criando todo o design da interface administrativa e implementando o sistema completo. No Tuto-Mission, implementei o design recebido via Figma da House of Coding, desenvolvendo estratégias avançadas de cache para compensar API legada e criar experiência fluida.

Stack Técnica

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

API REST PHP (equipe House of Coding)

Projetos

1

LINK-Parcours

Dashboard Administrativo de Formação

~21.500
Linhas de Código
200+
Arquivos
26+
Componentes
14
Hooks
11
Páginas

Plataforma administrativa completa para gestão de sessões de formação, usuários e avaliações. Criei todo o design UI/UX e implementei o sistema com controle de acesso baseado em 8 níveis de roles, tabelas paginadas server-side, e formulários complexos com validação i18n.

Features

01
Gestão de Usuários

CRUD completo com 8 níveis de roles (superAdmin até apprenant)

02
Gestão de Sessions

Criação de sessões com múltiplos dias (session_jours) e participantes

03
Avaliação de Posicionamento

Scores PIX, résultats Cléa, soft skills games, entretiens

04
Tracking de Progresso

Béabas e missions com cálculo de percentagem global

05
Tabelas Avançadas

TanStack Table com sorting, filtros, paginação server-side

06
URL State Management

Filtros persistidos na URL via nuqs para compartilhamento

07
Formulários Validados

React Hook Form + Zod com mensagens i18n em francês

08
Upload de Foto

Drag & drop com preview e gestão de perfil

09
Dashboard com Gráficos

Visualizações com Recharts para métricas

10
Sistema de Roles

RoleProtectedRoute + useRoleBasedRedirect para controle de acesso

11
Pré-inscrições

Gestão de candidatos por sessão de formação

12
Internacionalização

Sistema multi-idioma com react-i18next para suporte a diferentes línguas

Design Patterns

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

Decisões Técnicas

Tailwind CSS v4

Produtividade aumentada, design system integrado, purge automático

Radix UI + shadcn/ui

Primitives acessíveis sem styling imposto, controle total sobre aparência

nuqs para URL state

Sincronização bidirecional automática, type-safe com parsers

Paginação Híbrida

Server-side para users/sessions (volume grande), client-side para apprenants (filtagem rápida)

React Hook Form + Zod

Performance (menos re-renders), integração nativa, melhor TypeScript

Desafios & Soluções

8 Níveis de Roles

Enum UserGroupCode com códigos numéricos hierárquicos, matriz de permissões por rota

Filtros Persistentes

Estado na URL via nuqs + location.state para contexto de navegação

Sistema de Posicionamento

Componentes dedicados por tipo (PIX, Cléa, soft skills) + hook usePositioning centralizado

Formulários Multi-Etapas

Tabs organizando seções, schema Zod parcial por seção, validação na submissão

2

Tuto-Mission

PWA de Acompanhamento Pedagógico

~4.200
Linhas de Código
50+
Arquivos
13
Componentes
5
Hooks
6
Páginas

Aplicação mobile-first para acompanhamento pedagógico em tempo real. Implementei o design recebido via Figma, desenvolvendo sistema de chat com suporte a mídia, validação de etapas, e estratégia de cache sofisticada para compensar API legada.

Features

01
Sistema de Chat

Mensagens em tempo real tutor ↔ apprenant com histórico persistente

02
Upload de Mídia

Fotos e vídeos pedagógicos com preview antes do envio

03
Validação de Etapas

Tuteur valida ou solicita refação com feedback visual imediato

04
Vídeos com Timestamps

Player React Player com timestamps específicos por etapa

05
Auto-scroll Inteligente

Hook useScrollToBottom observa mudanças e executa scroll

06
Token Refresh Automático

Refresh JWT 10min antes da expiração, transparente ao usuário

07
Múltiplos Apprenants

Seleção automática se tuteur tem 1, página de seleção se N

08
Mensagens de Pedagogia

Mensagens automáticas do sistema com estilização diferenciada

09
Optimistic Updates

Mensagens aparecem instantaneamente antes da confirmação do servidor

10
Cache Performático

Stale-while-revalidate para navegação zero-latency

11
Internacionalização

Sistema multi-idioma com react-i18next para suporte a diferentes línguas

Design Patterns

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

Decisões Técnicas

React Query vs Redux

Cache automático, mutations com optimistic updates, menos boilerplate

CSS Puro

Projeto mobile-first pequeno, performance sem runtime CSS-in-JS

localStorage + Cookies

JWT em cookie para segurança, dados do usuário em localStorage para acesso rápido

Upload Direto via API

Arquitetura mais simples, backend controla validações

Desafios & Soluções

API Legada Lenta

Cache sofisticado: staleTime 5-10min, gcTime 30min, placeholderData para UX instantânea

Refresh de Token Transparente

Timer 10min antes da expiração + handleTokenExpiration global para erros 401

Upload com Preview

URL.createObjectURL() para preview local, envio separado de texto e mídia

Scroll Automático em Chat

Hook customizado observa [messages, isLoading] e executa scrollIntoView

Galeria

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