Serveur TypeScript (Fastify 5) permettant de déposer des fichiers médias
dans des dossiers nommés, via une page web de glisser-déposer.
- Authentification OpenID Connect gérée côté serveur (Authorization Code +
PKCE, client confidentiel, openid-client) ; session via cookie chiffré
(@fastify/secure-session).
- Configuration dans un fichier JSON (schéma fourni) ; l'environnement ne
porte que le pointeur MEDIADROP_CONFIG.
- Cibles de dépôt nommées : liste { name, label, dir }, sélection par
?target=, première cible par défaut.
- Upload multipart en streaming : nom de fichier dérivé côté serveur (pas
de path traversal), liste blanche de types MIME, plafond de taille.
- TypeScript strict, ESLint + Prettier sans warning, 46 tests Vitest.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
Directives de Développement TypeScript & Qualité
1. Principes Généraux
- Qualité & Solidité : Code propre, explicite, auto-documenté. Pas de hacks ou de contournements temporaires.
- DRY & KISS : Préférer la lisibilité et la simplicité à l'abstraction prématurée.
- Sécurité : Validation systématique des données aux frontières de l'application (pas de données non vérifiées). Aucune clé ou secret en dur.
2. Standards TypeScript & Typage Strict
- Typage strict :
noImplicitAnyetstrictNullChecksactivés.- Interdiction d'utiliser le type
any. Utiliserunknownavec du narrowing (type guards) si le type est incertain. - Préférer les
interfacepour les objets publics/extensibles et lestypepour les unions, intersections et tuples. - Expliciter les types de retour des fonctions publiques et des méthodes d'API.
- Conventions de nommage :
PascalCasepour les types, interfaces, classes et composants React/Vue.camelCasepour les variables, fonctions et méthodes.SNAKE_CASEpour les constantes globales.- Interfaces : Ne pas utiliser le préfixe
I(écrireUser, pasIUser).
- Gestion de l'asynchronisme :
- Préférer
async/awaitaux promesses chaînées (.then()). - Toujours typer le retour des fonctions asynchrones :
Promise<T>.
- Préférer
3. Qualité, Linting & Formattage
- Structure : Fichiers ciblés et courts (< 200-300 lignes). Découper en modules si nécessaire.
- Linter & Formateur : Le code doit passer sans aucun warning ni erreur sous ESLint et Prettier.
- Gestion des erreurs :
- Pas de
try/catchvides. - Utiliser des classes d'erreur personnalisées dérivant de
Error.
- Pas de
4. Tests
- Règle absolue : Tout nouveau code ou correctif doit être accompagné de ses tests (ex. Vitest ou Jest).
- Exécuter la suite de tests avant toute validation.
5. Commandes du Projet
- Installation :
npm install(oupnpm install/yarn install) - Vérification de type :
npx tsc --noEmit - Linter :
npm run lint - Tests :
npm test - Build :
npm run build
6. Format des Réponses de Claude
- Proposer du code complet et directement exploitable.
- Expliciter les choix de typage ou de refactorisation complexes.