Une API REST élégante pour explorer les personnalités historiques du monde entier, construite avec NestJS et TypeScript.
Créée avec ❤️ par Lina et Auxence
- À propos
- Installation
- Démarrage rapide
- Endpoints de l'API
- Exemples d'utilisation
- Structure des données
- Sources des données
Pantheon API vous permet d'accéder à une vaste base de données de personnalités historiques du monde entier. Explorez les données par pays, genre, nom, ou effectuez des recherches personnalisées pour découvrir les figures marquantes de l'histoire.
- ✅ Accès à des milliers de personnalités historiques
- ✅ Filtrage par pays (codes ISO 2 et 3)
- ✅ Filtrage par genre
- ✅ Recherche par nom
- ✅ Navigation par pages
- ✅ Interface web intuitive
- ✅ Informations détaillées (profession, industrie, domaine, HPI)
- Node.js (v16 ou supérieur)
- npm ou yarn
# Cloner le repository
git clone [url-du-repo]
# Installer les dépendances
npm install
# Démarrer l'application
npm run start
# Pour le mode développement avec rechargement automatique
npm run start:dev
L'API sera accessible sur http://localhost:3000
L'API est déployée sur Clever Cloud et accessible publiquement à l'adresse suivante :
🔗 https://votre-app.cleverapps.io
Note : Remplacez
votre-app
par le nom réel de votre application Clever Cloud.
Ouvrez simplement cette URL dans votre navigateur pour accéder à l'interface web interactive !
Vous pouvez accéder directement aux données en ouvrant ces URLs dans votre navigateur :
- Toutes les personnalités françaises :
https://votre-app.cleverapps.io/countrycode/FR
- Rechercher Einstein :
https://votre-app.cleverapps.io/search?term=Einstein
- Toutes les femmes :
https://votre-app.cleverapps.io/gender/Female
- Page 2 :
https://votre-app.cleverapps.io/personnes?Page=2
Après l'installation, ouvrez votre navigateur et rendez-vous sur :
Accédez directement à l'application déployée :
🔗 https://votre-app.cleverapps.io
Vous verrez une magnifique interface avec tous les endpoints disponibles et des exemples interactifs.
GET /
Retourne une interface web HTML interactive avec tous les endpoints disponibles.
GET /personnes
Retourne la liste complète de toutes les personnalités historiques, triées par ordre alphabétique.
Exemple de réponse :
[
{
"name": "Albert Einstein",
"birthCity": "Ulm",
"birthState": "Baden-Württemberg",
"countryName": "Germany",
"countryCode2": "DE",
"countryCode3": "DEU",
"LAT": 48.4,
"LON": 9.98,
"birthyear": 1879,
"gender": "Male",
"occupation": "Physicist",
"industry": "Science and Technology",
"domain": "Natural Sciences",
"HPI": 88.42
}
]
GET /personnes?Page={numéro}
Retourne 15 personnalités par page.
Paramètres :
Page
: Numéro de la page (commence à 1)
Exemples :
# Première page (personnes 1-15)
GET /personnes?Page=1
# Deuxième page (personnes 16-30)
GET /personnes?Page=2
# Troisième page (personnes 31-45)
GET /personnes?Page=3
GET /personnes/{nom}
Retourne les informations détaillées d'une personne spécifique.
Exemples :
GET /personnes/Albert Einstein
GET /personnes/Napoleon Bonaparte
GET /personnes/Marie Curie
GET /countrycode/{code}
Retourne toutes les personnalités d'un pays spécifique.
Paramètres :
code
: Code pays ISO 2 ou ISO 3 (ex: FR, FRA, US, USA)
Exemples :
# France
GET /countrycode/FR
GET /countrycode/FRA
# États-Unis
GET /countrycode/US
GET /countrycode/USA
# Royaume-Uni
GET /countrycode/GB
GET /countrycode/GBR
Pays populaires :
- 🇫🇷 France :
FR
ouFRA
- 🇺🇸 États-Unis :
US
ouUSA
- 🇬🇧 Royaume-Uni :
GB
ouGBR
- 🇩🇪 Allemagne :
DE
ouDEU
- 🇮🇹 Italie :
IT
ouITA
- 🇪🇸 Espagne :
ES
ouESP
- 🇷🇺 Russie :
RU
ouRUS
- 🇯🇵 Japon :
JP
ouJPN
- 🇨🇳 Chine :
CN
ouCHN
- 🇮🇳 Inde :
IN
ouIND
GET /gender/{genre}
Retourne toutes les personnalités d'un genre spécifique.
Paramètres :
genre
: "Male" ou "Female"
Exemples :
# Toutes les femmes historiques
GET /gender/Female
# Tous les hommes historiques
GET /gender/Male
GET /search?term={terme}
Effectue une recherche dans les noms des personnalités.
Paramètres :
term
: Terme de recherche (sensible à la casse)
Exemples :
GET /search?term=Einstein
GET /search?term=Mozart
GET /search?term=Napoleon
GET /search?term=Tesla
POST /
Ajoute une nouvelle personnalité à la base de données.
Corps de la requête (JSON) :
{
"name": "Nouvelle Personne",
"birthCity": "Paris",
"birthState": "Île-de-France",
"countryName": "France",
"countryCode2": "FR",
"countryCode3": "FRA",
"LAT": 48.8566,
"LON": 2.3522,
"birthyear": 1900,
"gender": "Male",
"occupation": "Artiste",
"industry": "Arts",
"domain": "Visual Arts",
"HPI": 75.5
}
DELETE /personnes/{nom}
Supprime une personnalité de la base de données.
Exemple :
DELETE /personnes/Albert Einstein
Ouvrez simplement ces URLs dans votre navigateur :
- Page d'accueil :
http://localhost:3000
- Toutes les personnalités :
http://localhost:3000/personnes
- Personnalités françaises :
http://localhost:3000/countrycode/FR
- Rechercher Einstein :
http://localhost:3000/search?term=Einstein
- Page 2 :
http://localhost:3000/personnes?Page=2
- Toutes les femmes :
http://localhost:3000/gender/Female
Remplacez localhost:3000
par votre URL de production :
- Page d'accueil :
https://votre-app.cleverapps.io
- Toutes les personnalités :
https://votre-app.cleverapps.io/personnes
- Personnalités françaises :
https://votre-app.cleverapps.io/countrycode/FR
- Rechercher Einstein :
https://votre-app.cleverapps.io/search?term=Einstein
- Page 2 :
https://votre-app.cleverapps.io/personnes?Page=2
- Toutes les femmes :
https://votre-app.cleverapps.io/gender/Female
// URL de base (changez selon votre environnement)
const BASE_URL = 'http://localhost:3000'; // Local
// const BASE_URL = 'https://votre-app.cleverapps.io'; // Production
// Récupérer toutes les personnalités américaines
fetch(`${BASE_URL}/countrycode/US`)
.then(response => response.json())
.then(data => console.log(data));
// Rechercher Mozart
fetch(`${BASE_URL}/search?term=Mozart`)
.then(response => response.json())
.then(data => console.log(data));
// Ajouter une nouvelle personne
fetch(BASE_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Test Person',
birthCity: 'Paris',
// ... autres champs
})
});
- Compte Clever Cloud
- Git installé
- Application NestJS prête
1Accéder à votre application
- L'URL sera disponible dans le dashboard Clever Cloud
- Format : https://app-675765f1-a0ff-4780-ad1d-2b2b926f399e.cleverapps.io
Chaque personnalité contient les informations suivantes :
Champ | Type | Description |
---|---|---|
name |
string | Nom complet de la personne |
birthCity |
string | Ville de naissance |
birthState |
string | État/région de naissance |
countryName |
string | Nom du pays |
countryCode2 |
string | Code pays ISO 2 lettres |
countryCode3 |
string | Code pays ISO 3 lettres |
LAT |
number | Latitude du lieu de naissance |
LON |
number | Longitude du lieu de naissance |
birthyear |
number | Année de naissance |
gender |
string | Genre (Male/Female) |
occupation |
string | Profession principale |
industry |
string | Secteur d'activité |
domain |
string | Domaine d'expertise |
HPI |
number | Historical Popularity Index |
Les données proviennent de deux sources :
- Fichier local :
src/dataset.json
- API externe : Harvard Dataverse - Pantheon Dataset
Les données sont automatiquement chargées au démarrage de l'application grâce au système OnModuleInit
de NestJS.
- NestJS : Framework backend
- TypeScript : Langage de programmation
- PapaParse : Parsing de fichiers CSV
- Axios : Requêtes HTTP
- RxJS : Programmation réactive
- La recherche est sensible à la casse : "Einstein" ≠ "einstein"
- Les données sont stockées en mémoire et rechargées à chaque redémarrage
- La pagination affiche 15 résultats par page
- Les résultats sont toujours triés par ordre alphabétique
- Les codes pays acceptent les formats ISO 2 et ISO 3
N'hésitez pas à explorer l'API et à découvrir les personnalités historiques qui ont marqué notre monde ! 🚀
Pour toute question ou suggestion, contactez Lina et Auxence.
Made with ❤️ and lots of ☕