bruno 6b7cdcdb62
CI / Lint & Format (push) Failing after 10s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
Fix README: correct deploy steps, remove stale alembic/run.py refs, add registry + new docs
2026-06-22 20:46:38 -04:00

Imago Hub v2.0.0

Imago est un hub Backend & Traitement IA multi-tenant open-source dédié à la gestion d'images. Conçu pour propulser des applications frontend riches (comme Shaarli), il offre un stockage média hautement concurrent, des traitements asynchrones planifiés, une observabilité complète du pipeline et des intégrations poussées avec l'Intelligence Artificielle.

Fonctionnalités Principales

  • API d'Upload & Stockage : Stockage d'images isolé par client (multi-tenant), génération automatique de miniatures, support S3 (MinIO) ou stockage local.
  • Extraction de Métadonnées : Données EXIF, géolocalisation GPS, résolution et caractéristiques des fichiers.
  • Pipelines OCR : Extraction de texte via Tesseract + fallback IA.
  • Vision IA Intégrée : Description de scènes et classification par tags (Gemini & OpenRouter) avec circuit breaker.
  • Flux Temps Réel : Streaming d'événements WebSocket du pipeline (Redis Pub/Sub + buffer 60s).
  • Sécurité & Multi-tenancy : Auth API Key (SHA-256+pepper, timing-safe), scopes, rate limiting par plan, isolation totale.
  • Portail d'Administration : Interface React pour gérer les clients, surveiller la file d'attente, consulter les métriques.
  • Dead Letter Queue : Jobs échoués inspectables et relançables via API admin.
  • SDK Python : imago-client pour intégration programmatique (HTTP + WebSocket).

Documentation

La spécification OpenAPI est disponible sur http://localhost:8000/docs (application lancée).

Déploiement rapide (Docker)

Le projet fournit un docker-compose.yml complet orchestrant tous les services :

Service Port Rôle
backend 8000 API FastAPI
admin 3000 Portail React + Nginx
worker — ARQ (pipeline AI asynchrone)
db 5432 PostgreSQL 16
redis 6379 Redis 7 (broker, cache, pub/sub)
minio 9000-9001 Stockage S3-compatible
# 1. Cloner
git clone https://git.dracodev.net/Projets/Imago.git
cd imago

# 2. Configurer l'environnement
cp .env.example .env
# Éditer .env : ajouter GEMINI_API_KEY ou OPENROUTER_API_KEY

# 3. Démarrer la stack (depuis imago-admin/)
cd imago-admin
docker compose up -d --build

# 4. Récupérer la clé admin (affichée au premier démarrage)
docker compose logs backend | grep "Bootstrap client created"

L'API : http://localhost:8000/docs | Admin : http://localhost:3000

Note : La base de données est créée automatiquement au démarrage via init_db(). La clé admin est générée et affichée dans les logs au premier lancement.

Déploiement sur serveur (production)

L'image est disponible sur le registry local du lab :

# Sur le serveur cible
mkdir -p /opt/imago && cd /opt/imago
# Copier docker-compose.production.yml et .env.production
docker compose -f docker-compose.production.yml up -d

Voir Guide Déploiement pour la procédure complète.

Build et push vers le registry

cd docker
.\build-img.ps1       # Build via WSL Debian
.\deploy-img.ps1      # Push vers docker-registry.dev.home:5000 (semver auto)

Développement local (sans Docker)

Prérequis : Python 3.12+, Redis, PostgreSQL (ou SQLite), Tesseract OCR.

# 1. Environnement virtuel
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

# 2. Configuration
cp .env.example .env
# Éditer .env : DATABASE_URL=sqlite+aiosqlite:///./data/imago.db (pour SQLite local)

# 3. Démarrer l'API
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

# 4. Démarrer le worker (terminal séparé)
python worker.py

Tests

pip install -r requirements-dev.txt
pytest tests/ -v

Consulter le CHANGELOG pour l'historique des versions.

S
Description
Application de gestion d'images
Readme
1.2 MiB
Languages
Python 48.1%
TypeScript 44.6%
Shell 5.4%
CSS 0.6%
PowerShell 0.5%
Other 0.8%