ArtFolio
Réseau social pour artistes, backend NestJS avec architecture DDD
ArtFolio est une plateforme permettant aux artistes de partager leurs œuvres et d'interagir avec leur communauté. C'est mon projet de fin de formation à l'École O'Clock, et aussi celui sur lequel j'ai le plus investi. J'ai conçu et développé l'intégralité du backend : de l'architecture DDD aux pipelines CI/CD, en passant par l'auth, les tests et le déploiement.
Architecture DDD
Le domaine n'a aucune dépendance vers NestJS ou TypeORM. Les contrats sont définis par des interfaces dans la couche domain.
Presentation
Controllers, Swagger, DTOs
Application
Use cases, validators, handlers
Domain
Entities, value objects, interfaces
Infrastructure
Repositories TypeORM, Auth0, services
Stack technique
Le cache (CacheModule de NestJS, en mémoire avec TTL) allège la charge sur PostgreSQL pour les données souvent lues mais rarement modifiées. Fastify a été choisi à la place d'Express pour ses performances, reconnues dans l'écosystème Node.js.
Points forts
- Architecture DDD avec couches domain, application, infrastructure et présentation
- Tests unitaires, d'intégration et E2E avec Jest et @nestjs/testing
- Transactions avec rollback et cleanup filesystem
- Auth0 avec guards et permissions par route (RBAC)
- Swagger complet pour la documentation API
- Docker Compose : backend + 2 frontends Vue.js + PostgreSQL + SonarQube
- Déployé sur AWS EC2 avec Nginx
- Migrations TypeORM versionnées et réversibles
- Rate limiting global via @nestjs/throttler
- Système de logging personnalisé avec rotation journalière et 7 niveaux de sévérité
- Filtre d'exceptions global et gestion structurée des erreurs PostgreSQL
- Value objects typés (UserId, PostId, ...) pour la sécurité à la compilation et à l'exécution
- Stored procedures PL/pgSQL pour l'export de données RGPD et l'audit trail
- Sécurité renforcée : Helmet, CSRF, sessions HttpOnly, validation stricte des inputs
Social network for artists to share their work and connect with their community. NestJS + TypeScript backend built with Domain-Driven Design : Auth0, PostgreSQL, Dockerized, deployed on AWS EC2.
Voir sur GitHub