Logo Lanfrica

dzidulasolutions/izina-backend

Domaine:

natural language processing

Type de record:

software
Créateur:
dzi
Hôte:
API backend NestJS pour izina, une app de valorisation des prénoms africains (Togo, Bénin, Ghana). Auth JWT + OAuth, MongoDB, Redis, WebSocket pour les notifications temps réel, upload Cloudinary, système de modération communautaire et calendrier des prénoms. Projet perso pour approfondir le développement backend. # izina — backend **Documentation API en ligne** : izina-backend.onrender.com Backend de **izina**, une application mobile/web qui met en valeur les prénoms africains, principalement ceux du Togo, du Bénin et du Ghana. L'objectif de l'application est de permettre aux utilisateurs de découvrir des prénoms, leur signification, leur origine, leur histoire et d'interagir autour de ceux-ci grâce aux commentaires, favoris, partages et autres fonctionnalités sociales. Ce projet est avant tout un projet d'apprentissage. J'avais l'habitude de créer de petits projets pour tester des concepts, mais je les laissais souvent inachevés. Avec **izina**, je voulais enfin construire une véritable application de A à Z. Au-delà de NestJS, ce projet me permet également de découvrir des technologies que je n'avais jamais utilisées auparavant comme Redis, les WebSockets, OAuth, Cloudinary ou encore Resend. Mon objectif est de progresser en développement backend en construisant une API complète qui se rapproche davantage d'un projet réel que d'un simple CRUD. --- # Stack technique Le projet est construit avec : * **NestJS** (TypeScript) * **MongoDB** avec **Mongoose** (MongoDB Atlas) * **Redis** avec **ioredis** (Upstash) * **Cloudinary** pour le stockage des photos de profil * **Resend** pour l'envoi des emails * **Socket.IO** pour les notifications en temps réel * **Passport + JWT** pour l'authentification * **OAuth Google & Facebook** * **Swagger** pour la documentation de l'API * **Jest** pour les tests unitaires --- # Pourquoi ces choix ? Pendant le développement, j'ai essayé de faire des choix qui avaient du sens plutôt que d'ajouter des technologies uniquement pour les utiliser. ## Authentification L'authentification repose sur un système de deux tokens : * un **Access Token** valable 15 minutes ; * un **Refresh Token** valable 7 jours. L'access token reste totalement stateless afin d'éviter une requête en base de données à chaque appel. Le refresh …