Backlog
User Stories
US2.1
En tant qu'utilisateur, je peux créer un post avec jusqu'à 10 photos ou 1 vidéo (max 60s)
must
8 pts
US2.2
En tant qu'utilisateur, je peux ajouter un lieu, un coût estimé, du texte et des tags à mon post
must
5 pts
US2.3
En tant qu'utilisateur, je vois le feed de mes abonnés, trié par fraîcheur + pertinence IA
must
8 pts
US2.4
En tant qu'utilisateur, je peux liker un post (optimistic UI — réponse instantanée)
must
3 pts
US2.5
En tant qu'utilisateur, je peux commenter un post et voir les réponses imbriquées (1 niveau)
must
5 pts
US2.6
En tant qu'utilisateur, je peux sauvegarder un post dans mes collections
must
3 pts
US2.7
En tant qu'utilisateur, je peux partager un post via deep link ou share sheet
must
3 pts
US2.8
En tant qu'utilisateur, je peux reposter un contenu sur mon feed avec mention de l'auteur
should
4 pts
US2.9
En tant qu'utilisateur, je peux signaler un post (spam, harcèlement, faux, IA non déclaré)
must
2 pts
US2.10
En tant que système, le post est labellisé "Généré par IA" si la détection Hive > 80%
must
5 pts
US2.11
En tant que système, les métadonnées EXIF sont extraites pour détecter la localisation réelle
must
4 pts
US2.12
En tant qu'utilisateur, le feed inclut des recommandations IA (destinations similaires à mes posts)
should
5 pts
US2.13
En tant qu'utilisateur, je peux filtrer le feed par type : Tout / Mes abonnés / Trending
should
2 pts
REST API /posts & /feed
Endpoints API
GET
/feed
Feed paginé (?cursor=&limit=20&type=all|following|trending)
🔒 auth
POST
/posts
Créer un post (multipart ou JSON + presigned)
🔒 auth
GET
/posts/:id
Détail d'un post
public
PATCH
/posts/:id
Modifier un post (auteur seulement)
🔒 auth
DELETE
/posts/:id
Supprimer un post (auteur ou admin)
🔒 auth
POST
/posts/:id/like
Liker (idempotent)
🔒 auth
DELETE
/posts/:id/like
Unlike
🔒 auth
GET
/posts/:id/likes
Liste des likers (paginé)
public
POST
/posts/:id/comments
Poster un commentaire
🔒 auth
GET
/posts/:id/comments
Liste commentaires (paginé + cursor)
public
DELETE
/comments/:id
Supprimer un commentaire
🔒 auth
POST
/posts/:id/save
Sauvegarder dans collections
🔒 auth
DELETE
/posts/:id/save
Retirer des sauvegardes
🔒 auth
POST
/posts/:id/report
Signaler un post
🔒 auth
POST
/posts/:id/repost
Reposter avec mention
🔒 auth
GET
/users/:id/posts
Posts d'un utilisateur (paginé)
public
GET
/users/me/saves
Posts sauvegardés (paginé)
🔒 auth
GET
/media/presign
Obtenir URL S3 presignée pour upload
🔒 auth
Critères d'acceptation
✓Post avec 10 photos uploadé en < 8 secondes sur connexion 4G standard
✓Feed se charge en < 1.5s (P95) avec cache Redis
✓Like optimistic : réponse visuelle < 50ms, sans spinner
✓Label IA visible sur le post dans les 30 secondes après publication
✓Report d'un post → ticket modération créé en base dans < 2s
✓Feed "Trending" recalculé toutes les 5 minutes maximum