API Généalogie

Ce projet consiste à développer une API REST permettant de créer et gérer un arbre généalogique.
L'API permet de stocker des personnes, leurs prénoms, leurs noms de famille ainsi que leurs relations parent-enfant.
Le projet inclut également une base de données relationnelle, un jeu de tests Postman et une documentation simple du fonctionnement de l'API.
Technologies utilisées
- Python
- FastAPI
- PostgreSQL
- SQLAlchemy
- Pydantic
- Postman
Structure du projet
family_tree/
│
├── app/
│ ├── main.py
│ ├── database.py
│ ├── models.py
│ ├── schemas.py
│ └── routers/
│ ├── persons.py
│ └── relations.py
│
├── database/
│ ├── init.sql
│ └── schema.sql
│
├── docs/
│ └── erd.png
│
├── postman/
│ └── Family Tree Tests.postman_collection.json
│
├── constraints.md
├── openapi.json
├── swagger.json
├── requirements.txt
├── reset_and_start.sh
├── start.sh
└── README.md
Fonctionnalités principales
- Créer des personnes
- Lire les informations d'une personne
- Mettre à jour une personne
- Supprimer une personne
- Ajouter plusieurs prénoms
- Ajouter plusieurs noms de famille
- Créer des relations parent-enfant
- Tester les contraintes métier
- Tester l'API avec Postman
Base de données
Le projet utilise PostgreSQL.
Tables principales :
personsperson_first_namesperson_last_namesparent_child_relations
Contraintes importantes
- Une personne ne peut pas être son propre parent
- Une personne ne peut pas avoir plus de deux parents biologiques
- La date de décès doit être après la date de naissance
- Les noms et relations sont supprimés en cascade avec la personne
La structure de la base de données est définie dans :
database/schema.sql
Le script suivant permet de recréer toutes les tables :
database/init.sql
Lancer le projet
1. Créer l'environnement virtuel
python -m venv venv
source venv/bin/activate
2. Installer les dépendances
pip install -r requirements.txt
3. Configurer PostgreSQL
Modifier l'URL dans :
app/database.py
Exemple :
postgresql+psycopg2://postgres:password@localhost:5432/genealogy_db
4. Initialiser la base
sudo -u postgres psql -f database/init.sql
5. Lancer l'API
uvicorn app.main:app --reload
Puis ouvrir dans le navigateur :
http://127.0.0.1:8000/docs
Tests avec Postman
Importer la collection :
postman/Family Tree Tests.postman_collection.json
Puis exécuter les requêtes dans l'ordre pour :
- créer les personnes
- ajouter les prénoms et noms
- ajouter les relations
- tester les validations
- vérifier les erreurs attendues
Documentation API
La documentation Swagger est disponible après le lancement du serveur :
http://127.0.0.1:8000/docs
Des exports OpenAPI sont également présents :
openapi.jsonswagger.json
Résultat
Ce projet fournit une base d'API REST pour gérer un arbre généalogique avec :
- une base PostgreSQL relationnelle
- des routes FastAPI
- des modèles SQLAlchemy
- des schémas Pydantic
- des contraintes métier
- des tests Postman
Liens
-
Dépôt GitLab :
https://gitlab.com/ahmad-training-2026/genealogy-api/-/tree/main?ref_type=heads -
Portfolio :
https://ahmadaboalola.com/
Auteur
Ahmad Abo-Alola — Student Project (AI Developer Training)