Retour aux projets

Squizer API - Backend de Chat Vidéo Social

2025
Projet Professionnel

Squizer est une API backend complète pour une plateforme de chat vidéo social en temps réel. L'application permet aux utilisateurs de se connecter via vidéo avec des personnes proches géographiquement, offrant une expérience sociale innovante basée sur la proximité et les intérêts communs.

L'architecture repose sur Django REST Framework pour exposer une API robuste et scalable, utilisée par des applications mobiles iOS et Android. Le système de matching géolocalisé utilise PostGIS pour effectuer des requêtes spatiales performantes et trouver des utilisateurs à proximité.

Le projet se distingue par son système de chat vidéo en temps réel basé sur WebRTC via OpenTok, permettant des sessions vidéo de haute qualité avec une latence minimale. L'architecture asynchrone avec Redis et RQ (Redis Queue) assure un traitement efficace des tâches en arrière-plan et des notifications push en temps réel.

Aperçu du projet

Technologies Utilisées

Django 2.1Django REST FrameworkPython 3.6PostgreSQL 9.6PostGISRedisdjango-rqOpenTokWebRTCAWS S3boto3GunicornNginxOneSignaldjango-allauthOAuth2MailjetNew Relic

Fonctionnalités Principales

Matching géolocalisé avec PostGIS et calculs de distance

Chat vidéo 1-to-1 en temps réel via WebRTC/OpenTok

Système d'amis et appels directs entre contacts

Authentification multi-plateformes (Facebook, Apple, Phone)

Workers asynchrones avec Redis Queue (priorités multiples)

Notifications push temps réel via OneSignal

Webhooks OpenTok pour événements vidéo

Gestion d'état utilisateur (online/offline/calling)

API REST complète avec documentation Swagger

Stockage médias sur AWS S3

Soft delete pour préservation des données

Système de signaling bidirectionnel

Architecture modulaire (users, chat, webrtc)

CORS configuré pour mobile/web

Monitoring avec New Relic

Emails transactionnels via Mailjet

Défis Rencontrés

Solution Apportée

J'ai développé une architecture Django modulaire avec apps dédiées (users, chat, webrtc, commands) pour une séparation claire des responsabilités. Le système de géolocalisation utilise PostGIS avec des fonctions spatiales optimisées pour le matching par distance. Les sessions WebRTC sont gérées via OpenTok avec un système de tokens sécurisés et de rooms dynamiques. Redis Queue avec trois niveaux de priorité (high/default/low) traite les tâches asynchrones comme les notifications et le matching. L'authentification multi-plateformes (Facebook, Apple, Phone) via django-allauth offre une expérience utilisateur fluide. AWS S3 stocke les médias et PostgreSQL avec PostGIS gère les données relationnelles et géospatiales.

Intéressé par un projet similaire ?

Je serais ravi de discuter de votre projet et de voir comment je peux vous aider