Application web qui transforme un fichier Excel (.xlsx) en base de données PostgreSQL avec une interface de visualisation personnalisée selon les besoins de l'utilisateur, en détectant automatiquement la structure, les types et les dépendances entre feuilles.
- Python 3.11+
- Node.js v18+
- PostgreSQL
- Backend : FastAPI · Uvicorn · openpyxl · psycopg2 — Frontend : React · Vite · TypeScript
git clone https://github.com/anasys0x/Excelium.git
cd ExceliumInstalle les dépendances Python :
pip install -r backend/requirements.txt
# si besoin, les dépendances de l'API :
pip install fastapi uvicorn python-multipart psycopg2-binary python-dotenvInstalle les dépendances du frontend :
cd frontend
npm install1. Backend — lance l'API FastAPI (dans un terminal) :
cd backend
uvicorn api:app --reloadL'API tourne sur http://localhost:8000 (documentation interactive sur /docs).
2. Frontend — lance le serveur web (dans un autre terminal) :
cd frontend
npm run devOuvre l'URL affichée (http://localhost:5173), glisse un fichier .xlsx, configure tes tables (renommage des colonnes, clé, réorganisation), puis crée la base de données.
Crée un fichier backend/.env avec les paramètres de connexion PostgreSQL :
DB_HOST=localhost
DB_PORT=5432
DB_NAME=excelium
DB_USER=postgres
DB_PASSWORD=ton_mot_de_passePour exporter directement la structure d'un fichier Excel en JSON :
python3 backend/export.py data/excel.xlsxExcelium/
├── backend/
│ ├── api.py # API FastAPI — endpoints /parse, /create, /sessions, /tables/*
│ ├── main.py # Point d'entrée CLI (insertion PostgreSQL)
│ ├── export.py # Script d'export JSON
│ ├── constants.py # Constantes (formats de date…)
│ ├── errors.py # Hiérarchie d'exceptions
│ ├── utils.py # Utilitaires (slugify…)
│ ├── models/
│ │ ├── excel/ # Workbook, Worksheet, Table, Column, Row, Cell
│ │ ├── relational/ # Modèle relationnel (tables, contraintes, FK/PK)
│ │ └── transforms/ # Conversion type Excel → SQL (Strategy pattern)
│ ├── services/ # excel_reader, excel_to_relational, type_detector, pk/fk_detector,
│ │ # dependency_detector, sql_generator, db_creator, db_crud,
│ │ # database_connection/execute, session_store, webapp_zip
│ └── tests/ # Tests unitaires (pytest)
├── frontend/ # React + Vite + TypeScript
│ ├── vitest.config.ts # Config des tests (jsdom + testing-library)
│ └── src/
│ ├── App.tsx # Orchestration du parcours (import → config → questionnaire → création)
│ ├── setupTests.ts # Setup global des tests (jest-dom, mock ResizeObserver)
│ ├── index.css # Thèmes clair/sombre (variables CSS)
│ ├── App.css # Styles du parcours et de l'app générée
│ ├── export/ # Point d'entrée du build export autonome (ExportApp, main)
│ ├── lib/ # i18n, détection sémantique, moteur de préférences, données de
│ │ # graphiques, archétypes, propositions d'UI, questions, sessions
│ │ # (chaque module a son *.test.ts en regard)
│ └── components/
│ ├── DropZone.tsx, StepIndicator.tsx, SessionResume.tsx, Spinner.tsx, SkeletonRows.tsx
│ ├── landing/ # Landing.tsx, HeroDemo.tsx (démo animée Excel → app), Faq.tsx
│ ├── layout/ # SplitView.tsx
│ ├── table/ # TablePreview.tsx
│ ├── steps/ # StepSheetSelector, StepKeySelector, StepTableConfirmation,
│ │ # StepQuestionnaire, StepUiProposals, QuestionCard,
│ │ # ProposalPreview, MiniChart
│ ├── widgets/ # CellWidget.tsx
│ └── app/ # GeneratedApp.tsx + vues Table/Gallery/Dashboard/Cards/Schema,
│ # ChartWidget, RowForm, RowDependencyGraph, DetailPanel,
│ # ImpactModal, ConfirmModal, ErdPanel
│ (chaque composant testable a son *.test.tsx en regard)
├── data/ # Fichiers Excel de test
└── docs/ # Documentation MkDocs
- ✅ Semaine 1 : Documentation et analyse préliminaire.
- ✅ Semaine 2 : Choix de la stack technique, comparaison des solutions existantes, modélisation des données.
- ✅ Semaine 3 : Révision de la modélisation, retravail du diagramme de classe et clarification de certaines ambiguïtés.
- ✅ Semaine 4 : Finalisation du diagramme de classe et réalisation d'une première itération du MVP.
- ✅ Semaine 5 : Robustesse du backend et première interface de visualisation.
- ✅ Semaine 6 : Interface web React (import par glisser-déposer, sélection des feuilles, configuration des tables, thème clair/sombre) et API FastAPI (
/parse,/create) connectée à PostgreSQL. - ✅ Semaine 7 : Semaine de réflexion et préparation de la mise en commun II.
- ✅ Semaine 8 : Application générée complète, CRUD sur les données live avec détection PK/FK et analyse d'impact, exports Excel/SQL, archétypes de table (templates sémantiques) et vue personnalisée à formules sur grille.
La documentation complète est disponible sur :
https://anasys0x.github.io/Excelium/
- Anas Mrani Alaoui
- Farah Romdhane
Superviseur : Louis-Edouard Lafontant
Session : Été 2026
Cours : IFT3150 — Projet informatique
Dernière mise à jour : 07 juillet 2026
