diff --git a/README.md b/docs/01_decouverte_des_bases.md
similarity index 97%
rename from README.md
rename to docs/01_decouverte_des_bases.md
index 248d683941f9c11fd839dd1bf6ed731ada0916dc..2567bb16bb9673768061b2c3b1cab5d617eade6a 100644
--- a/README.md
+++ b/docs/01_decouverte_des_bases.md
@@ -43,7 +43,7 @@ Utiliser des instances comme clef corrige la limitation de la bibliothèque Prov
 Le `Provider` est un moyen de __récupérer__ un état présent dans un `ProviderContainer`.
 La déclaration d'un provider permet d'indiquer __le type__ et __la valeur d'initialisation__ de l'état auquel il correspond.
 
-![Déclaration d'un Provider](docs/images/declaration_provider.png)
+![Déclaration d'un Provider](images/declaration_provider.png)
 
 > Déclarer un provider permet de __typer__, __initialiser__ et __récupérer__ un état.
 
@@ -68,7 +68,7 @@ void main() {
 }
 ```
 
-![provider](docs/images/provider.png)
+![provider](images/provider.png)
 
 Le `Provider` est instancié en tant que variable globale et son état est initialisé avec la valeur 13 `<1>`.
 L'instance du `ProviderContainer` contient les états `<2>` et permet de les récupérer en passant l'instance du `Provider` en paramètre de sa méthode `read` `<3>`.
@@ -129,7 +129,7 @@ void main() {
 }
 ```
 
-![Circle of life](docs/images/circle_of_life.png)
+![Circle of life](images/circle_of_life.png)
 
 Le `Provider` est déclaré au sein du test pour retenir son affectation d'état et sa libération de ressources `<1>`.
 Avant toute manipulation, sa valeur n'est toujours pas affectée `<2>`.
@@ -170,7 +170,7 @@ void main() {
 }
 ```
 
-![Provider](docs/images/autodispose.png)
+![Provider](images/autodispose.png)
 
 Le `Provider` est déclaré pour que ses ressources soient libérées dès qu'il n'est plus utilisé `<1>`.
 Après avoir été lu `<2>` ses ressources ne sont pas instantanément libérées `<3>`.
@@ -231,7 +231,7 @@ void main() {
 }
 ```
 
-![Provider](docs/images/test_overrides.png)
+![Provider](images/test_overrides.png)
 
 Deux `Providers` sont déclarés pour retourner la valeur 13 `<1>`.
 Le comportement du `ProviderContainer` est surchargé pour remplacer le premier `Provider` et pour remplacer la valeur retournée par le second `<2>`.
@@ -257,7 +257,7 @@ void main() {
 }
 ```
 
-![.family](docs/images/family.png)
+![.family](images/family.png)
 
 Un `Provider` est déclaré pour indiquer par ses états si la clef passée en paramètre est paire `<1>`.
 La lecture du `Provider` se fait en passant cette clef et la valeur correspondante est retournée `<2>`.
@@ -292,7 +292,7 @@ void main() {
 }
 ```
 
-![StateProvider](docs/images/state_provider.png)
+![StateProvider](images/state_provider.png)
 
 Le `StateProvider` est instancié de la même manière qu'un `Provider`, en initialisant son état avec la valeur 13 `<1>`.
 Le notifier du `StateProvider` est récupéré par l'intermédiaire du `ProviderContainer` et son état est remplacé par la valeur 42 `<2>`.
@@ -339,7 +339,7 @@ void main() {
 }
 ```
 
-![watch modifier](docs/images/watch.png)
+![watch modifier](images/watch.png)
 
 Le `StateProvider` `intProvider` est initialisé avec la valeur 13, `readProvider` vient lire son état et `watchProvider` le surveiller `<1>`.
 Lors de leurs premières lectures, l'état des `readProvider` et `watchProvider` sont identiques à celui du `intProvider` `<2>`.
@@ -434,7 +434,7 @@ void main() {
 }
 ```
 
-![listener](docs/images/listener.png)
+![listener](images/listener.png)
 
 Le `StateProvider` `intProvider` est initialisé avec la valeur 13 et `watchProvider` surveille ses modifications `<1>`.
 Des listeners écoutent leurs changements d'état respectif pour stocker les nouvelles valeurs `<2>`.
@@ -495,7 +495,7 @@ void main() {
 }
 ```
 
-![select](docs/images/select.png)
+![select](images/select.png)
 
 Le `StateProvider` `intProvider` est initialisé avec la valeur 13 et le `moduloProvider` vient l'écouter en sélectionnant uniquement le modulo de 10 de l'état `<1>`.
 Un compteur écoute le nombre de changements réalisés par `moduloProvider` `<2>`.
@@ -572,7 +572,7 @@ void main() {
 }
 ```
 
-![state_notifier_provider](docs/images/state_notifier_provider.png)
+![state_notifier_provider](images/state_notifier_provider.png)
 
 Le `StateProvider` `intProvider` est initialisé avec la valeur 13 `<1>`. 
 Il est écouté par le `StateNotifierProvider` `incrementProvider` dont le notifier `IncrementNotifier` dispose d'une méthode pour incrémenter son état `<2>`.
@@ -648,7 +648,7 @@ void main() {
 }
 ```
 
-![change_notifier_provider](docs/images/change_notifier_provider.png)
+![change_notifier_provider](images/change_notifier_provider.png)
 
 La classe `IncrementNotifier`, un `ChangeNotifier` avec une méthode `increment` pour incrémenter sa propriété `number`, est initialisé avec la valeur 13 `<1>`.
 La propriété `number` de son `notifier` dispose bien de la valeur 13.
@@ -695,7 +695,7 @@ void main() {
 }
 ```
 
-![future_provider](docs/images/future_provider.png)
+![future_provider](images/future_provider.png)
 
 Un `FutureProvider` est instancié pour que son état prenne la valeur 13 après 100ms `<1>`.
 Tant que le `Futur` n'a pas été résolu, aucune valeur n'est attribuée à l'état et il conserve la valeur `AsyncLoading` `<2>`.
@@ -742,7 +742,7 @@ void main() {
 }
 ```
 
-![stream_provider](docs/images/stream_provider.png)
+![stream_provider](images/stream_provider.png)
 
 Une `Stream` est déclarée pour retourner la valeur 13 suivie d'une erreur, le tout entrecoupé par un délai de 100 millisecondes `<1>`.
 Tant que la première valeur de la `Stream` n'est pas retournée, l'état conserve la valeur `AsyncLoading` `<2>`.
@@ -756,6 +756,6 @@ Vous disposez maintenant des bases pour en comprendre les principaux mécanismes
 
 Le prochain article sera plus court et portera sur son intégration avec Flutter.
 
-![zelda_sword](docs/images/zelda_sword.png)
+![zelda_sword](images/zelda_sword.png)
 
 [^1]: Les interfaces n'existent pas à proprement parler en Dart, ce sont des classes abstraites avec des méthodes abstraites dont l'interface implicite est implémentée.
\ No newline at end of file