📌 ROADMAP ULTRA DÉTAILLÉE – API COMMUNITY
🚀 Architecture : N‐Tier (Entities, DTOs, Services, Controllers)
📦 Technos : NestJS, TypeORM, PostgreSQL, Docker, CI/CD
❌ Pas d’authentification
État d'Avancement Global
- 🟢 Terminé
- ⚪️ Non commencé
- 🟡 En cours
- 🔵 Prêt à démarrer
Version 0.x.x
2. Gestion des Ressources (Resources)
On commence par l’entité Resource car c’est la base fonctionnelle de l’application.
2.1. Base de Données & Relations
📂 Entité Resource
Relations :
2.2. Services & DTOs
📂 DTOs & Validation
📂 Service : ResourceService
📂 Controller : ResourceController
2.3. Tests Ressources
3. Gestion des Utilisateurs (Users)
Deuxième priorité : pouvoir lier des Resources à un User, attribuer rôles, XP, badges…
3.1. Base de Données & Relations
📂 Entité User
Relations :
📂 Entité Badge
📂 Entité XpTransaction
3.2. Services & DTOs
📂 DTOs & Validation
📂 Services
-
UserService
-
BadgeService
-
XpTransactionService
📂 Controllers
-
UserController
-
BadgeController
-
XpTransactionController
3.3. Tests Users
4. Gestion des Commentaires (Comments)
Les Comments sont liés à Resource et User.
4.1. Base de Données & Relations
📂 Entité Comment
Relations :
4.2. Services & DTOs
📂 DTOs & Validation
📂 CommentService
📂 CommentController
4.3. Tests Comments
5. Gestion des Votes (Votes)
Les votes peuvent cibler un Resource ou un Comment, d’après le MCD.
5.1. Base de Données & Relations
📂 Entité Vote
Relations :
5.2. Services & DTOs
📂 VoteService
📂 Controllers
5.3. Tests Votes
6. Modération (Reports & Actions)
Permet de signaler un user, un resource, ou un comment, puis d’y associer une action modération.
6.1. Base de Données & Relations
📂 Entité Report
📂 Entité ModerationAction
6.2. Services & DTOs
-
ReportService
-
ModerationService
6.3. Controllers
-
ReportController
-
ModerationController
6.4. Tests Modération
7. Finalisation & Intégration
7.1. Tests unitaires & E2E
7.2. Optimisation Docker
7.3. CI/CD
7.4. Publication & Documentation
7.5. Intégration Discord (optionnel)
📌 ROADMAP ULTRA DÉTAILLÉE – API COMMUNITY
🚀 Architecture : N‐Tier (Entities, DTOs, Services, Controllers)
📦 Technos : NestJS, TypeORM, PostgreSQL, Docker, CI/CD
❌ Pas d’authentification
État d'Avancement Global
Version 0.x.x
2. Gestion des Ressources (Resources)
2.1. Base de Données & Relations
📂 Entité
Resource"pending","approved","rejected")Relations :
user_uuid(FK) si la resource est créée par un user (relation plus tard, quand Users arriveront)2.2. Services & DTOs
📂 DTOs & Validation
create-resource.dto.ts– (title, content, status...)update-resource.dto.ts– (optionnel, partial)📂 Service : ResourceService
createResource(createDto: CreateResourceDto)getResourceById(resourceUuid: string)getResources()(liste, pagination éventuelle)updateResource(resourceUuid: string, updateDto: UpdateResourceDto)deleteResource(resourceUuid: string)assignTagToResource(resourceUuid: string, tagUuid: string)(gérer la table pivot)📂 Controller : ResourceController
POST /resources(créer)GET /resources(lister)GET /resources/:id(afficher un resource)PATCH /resources/:id(update)DELETE /resources/:id(delete)POST /resources/:id/tags/:tagId(associer un tag) – plus tard2.3. Tests Ressources
201, lecture →200, update, delete, etc.)3. Gestion des Utilisateurs (Users)
3.1. Base de Données & Relations
📂 Entité
User"admin","moderator","member")"active","banned")Relations :
Resource→ leresource.user_uuidpointe suruser_uuid📂 Entité
Badge📂 Entité
XpTransaction"vote","resource","comment")3.2. Services & DTOs
📂 DTOs & Validation
create-user.dto.tsupdate-user.dto.tscreate-badge.dto.ts📂 Services
UserService
createUser(dto: CreateUserDto)getUserById(uuid: string)getUsers()(optionnel)updateUser(uuid: string, dto: UpdateUserDto)deleteUser(uuid: string)assignBadgeToUser(userUuid, badgeUuid)getUserBadges(userUuid: string)getUserXpTransactions(userUuid: string)BadgeService
createBadge(dto: CreateBadgeDto)getBadges()XpTransactionService
createXpTransaction(userUuid: string, ... )getXpTransactions(userUuid?: string)📂 Controllers
UserController
POST /usersGET /users/:idPATCH /users/:idDELETE /users/:idPOST /users/:id/badges/:badgeId(attribuer un badge)GET /users/:id/xp-transactionsBadgeController
POST /badgesGET /badgesDELETE /badges/:idXpTransactionController
POST /xp-transactionsGET /xp-transactions(ouGET /xp-transactions/:id)3.3. Tests Users
4. Gestion des Commentaires (Comments)
4.1. Base de Données & Relations
📂 Entité
Comment"visible","hidden")Relations :
4.2. Services & DTOs
📂 DTOs & Validation
create-comment.dto.tsupdate-comment.dto.ts(optionnel)📂 CommentService
createComment(userUuid, resourceUuid, dto: CreateCommentDto)getCommentsForResource(resourceUuid: string)updateComment(commentUuid: string, updateDto)deleteComment(commentUuid: string)📂 CommentController
POST /comments(ou/resources/:id/comments)GET /resources/:id/commentsPATCH /comments/:idDELETE /comments/:id4.3. Tests Comments
5. Gestion des Votes (Votes)
5.1. Base de Données & Relations
📂 Entité
Vote"upvote","downvote")Relations :
5.2. Services & DTOs
📂 VoteService
createVote(userUuid, resourceUuid?, commentUuid?, voteType)getVotesForResource(resourceUuid)getVotesForComment(commentUuid)deleteVote(voteUuid)updateVote(voteUuid, newType)📂 Controllers
POST /votes– (body précisevote_type,user_uuid,resource_uuidoucomment_uuid)GET /resources/:id/votes– lister les votes d’une resourceGET /comments/:id/votes– lister les votes d’un commentDELETE /votes/:id5.3. Tests Votes
6. Modération (Reports & Actions)
6.1. Base de Données & Relations
📂 Entité
Report"spam","offensive","plagiat", etc.)"open","resolved")📂 Entité
ModerationAction"delete","ban", etc.)6.2. Services & DTOs
ReportService
createReport(userUuid, category, targetType, targetId...)getReports()updateReport(reportUuid, newStatus)ModerationService
createModerationAction(reportUuid?, actionType, reason, targetType, targetId)getModerationActions()6.3. Controllers
ReportController
POST /reportsGET /reportsPATCH /reports/:idModerationController
POST /moderation-actionsGET /moderation-actions6.4. Tests Modération
7. Finalisation & Intégration
7.1. Tests unitaires & E2E
@nestjs/testing+ Supertest) pour tous les endpoints CRUD7.2. Optimisation Docker
docker-compose.yml(volumes, secrets, etc.)7.3. CI/CD
npm install,npm run build,npm run test7.4. Publication & Documentation
@nestjs/swagger) ou Postman docsv0.1.xstable7.5. Intégration Discord (optionnel)
discord.js/create-resource,/vote, etc.) qui appellent l’API