Kp-war
Plateforme de jugement de code pour les kp-formations
Contexte
L’association avait besoin d’une plateforme pour gamifier ses formations en présentiel et les rendre plus vivantes. Elle permet à une personne de créer rapidement des challenges, afin de dynamiser sa formation et d’appliquer ce qui y a été vu.
Ce projet N’EST PAS une plateforme de CTF, mais uniquement une plateforme de jugement de code. Il est prévu pour tourner uniquement sur le host de la personne qui présente la formation, avec pour objectif de consommer le moins de ressources possible.
workflow
Le déroulé type d’une session se fait en 4 temps :
- Au préalable, le présentateur rédige et teste ses épreuves en local, pour les soumettre le jour de la présentation.
- Le jour de la présentation, le présentateur lance le site et attend que tous les participants s’inscrivent avant de commencer à résoudre les challenges.
- Chaque participant écrit et compile son code ; celui-ci est exécuté et testé sur la machine du présentateur. L’exécution est conteneurisée avec Docker, et n’a pas vocation à tourner après la formation.
- En fonction des résultats des participants, un classement est accessible directement depuis le site (host du présentateur).
Stack technique
- Golang — Langage de programmation, faisant tourner le backend du site internet (API, pages web), mais aussi un petit CLI pour construire automatiquement le site internet.
- Svelte 5 — Composants interactifs (navigation, filtres, organigramme) avec la nouvelle API runes.
- Docker — Conteneurisation du projet, pour un déploiement plus rapide sur les hosts.
- Bun — gestionnaire de paquets et runtime.
- Nix / bun2nix — build reproductible, packaging déclaratif via flake.
Architecture
backend/
├── cmd/ # CLI pour le site
└── routes/ # Les routes API et web
frontend/
├── src/ # Tous les fichiers servis à l'utilisateur.
├── build/ # Dossier présent uniquement sur le host, contenant le build du site
└── static/ # Fichier robots.txt présent uniquement
docker/
├── Dockerfile
└── docker-compose.yamlDesign
La charte graphique de ce projet s’articule autour de l’esprit des CTF, du terminal et des TUI :
- Fond noir pour rappeler le terminal
- Vert pour rappeler le terminal
- ASCII art pour rappeler les TUI
État du projet
En bêta — et en phase de test dans certaines kp-formations.