Youcadb
CLI de diagnostic et de configuration pour bases de données PostgreSQL et MySQL.
Youcadb analyse votre projet, y détecte le langage et le framework, se connecte à votre moteur de base de données, crée bases et utilisateurs, puis exécute un diagnostic complet de l'environnement — le tout depuis une unique interface en ligne de commande.
Pourquoi Youcadb ?
Mettre en place une base de données en développement est une tâche répétitive et
source d'erreurs : créer la base, créer l'utilisateur, accorder les droits, rester
cohérent avec le fichier .env, puis comprendre pourquoi une connexion échoue…
Youcadb automatise tout cela :
- Un seul outil pour l'initialisation, la création et le diagnostic — fini le
jonglage entre
psql/mysql, Docker et les fichiers de configuration. - Des commandes sûres et idempotentes — re-exécutables sans rien casser : la base et l'utilisateur ne sont créés que s'ils n'existent pas encore.
- La détection plutôt que la configuration — Youcadb lit votre projet (langage, framework, drivers) et vous recommande le moteur adapté, plutôt que de vous faire tout renseigner à la main.
- La sécurité par défaut — aucun mot de passe dans l'historique du shell, aucun
secret affiché sur la sortie standard, et alerte si votre base est exposée sur
0.0.0.0ou si un secret est versionné dans Git. - Multiplateforme — Linux, macOS et Windows, avec des guides d'installation et du démarrage natifs et une solution de repli Docker.
À qui s'adresse-t-il ?
- Développeuses et développeurs (backend, fullstack, DevOps) qui souhaitent préparer leur environnement PostgreSQL/MySQL en quelques secondes, sans copier-coller de commandes SQL.
- Équipes qui veulent un onboarding reproductible : les mêmes commandes, la même configuration, une base et un utilisateur créés à l'identique sur chaque poste de travail.
Fonctionnalités
- Détection automatique de projet — analyse
pyproject.toml,package.json,composer.json,Gemfile,pom.xml/build.gradle,*.csproj,docker-compose.yml,.envet en déduit le langage (Python, Node.js, PHP, Ruby, Java, .NET), le framework (FastAPI, Django, Express, Laravel, Rails, Spring Boot, ASP.NET Core…), le driver de base de données et le moteur recommandé. En présence de plusieurs manifests, les langages backend priment sur le front JavaScript ; les projets .NET imbriqués jusqu'à deux niveaux (ex.src/App/App.csproj) sont pris en compte. - Assistant interactif — parcours guidés pour
initetcreate, avec valeurs par défaut pertinentes et repli clavier pour les terminaux non interactifs. - Opérations moteur idempotentes — crée les bases de données et utilisateurs uniquement s'ils n'existent pas encore ; met à jour les mots de passe en toute sécurité.
youcadb doctor— vérifie la présence des drivers, la connectivité au serveur, l'exposition0.0.0.0, les secrets versionnés dans Git, et plus encore.youcadb config— génère un fichier.envdepuis le.youcadb.toml; inspecte la configuration effective.- Sécurisé par conception — signale les mots de passe suivis par Git et les adresses d'écoute dangereuses ; n'écrit jamais les identifiants sur la sortie standard.
- Multiplateforme — Linux, macOS et Windows (guides d'installation et de démarrage natifs, avec repli Docker).
Prérequis
| Exigence | Notes |
|---|---|
| Python ≥ 3.10 (testé jusqu'à 3.14) | |
| PostgreSQL ou MySQL | Installation locale ou via Docker |
psycopg[binary] |
Requis pour PostgreSQL (pip install youcadb[postgres]) |
pymysql |
Requis pour MySQL (pip install youcadb[mysql]) |
Installation
pip install youcadb # CLI de base (sans drivers)
pip install youcadb[postgres] # + psycopg (PostgreSQL)
pip install youcadb[mysql] # + pymysql (MySQL)
pip install youcadb[all] # les deux drivers
Prise en main rapide
# Initialise la configuration à la racine du projet
youcadb init --no-interactive
# Crée la base de données de manière interactive (nom, utilisateur, mot de passe)
youcadb create postgres
# Non interactif : noms et hôtes via les options, secrets via variables d'environnement
YOUCADB_PASSWORD=s3cret \
YOUCADB_ADMIN_PASSWORD=postgres \
youcadb create postgres \
--name my_app_db \
--user app_user \
--no-interactive
# État de la connexion
youcadb status
# Diagnostic complet de l'environnement
youcadb doctor
# Génère .env depuis le .youcadb.toml courant
youcadb config generate
# Affiche la configuration effective
youcadb config show
Commandes
| Commande | Description |
|---|---|
youcadb |
Affiche l'état du projet ou une invitation à l'initialiser |
youcadb init [--no-interactive] |
Détecte le projet et écrit .youcadb.toml |
youcadb create <engine> [--name ...] [--user ...] |
Crée la base, l'utilisateur et accorde les permissions |
youcadb status |
Affiche l'état de la connexion |
youcadb doctor |
Diagnostic complet (driver, serveur, config, sécurité) |
youcadb config generate [--force] |
Génère .env depuis .youcadb.toml |
youcadb config show |
Affiche la configuration active |
Consultez youcadb <commande> --help pour le détail des options.
Configuration
Youcadb enregistre ses réglages dans .youcadb.toml à la racine du projet :
[project]
name = "myproject"
[database]
engine = "postgres"
host = "localhost"
port = 5432
name = "myproject"
user = "app_user"
password = "s3cret" # uniquement si stocké dans le fichier
Les fichiers .env générés sont ajoutés au .gitignore par défaut.
Mots de passe & sécurité
Youcadb n'accepte jamais de secrets via les options de la ligne de commande : les mots de passe ne peuvent pas fuiter dans l'historique du shell. Ils sont fournis de manière interactive (saisie masquée) ou via les variables d'environnement en contexte non interactif :
| Secret | Variable d'environnement |
|---|---|
| Mot de passe de l'utilisateur applicatif | YOUCADB_PASSWORD |
| Mot de passe administrateur | YOUCADB_ADMIN_PASSWORD |
Les fichiers .env générés par youcadb config generate sont ignorés par Git, et
youcadb doctor émet un avertissement lorsqu'un mot de passe est suivi par Git ou lorsque
la base est exposée sur 0.0.0.0. Les mots de passe ne sont jamais affichés sur la sortie
standard : config generate et config show les affichent masqués (:***).
Versions de Python
Le projet cible Python ≥ 3.10 et est testé en continu sur 3.10 à 3.14 (Linux), ainsi que sur macOS et Windows (Python 3.14) dans la matrice CI.
.python-versionépingle la version de développement (3.14), lue paruvetpyenv.- Le code reste rétro-compatible 3.10 (
requires-python = ">=3.10",target-version = "py310"pourruff,python_version = "3.10"pourmypy).
Développement
git clone https://github.com/Fitiafenohaja/Youcadb.git
cd Youcadb
uv venv .venv --python 3.14 # ou : python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Passerelles de qualité
ruff check src tests # lint
ruff format --check src tests # format
mypy src/youcadb # typage
pytest tests/unit --cov=youcadb # tests (couverture ≥ 80 % requise)
Tests d'intégration
Définissez les variables d'environnement d'une base réelle, puis lancez :
export POSTGRES_HOST=localhost POSTGRES_PORT=5432 \
POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres
pytest tests/integration/test_postgres.py -v
Versions publiées
Pousser un tag v*.*.* (ou publier une Release GitHub) déclenche
.github/workflows/release.yml et publie sur PyPI via
Trusted Publishing (OIDC) — aucune clé API
n'est stockée dans les secrets.
Configuration unique (PyPI) :
- Ouvrez les paramètres de publication PyPI → Add pending publisher.
- Renseignez : projet
youcadb, propriétaireFitiafenohaja, dépôtYoucadb, workflowrelease.yml, environnementpypi.
Créer une version :
git tag v0.2.0
git push origin v0.2.0
Contribution
Les contributions sont les bienvenues — voir CONTRIBUTING.md pour la mise en place et les directives.
Licence
MIT — voir LICENSE.
Release files for youcadb 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| youcadb-0.2.0.tar.gz | 43.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| youcadb-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.3 kB
Release files / youcadb-0.2.0.tar.gz
| Download URL | youcadb-0.2.0.tar.gz |
|---|---|
| Size | 43.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c5896befec1d051e016c3c848d36d8ba8c87c13bfadf3d032330565700f3e5c
|
|
BLAKE2b-256 checksum How to use checksums |
b88314b36c64d30ef83fb1ec381addb8b3e25c77bf9d3d7cd4b4ca94aeb34974
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / youcadb-0.2.0-py3-none-any.whl
| Download URL | youcadb-0.2.0-py3-none-any.whl |
|---|---|
| Size | 36.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f590c9143480e281695a5762aac941823ad67bd5cdb4c121a82b7bf43fc22e9f
|
|
BLAKE2b-256 checksum How to use checksums |
eb1d1e20aede91139c4c856342c8cebf508bd20f0d1bebb140f03585adf070a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log