graph/projects/social-connect
Projet

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.