Social Connect
Réseau social full-stack, du moteur temps réel au feed
- Go
- Next.js
- PostgreSQL
- Redis
- MinIO
- Docker
- 4
- Services orchestrés
- WebSocket
- Temps réel
- S3-compat
- Stockage médias
Social Connect est un réseau social complet construit pendant mon parcours à Zone01 Rouen. Un terrain de jeu idéal pour pousser une architecture backend solide tout en soignant l'expérience front.
Architecture
Le cœur est une API écrite en Go, pensée pour la concurrence : websockets pour le temps réel (notifications, chat), et des goroutines pour traiter les événements en parallèle. La persistance est assurée par PostgreSQL, avec Redis pour les sessions et le cache des feeds chauds.
Les médias (avatars, images de posts) sont stockés dans MinIO, un service S3-compatible auto-hébergé — un bon moyen de comprendre le stockage objet sans dépendre d'un cloud.
Le hub temps réel s'appuie sur les goroutines pour diffuser un événement à tous les abonnés sans bloquer :
func (h *Hub) broadcast(event Event) {
for client := range h.clients {
select {
case client.send <- event:
default: // client lent → on le déconnecte plutôt que de bloquer
close(client.send)
delete(h.clients, client)
}
}
}Front-end
Le client est une application Next.js 15 en TypeScript, avec un feed optimiste et des mises à jour en temps réel via websocket.
Infrastructure
Tout le stack — API Go, Postgres, Redis, MinIO — tourne via Docker Compose, ce qui rend l'environnement reproductible et le déploiement trivial.
Ce que j'ai appris
Gérer le temps réel proprement (back-pressure, reconnexion, cohérence du cache) et orchestrer plusieurs services qui doivent rester synchronisés.