Un template professionnel, généré en 30 secondes. Architecture propre, thème soigné, outillage moderne : déjà là.
Tu as une idée d'app. Tu ouvres un terminal. Et là :
- Tu repars d'un
app.pyvide. Encore. Comme les six fois d'avant. Et tu vas recopier la moitié du dernier projet en priant pour ne rien oublier. - Ton app devient un plat de spaghettis à la 3e page. Tout dans un fichier,
les graphiques dupliqués, un
if page ==de 200 lignes. - Tu ne sais pas ce qu'est « bien faire ».
src/ou pas ? Où mettre les composants ?requirements.txtoupyproject.toml? Personne ne te l'a montré. - Ton app a l'air d'un prototype. Le thème par défaut, la sidebar grise, les emojis en guise d'icônes. Fonctionnel, mais impossible à montrer à un client.
- Le déploiement te surprend à chaque fois. Quel fichier Streamlit Cloud
lit-il vraiment :
uv.lock,requirements.txt,pyproject.toml? Il est 23h.
Le coût réel : environ 4 heures perdues avant d'écrire ta première ligne utile. À chaque projet.
Une seule commande, et tu démarres à l'étape 12 au lieu de l'étape 1.
Le layout src/ que la communauté Python utilise, appliqué à Streamlit : pages,
composants et utilitaires séparés. Ajouter une 8e page ne casse rien.
Fini le fichier de 2000 lignes.
Quatre thèmes prêts (Spotify dark, Eclair light, Corporate blue, Nature green), polices Poppins + Lato embarquées, icônes Material Design, navigation en haut de page. Montrable à un client dès la première minute.
create_line_chart(), create_pie_chart(), create_gauge_chart()… Tu appelles
une fonction, tu ne recopies plus 40 lignes de update_layout(). Et ils prennent
automatiquement la palette du thème choisi, aucune couleur en dur à maintenir.
Plus 20 fonctions utilitaires : formatage FR, calculs de croissance, export CSV,
cache.
uv pour des installations quasi instantanées, just pour les commandes,
ruff pour le format et le lint, pytest avec des tests d'exemple.
just check passe au vert dès la génération. Zéro configuration à écrire.
Streamlit Community Cloud lit directement le uv.lock du projet : rien à
générer, versions exactement celles de ton poste. Un requirements.txt est aussi
livré pour les plateformes sans uv (just requirements le régénère).
Tu pousses, ça marche.
Basé sur Copier : uvx copier update récupère les améliorations du template dans
tes projets déjà démarrés. Pas un copier-coller mort.
Dashboard : filtres par date et catégorie, KPI, 5 graphiques Plotly, export CSV.
Chaque graphique est un appel de fonction, pas 40 lignes de update_layout().
| Accueil | Paramètres |
|---|---|
![]() |
![]() |
| Navigation en haut, KPI, présentation | Onglets, préférences en session |
Thème Spotify dark, polices Poppins + Lato, icônes Material, graphiques accordés à la palette du thème. Sortie de génération, sans une ligne de CSS.
Seul uv est nécessaire :
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"just est optionnel mais recommandé : comment l'installer.
uvx copier copy gh:gpenessot/StreamlitTurbo mon-app
cd mon-appuvx lance Copier sans rien installer.
Copier te pose six questions (nom, description, auteur, version de Python,
thème) et écrit le projet complet.
just setup # crée le venv, installe tout (prod + dev)
just run # ouvre l'app dans le navigateurSans just :
uv sync && uv run streamlit run main.py
# ou, sans uv :
pip install -r requirements.txt && streamlit run main.pymon-app/
├── main.py # Point d'entrée : navigation top
├── pyproject.toml # Dépendances (source de vérité)
├── uv.lock # Lock lu par Streamlit Cloud
├── requirements.txt # Fallback pour les plateformes sans uv
├── justfile # Toutes les commandes du projet
├── .streamlit/config.toml # Thème, polices, couleurs de graphiques
├── src/mon_app/
│ ├── pages/ # 1_home · 2_dashboard · 3_settings
│ ├── components/ # charts · footer · sidebar
│ └── utils/ # 20 fonctions utilitaires
├── data/sample_data.csv # Données d'exemple
└── tests/ # Tests pytest
| Commande | Effet |
|---|---|
just run |
Lance l'application |
just dev |
Lance avec rechargement auto |
just check |
Formate et vérifie le code (ruff) |
just test |
Lance les tests (pytest) |
just add pandas |
Ajoute une dépendance |
just requirements |
Régénère requirements.txt (plateformes sans uv) |
just help |
Affiche toutes les commandes |
Streamlit Community Cloud, en deux commandes :
git add . && git commit -m "Ready for deployment"
git pushPuis sur share.streamlit.io : connecte le repo,
sélectionne main.py, Deploy.
Streamlit Cloud cherche les fichiers de dépendances dans cet ordre et n'en
utilise qu'un seul : uv.lock → Pipfile → environment.yml →
requirements.txt → pyproject.toml. Le uv.lock du projet étant versionné,
c'est lui qui est utilisé, et ton just add suffit à le tenir à jour.
La règle à retenir : modifie toujours
pyproject.toml(viajust add), jamaisrequirements.txtà la main. Ce dernier ne sert qu'aux plateformes sans uv (Railway, Render, Heroku…) : régénère-le avecjust requirementsavant de déployer là-bas.
Fonctionne aussi sur Railway, Render, Heroku, AWS / GCP / Azure.
Ce template couvre le démarrage d'un projet. Il s'arrête volontairement là où commencent les vraies questions de production.
| StreamlitTurbo (ce repo) | Streamlit Unleashed | |
|---|---|---|
| Architecture modulaire | Oui | Enterprise, multi-modules |
| Thèmes & design | 4 thèmes | Design system complet |
| Composants graphiques | 8 | Bibliothèque étendue |
| Tests | Exemples | Suite complète + couverture |
| Authentification | — | Système complet |
| Base de données | — | Connecteurs + ORM |
| CI/CD | — | GitHub Actions prêtes |
| Déploiement | Manuel | 1-click |
| Monitoring & analytics | — | Intégrés |
| Performance & cache avancé | — | Patterns de scaling |
La formation complète : de l'app qui marche à l'app qui tient en production.
Pourquoi Copier et pas un simple git clone ?
Un clone est mort à la seconde où tu le fais. Copier remplace les noms,
l'auteur, le thème et la version de Python partout dans le projet. Surtout,
uvx copier update te permet de récupérer plus tard les correctifs du template dans
un projet déjà bien avancé.
Je n'utilise ni uv ni just, c'est bloquant ?
Non. pip install -r requirements.txt && streamlit run main.py fonctionne, le
requirements.txt livré est complet. uv et just accélèrent le travail, ils ne
sont pas obligatoires.
Pourquoi la navigation est en haut et pas dans la sidebar ?
st.navigation(position="top") libère toute la largeur pour tes données, ce qui
compte sur un dashboard. Un composant sidebar.py est fourni si tu préfères :
appelle render_sidebar() et passe initial_sidebar_state="expanded" dans
main.py.
Je peux changer de thème après la génération ?
Oui. Tout est dans .streamlit/config.toml : couleurs, polices, rayons, palette
des graphiques. Édite, recharge. Pas besoin de régénérer le projet.
Quelles versions sont supportées ?
Python 3.11 à 3.14, Streamlit 1.50+. Le template utilise des fonctionnalités récentes (navigation top, polices personnalisées, thème de sidebar) qui demandent Streamlit 1.50 au minimum.
Comment installer just ?
# Windows
scoop install just # ou : winget install --id Casey.Just
# macOS
brew install just
# Linux
sudo apt install just # Debian/Ubuntu
sudo dnf install just # Fedora
sudo pacman -S just # ArchDocumentation Streamlit · Galerie · Forum · uv · just · Copier
gael.penessot@data-decision.io · LinkedIn · Issues
MIT, libre d'utilisation et de modification.
Créé par Gaël Penessot
Ce template te fait gagner du temps ? Mets-lui une étoile.



