|  | 
|  | 1 | +# Modèle Full Stack FastAPI | 
|  | 2 | + | 
|  | 3 | +<a href="https://github.com/fastapi/full-stack-fastapi-template/actions?query=workflow%3ATest" target="_blank"><img src="https://github.com/fastapi/full-stack-fastapi-template/workflows/Test/badge.svg" alt="Test"></a> | 
|  | 4 | +<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/full-stack-fastapi-template" target="_blank"><img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/full-stack-fastapi-template.svg" alt="Coverage"></a> | 
|  | 5 | + | 
|  | 6 | +## Technologies et fonctionnalités | 
|  | 7 | + | 
|  | 8 | +- ⚡ [**FastAPI**](https://fastapi.tiangolo.com) pour l'API backend en Python. | 
|  | 9 | +  - 🧰 [SQLModel](https://sqlmodel.tiangolo.com) pour les interactions avec la base de données SQL en Python (ORM). | 
|  | 10 | +  - 🔍 [Pydantic](https://docs.pydantic.dev)utilisé par FastAPI, pour la validation des données et la gestion des paramètres. | 
|  | 11 | +  - 💾 [PostgreSQL](https://www.postgresql.org) comme base de données SQL. | 
|  | 12 | +- 🚀 [React](https://react.dev) pour le frontend. | 
|  | 13 | +  - 💃 Utilisation de TypeScript, hooks, Vite et d'autres outils modernes pour le frontend. | 
|  | 14 | +  - 🎨 [Chakra UI](https://chakra-ui.com) pour les composants frontend. | 
|  | 15 | +  - 🤖 Un client frontend généré automatiquement. | 
|  | 16 | +  - 🧪 [Playwright](https://playwright.dev) pour les tests End-to-End. | 
|  | 17 | +  - 🦇 Prise en charge du mode sombre. | 
|  | 18 | +- 🐋 [Docker Compose](https://www.docker.com) pour le développement et la production. | 
|  | 19 | +- 🔒 Hachage sécurisé des mots de passe par défaut. | 
|  | 20 | +- 🔑 Authentification par JWT (JSON Web Token). | 
|  | 21 | +- 📫 Récupération de mot de passe par email. | 
|  | 22 | +- ✅ Tests avec [Pytest](https://pytest.org). | 
|  | 23 | +- 📞 [Traefik](https://traefik.io) comme reverse proxy / load balancer. | 
|  | 24 | +- � Instructions de déploiement avec Docker Compose, incluant la configuration d'un proxy Traefik pour gérer les certificats HTTPS automatiques. | 
|  | 25 | + | 
|  | 26 | +- 🏭 CI (intégration continue) et CD (déploiement continu) basés sur GitHub Actions. | 
|  | 27 | + | 
|  | 28 | +### Connexion au Tableau de Bord | 
|  | 29 | + | 
|  | 30 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 31 | + | 
|  | 32 | +### DashboaTableau de Bord - Admin | 
|  | 33 | + | 
|  | 34 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 35 | + | 
|  | 36 | +### Tableau de Bord - Créer un Utilisateur | 
|  | 37 | + | 
|  | 38 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 39 | + | 
|  | 40 | +### Dashboard - Articles | 
|  | 41 | + | 
|  | 42 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 43 | + | 
|  | 44 | +### Tableau de Bord - Paramètres Utilisateur | 
|  | 45 | + | 
|  | 46 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 47 | + | 
|  | 48 | +### Tableau de Bord - Mode Sombre | 
|  | 49 | + | 
|  | 50 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 51 | + | 
|  | 52 | +### Documentation Interactive de l'API | 
|  | 53 | + | 
|  | 54 | +[](https://github.com/fastapi/full-stack-fastapi-template) | 
|  | 55 | + | 
|  | 56 | +## Comment l'Utiliser | 
|  | 57 | + | 
|  | 58 | +You can **just fork or clone** this repository and use it as is. | 
|  | 59 | + | 
|  | 60 | +✨ It just works. ✨ | 
|  | 61 | + | 
|  | 62 | +### Comment Utiliser un Dépôt Privé | 
|  | 63 | + | 
|  | 64 | +Si vous souhaitez avoir un dépôt privé, GitHub ne vous permettra pas de le forker directement, car il n'autorise pas la modification de la visibilité des forks. | 
|  | 65 | + | 
|  | 66 | +Mais vous pouvez procéder comme suit : | 
|  | 67 | + | 
|  | 68 | +- Créez un nouveau dépôt GitHub, par exemple my-full-stack. | 
|  | 69 | + | 
|  | 70 | +- ce dépôt manuellement, en définissant le nom du projet que vous souhaitez utiliser, par exemple my-full-stack : | 
|  | 71 | + | 
|  | 72 | +```bash | 
|  | 73 | +git clone [email protected] :fastapi/full-stack-fastapi-template.git my-full-stack | 
|  | 74 | +``` | 
|  | 75 | + | 
|  | 76 | +- Entrez dans le nouveau répertoire : | 
|  | 77 | + | 
|  | 78 | +```bash | 
|  | 79 | +cd my-full-stack | 
|  | 80 | +``` | 
|  | 81 | + | 
|  | 82 | +- Définissez la nouvelle origine vers votre nouveau dépôt (copiez l'URL depuis l'interface GitHub), par exemple : | 
|  | 83 | + | 
|  | 84 | +```bash | 
|  | 85 | +git remote set-url origin [email protected] :octocat/my-full-stack.git | 
|  | 86 | +``` | 
|  | 87 | + | 
|  | 88 | +- Ajoutez ce dépôt comme un autre "remote" pour pouvoir récupérer les mises à jour ultérieurement : | 
|  | 89 | + | 
|  | 90 | +```bash | 
|  | 91 | +git remote add upstream [email protected] :fastapi/full-stack-fastapi-template.git | 
|  | 92 | +``` | 
|  | 93 | + | 
|  | 94 | +-Poussez le code vers votre nouveau dépôt : | 
|  | 95 | + | 
|  | 96 | +```bash | 
|  | 97 | +git push -u origin master | 
|  | 98 | +``` | 
|  | 99 | + | 
|  | 100 | +### Mettre à Jour depuis le Modèle Original | 
|  | 101 | + | 
|  | 102 | +Après avoir cloné le dépôt, et après avoir effectué des modifications, vous pourriez vouloir récupérer les dernières modifications depuis ce modèle original. | 
|  | 103 | + | 
|  | 104 | +- Assurez-vous d'avoir ajouté le dépôt original comme un "remote", vous pouvez le vérifier avec : | 
|  | 105 | + | 
|  | 106 | +```bash | 
|  | 107 | +git remote -v | 
|  | 108 | + | 
|  | 109 | +origin    [email protected] :octocat/my-full-stack.git (fetch) | 
|  | 110 | +origin    [email protected] :octocat/my-full-stack.git (push) | 
|  | 111 | +upstream    [email protected] :fastapi/full-stack-fastapi-template.git (fetch) | 
|  | 112 | +upstream    [email protected] :fastapi/full-stack-fastapi-template.git (push) | 
|  | 113 | +``` | 
|  | 114 | + | 
|  | 115 | +- Récupérez les dernières modifications sans les fusionner : | 
|  | 116 | + | 
|  | 117 | +```bash | 
|  | 118 | +git pull --no-commit upstream master | 
|  | 119 | +``` | 
|  | 120 | + | 
|  | 121 | +Cela téléchargera les dernières modifications de ce modèle sans les committer, vous permettant ainsi de vérifier que tout est correct avant de valider. | 
|  | 122 | + | 
|  | 123 | +- S'il y a des conflits, résolvez-les dans votre éditeur. | 
|  | 124 | + | 
|  | 125 | +- Une fois terminé, validez les modifications : | 
|  | 126 | + | 
|  | 127 | +```bash | 
|  | 128 | +git merge --continue | 
|  | 129 | +``` | 
|  | 130 | + | 
|  | 131 | +### Configuration | 
|  | 132 | + | 
|  | 133 | +Vous pouvez ensuite mettre à jour les configurations dans les fichiers `.env` pour personnaliser vos paramètres. | 
|  | 134 | + | 
|  | 135 | +Avant de le déployer, assurez-vous de changer au moins les valeurs pour : | 
|  | 136 | + | 
|  | 137 | +- `SECRET_KEY` | 
|  | 138 | +- `FIRST_SUPERUSER_PASSWORD` | 
|  | 139 | +- `POSTGRES_PASSWORD` | 
|  | 140 | + | 
|  | 141 | +Vous pouvez (et devriez) passer ces variables comme des variables d'environnement depuis des secrets. | 
|  | 142 | + | 
|  | 143 | +Lisez la documentation [deployment.md](./deployment.md) pour plus de details. | 
|  | 144 | + | 
|  | 145 | +### Générer des Clés Secrètes | 
|  | 146 | + | 
|  | 147 | +Certaines variables d'environnement dans le fichier `.env` ont une valeur par défaut de `changethis`. | 
|  | 148 | + | 
|  | 149 | +Vous devez les remplacer par une clé secrète. Pour générer des clés secrètes, vous pouvez exécuter la commande suivante : | 
|  | 150 | + | 
|  | 151 | +```bash | 
|  | 152 | +python -c "import secrets; print(secrets.token_urlsafe(32))" | 
|  | 153 | +``` | 
|  | 154 | + | 
|  | 155 | +Copiez le résultat et utilisez-le comme mot de passe / clé secrète. Exécutez cette commande à nouveau pour générer une autre clé sécurisée. | 
|  | 156 | + | 
|  | 157 | +## Comment l'Utiliser - Alternative avec Copier | 
|  | 158 | + | 
|  | 159 | +Ce dépôt prend également en charge la génération d'un nouveau projet en utilisant[Copier](https://copier.readthedocs.io). | 
|  | 160 | + | 
|  | 161 | +Il copiera tous les fichiers, vous posera des questions de configuration et mettra à jour les fichiers`.env` avec vos réponses. | 
|  | 162 | + | 
|  | 163 | +### Installer Copier | 
|  | 164 | + | 
|  | 165 | +Vous pouvez installer Copier avec : | 
|  | 166 | + | 
|  | 167 | +```bash | 
|  | 168 | +pip install copier | 
|  | 169 | +``` | 
|  | 170 | + | 
|  | 171 | +Ou mieux, si vous avez [`pipx`](https://pipx.pypa.io/), vous pouvez l'exécuter avec : | 
|  | 172 | + | 
|  | 173 | +```bash | 
|  | 174 | +pipx install copier | 
|  | 175 | +``` | 
|  | 176 | + | 
|  | 177 | +**Remarque**: Si vous avez `pipx`, l'installation de Copier est optionnelle, vous pouvez l'exécuter directement. | 
|  | 178 | + | 
|  | 179 | +### Générer un Projet avec Copier | 
|  | 180 | + | 
|  | 181 | +Décidez d'un nom pour le répertoire de votre nouveau projet, vous l'utiliserez ci-dessous. Par exemple `my-awesome-project`. | 
|  | 182 | + | 
|  | 183 | +Allez dans le répertoire parent de votre projet et exécutez la commande avec le nom de votre projet : | 
|  | 184 | + | 
|  | 185 | +```bash | 
|  | 186 | +copier copy https://github.com/fastapi/full-stack-fastapi-template my-awesome-project --trust | 
|  | 187 | +``` | 
|  | 188 | + | 
|  | 189 | +Si vous avez`pipx` et que vous n'avez pas installé `copier`,vous pouvez l'exécuter directement : | 
|  | 190 | + | 
|  | 191 | +```bash | 
|  | 192 | +pipx run copier copy https://github.com/fastapi/full-stack-fastapi-template my-awesome-project --trust | 
|  | 193 | +``` | 
|  | 194 | + | 
|  | 195 | +**Remarque** l'option trust `--trust` est nécessaire pour pouvoir exécuter un [script post-création](https://github.com/fastapi/full-stack-fastapi-template/blob/master/.copier/update_dotenv.py) qui met à jour vos fichiers `.env` . | 
|  | 196 | + | 
|  | 197 | +### Variables d'Entrée | 
|  | 198 | + | 
|  | 199 | +Copier vous demandera certaines données, que vous pourriez vouloir préparer avant de générer le projet. | 
|  | 200 | + | 
|  | 201 | +Mais ne vous inquiétez pas, vous pouvez simplement mettre à jour n'importe laquelle de ces valeurs dans les fichiers `.env` par la suite. | 
|  | 202 | + | 
|  | 203 | +Les variables d'entrée, avec leurs valeurs par défaut (certaines générées automatiquement) sont : | 
|  | 204 | + | 
|  | 205 | +- `project_name`: (par défaut: `"FastAPI Project"`) Le nom du projet, affiché aux utilisateurs de l'API (dans .env). | 
|  | 206 | +- `stack_name`: (par défaut: `"fastapi-project"`) Le nom de la stack utilisée pour les labels Docker Compose et le nom du projet (pas d'espaces, pas de points) (dans .env). | 
|  | 207 | +- `secret_key`: (par défaut: `"changethis"`) La clé secrète du projet, utilisée pour la sécurité, stockée dans .env. Vous pouvez en générer une avec la méthode ci-dessus. | 
|  | 208 | +- `first_superuser`: (par défaut: `"[email protected]"` ) L'email du premier superutilisateur (dans .env). | 
|  | 209 | +- `first_superuser_password`: (par défaut: `"changethis"`) Le mot de passe du premier superutilisateur (dans .env). | 
|  | 210 | +- `smtp_host`: (par défaut: "") L'hôte du serveur SMTP pour envoyer des emails, vous pouvez le définir plus tard dans .env. | 
|  | 211 | +- `smtp_user`: (par défaut: "") L'utilisateur du serveur SMTP pour envoyer des emails, vous pouvez le définir plus tard dans .env. | 
|  | 212 | +- `smtp_password`: (par défaut: "") Le mot de passe du serveur SMTP pour envoyer des emails, vous pouvez le définir plus tard dans .env. | 
|  | 213 | +- `emails_from_email`: (par défaut: `"[email protected]"` ) Le compte email à partir duquel envoyer des emails, vous pouvez le définir plus tard dans .env. | 
|  | 214 | +- `postgres_password`: (par défaut: `"changethis"`) Le mot de passe pour la base de données PostgreSQL, stocké dans .env. Vous pouvez en générer un avec la méthode ci-dessus. | 
|  | 215 | +- `sentry_dsn`: (par défaut: "") Le DSN pour Sentry, si vous l'utilisez, vous pouvez le définir plus tard dans .env. | 
|  | 216 | + | 
|  | 217 | +## Développement Backend | 
|  | 218 | + | 
|  | 219 | +Documentation backend: [backend/README.md](./backend/README.md). | 
|  | 220 | + | 
|  | 221 | +## Développement Frontend | 
|  | 222 | + | 
|  | 223 | +Documentation frontend: [frontend/README.md](./frontend/README.md). | 
|  | 224 | + | 
|  | 225 | +## Déploiement | 
|  | 226 | + | 
|  | 227 | +Documentation de déploiement: [deployment.md](./deployment.md). | 
|  | 228 | + | 
|  | 229 | +## Développement | 
|  | 230 | + | 
|  | 231 | +Documentation générale de développement: [development.md](./development.md). | 
|  | 232 | + | 
|  | 233 | +Cela inclut l'utilisation de Docker Compose, des domaines locaux personnalisés, des configurations `.env`,etc. | 
|  | 234 | + | 
|  | 235 | +## Notes de Version | 
|  | 236 | + | 
|  | 237 | +Consultez le fichier [release-notes.md](./release-notes.md). | 
|  | 238 | + | 
|  | 239 | +## License | 
|  | 240 | + | 
|  | 241 | +Le Modèle Full Stack FastAPI est sous licence MIT. Consultez le fichier LICENSE pour plus de détails. | 
0 commit comments