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