L'application frontend est construite avec Nuxt 4, utilisant la Composition API et les modules Nuxt pour une architecture modulaire et maintenable.
flowchart TD
A[Pages] --> B[Layouts]
A --> C[Composants]
C --> D[Composables]
D --> E[Services API]
E --> F[Backend]
B --> A
C --> |Utilise| G[Store Pinia]
G --> |Persistance| H[LocalStorage/API]
front/sources/
├── app/ # Dossier principal de l'application
│ ├── components/ # Composants réutilisables
│ ├── composables/ # Logique réutilisable
│ ├── layouts/ # Mises en page globales
│ ├── pages/ # Routes de l'application
│ └── stores/ # Gestion d'état avec Pinia
├── public/ # Fichiers statiques
└── nuxt.config.ts # Configuration Nuxt
<template>
<!-- Template avec une seule racine -->
<div class="component">
<!-- Contenu -->
</div>
</template>
<script setup lang="ts">
// Imports en haut
import { ref, onMounted } from 'vue'
// Props avec validation TypeScript
const props = defineProps({
title: {
type: String,
required: true
}
})
// État réactif
const count = ref(0)
// Méthodes
function increment() {
count.value++
}
// Hooks de cycle de vie
onMounted(() => {
// Initialisation
})
</script>
<style scoped>
/* Styles avec scoping */
.component {
/* styles */
}
</style>