Architecture
Structure des dossiers
Organisation des dossiers frontend et backend.
Structure des dossiers
Frontend (/front)
front/
├── app.vue # Point d'entrée de l'application
├── assets/styles/ # SCSS (variables, reset, typography, accessibility)
├── components/ # Composants Vue réutilisables
├── composables/ # Logique réutilisable (useClientAsyncData, useUserActivity…)
├── layouts/ # Layouts Nuxt (default, auth…)
├── pages/ # Routing file-based
│ ├── defis/ # Défis mensuels et hebdomadaires
│ ├── liste-des-tricks/ # Catalogue des tricks
│ ├── profil/ # Profil utilisateur et historique
│ └── menu/ # Menu d'accueil
├── plugins/ # Plugins Nuxt (auth.client.ts…)
├── stores/ # Stores Pinia (auth, koc, savedTricks…)
├── test/
│ ├── unit/ # Tests Vitest
│ └── e2e/ # Tests Playwright
├── types/ # Types TypeScript globaux
├── utils/ # Fonctions utilitaires
├── nuxt.config.ts
├── vitest.config.ts
└── playwright.config.ts
Backend (/back)
back/
├── src/
│ ├── Controller/ # Contrôleurs API REST
│ ├── Entity/ # Entités Doctrine (User, Trick, Category…)
│ ├── Repository/ # Repositories Doctrine
│ ├── EventSubscriber/ # Subscribers Symfony (ex: JWT events)
│ └── Command/ # Commandes Symfony console
├── config/
│ ├── jwt/ # Clés publique/privée JWT
│ ├── packages/ # Configuration des bundles (lexik_jwt, rate_limiter…)
│ └── routes/ # Définition des routes
├── migrations/ # Migrations Doctrine
├── templates/security/ # Templates email (reset de mot de passe…)
├── tests/Unit/ # Tests PHPUnit
├── Caddyfile # Configuration du serveur Caddy
├── Dockerfile
└── entrypoint.sh # Script d'initialisation du conteneur