> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Structure des répertoires

> Rôle des principaux répertoires et fichiers d'un projet Laravel.

## Introduction

La structure d'application par défaut de Laravel est un bon point de départ pour des applications aussi bien petites que grandes.
Cependant, vous êtes libre de structurer votre application comme vous le souhaitez.
Laravel n'impose presque aucune restriction sur l'emplacement des classes, du moment que Composer peut les charger automatiquement.

## Répertoire racine

Lorsque vous créez un nouveau projet Laravel, la structure suivante est générée :

```
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json
```

### Répertoire `app/`

Contient le code cœur de l'application.
Les contrôleurs, modèles, middlewares — presque toutes les classes de l'application — s'y trouvent.

Par défaut, il contient les sous-répertoires `Http`, `Models` et `Providers`.
Lorsque vous générez des classes avec les commandes Artisan, d'autres sous-répertoires sont créés automatiquement.

### Répertoire `bootstrap/`

Contient le fichier `app.php` qui démarre le framework.
Il contient également le répertoire `cache/` qui stocke les fichiers d'optimisation de performance (cache de routes, cache de services).

### Répertoire `config/`

Contient tous les fichiers de configuration de l'application.
Il est recommandé de lire ces fichiers pour connaître les options disponibles.

### Répertoire `database/`

Contient les migrations, les factories de modèles et les seeders.
Les fichiers de base de données SQLite peuvent également y être placés.

### Répertoire `public/`

Contient `index.php`, point d'entrée de toutes les requêtes vers l'application.
Il contient également les assets (images, JavaScript, CSS).

<Warning>
  La racine documentaire de votre serveur web doit pointer vers le répertoire `public/` de votre projet Laravel.
  Exposer directement la racine du projet ou un sous-répertoire présente un risque d'exposition de fichiers sensibles.
</Warning>

### Répertoire `resources/`

Contient les [vues](/fr/views) ainsi que les assets bruts (CSS et JavaScript avant compilation).

### Répertoire `routes/`

Contient toutes les définitions de routes de l'application.
Par défaut, il contient deux fichiers de routes : `web.php` et `console.php`.

| Fichier        | Usage                                                                                                                        |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `web.php`      | Routes destinées au navigateur. Le groupe de middlewares `web` fournit sessions, protection CSRF et chiffrement des cookies. |
| `console.php`  | Fichier permettant de définir des commandes Artisan sous forme de closures.                                                  |
| `api.php`      | Routes API sans état. À ajouter avec la commande `install:api`.                                                              |
| `channels.php` | Fichier d'enregistrement des canaux de diffusion d'événements.                                                               |

### Répertoire `storage/`

Contient les fichiers générés par le framework : logs, templates Blade compilés, sessions basées sur fichier, cache basé sur fichier, etc.
Il est divisé en trois sous-répertoires : `app/`, `framework/` et `logs/`.

### Répertoire `tests/`

Contient les tests automatisés.
Des exemples de tests unitaires et fonctionnels utilisant [Pest](https://pestphp.com) ou [PHPUnit](https://phpunit.de/) sont fournis par défaut.

### Répertoire `vendor/`

Contient les dépendances [Composer](https://getcomposer.org). Ne le versionnez pas.

## Détail du répertoire `app/`

De nombreuses classes du répertoire `app` peuvent être générées via des commandes Artisan.
Pour lister les commandes disponibles, exécutez :

```shell theme={null}
php artisan list make
```

<AccordionGroup>
  <Accordion title="Répertoire Http/">
    Contient les contrôleurs, middlewares et form requests.
    Presque toute la logique de traitement des requêtes y réside.
  </Accordion>

  <Accordion title="Répertoire Models/">
    Contient toutes les classes de [modèles Eloquent](/fr/eloquent).
    Chaque table de la base de données a un « modèle » correspondant, utilisé pour requêter et insérer les données.
  </Accordion>

  <Accordion title="Répertoire Providers/">
    Contient tous les [service providers](/fr/service-providers) de l'application.
    Les service providers lient des services au conteneur, enregistrent des événements, etc., pour amorcer l'application.
  </Accordion>

  <Accordion title="Répertoire Console/">
    Contient toutes les commandes Artisan personnalisées.
    Elles peuvent être générées avec la commande `make:command`.
  </Accordion>

  <Accordion title="Répertoire Exceptions/">
    Contient toutes les exceptions personnalisées de l'application.
    Elles peuvent être générées avec la commande `make:exception`.
  </Accordion>
</AccordionGroup>

## Fichiers importants

### Fichier `.env`

Gère les valeurs de configuration qui varient selon l'environnement (connexion à la base de données, clés d'API, etc.).
Il est référencé via le helper `env()` depuis les fichiers de configuration du répertoire `config/`.

```ini theme={null}
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite
```

### Fichier `artisan`

Point d'entrée de l'interface en ligne de commande Artisan.
Exécutez-le au format `php artisan <nom-de-commande>`.

## Prochaines étapes

<Card title="Routage" icon="route" href="/fr/routing">
  Apprenez à définir des routes et à associer une URL à la logique de votre application.
</Card>


## Related topics

- [Introduction à Vue.js — les bases pour l'utiliser avec Inertia × Laravel](/fr/blog/vue-introduction.md)
- [Introduction à React — bases pour l'utiliser avec Inertia × Laravel](/fr/blog/react-introduction.md)
- [Introduction à Svelte — bases pour l'utiliser avec Inertia × Laravel](/fr/blog/svelte-introduction.md)
- [Skills](/fr/packages/laravel-copilot-sdk/skills.md)
- [Introduction aux tests](/fr/testing.md)
