Skip to content

API Généalogie

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 :

  • persons
  • person_first_names
  • person_last_names
  • parent_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.json
  • swagger.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


Auteur

Ahmad Abo-Alola — Student Project (AI Developer Training)