Projet · Développeur full-stack

Plateforme de collecte de fonds pour associations

Plateforme SaaS multi-locataire permettant aux universités et aux organisations à but non lucratif de mener des campagnes de collecte de fonds avec suivi des dons en temps réel, programmes d'ambassadeurs, image de marque personnalisable et scalabilité de niveau entreprise sur Kubernetes.

🔒 Travail privé / client — le site en ligne et le code sont sous NDA. Je serai ravi de présenter l'architecture et mon rôle lors d'un appel.

Plateforme de collecte de fonds pour associations
Stack technique
PythonDjangoWagtailFastAPIRustSSEMySQLRedisCeleryDockerKubernetesHelmTailwind CSSPlaywrightDjango REST Framework

Présentation du projet

Une plateforme de collecte de fonds complète qui permet aux organisations de lancer et de gérer des campagnes de collecte de fonds. Le système prend en charge l'isolation multi-tenant avec des bases de données par organisation, des flux de dons en temps réel via les Server-Sent Events, des pages de collecte pour les ambassadeurs, des défis configurables et une image de marque en marque blanche — le tout géré via une interface d'administration Wagtail CMS.

Fonctionnalités clés

  • Architecture multi-tenant avec une base de données principale partagée et des bases de données de dons par organisation
  • Flux de dons en temps réel propulsé par des microservices SSE (FastAPI et Rust/Axum) avec le pub/sub de Redis
  • Programme d'ambassadeurs — pages de collecte personnelles avec objectifs individuels et classements
  • Thermomètres de campagne, défis à durée limitée et affectations à des causes
  • Image de marque en marque blanche par organisation (logos, couleurs, polices, domaines personnalisés)
  • Authentification SSO via OIDC (Google, Azure AD, Okta)
  • Tâches d'arrière-plan Celery pour l'agrégation des statistiques et le préchauffage du cache
  • Détection des bots et limitation du débit sur les connexions SSE
  • Traçage distribué avec OpenTelemetry et Jaeger
  • Suite de tests de bout en bout avec Playwright

Architecture

Stack multi-services : Django/Gunicorn pour la couche web, FastAPI/Hypercorn et Rust/Axum pour le streaming SSE asynchrone sur HTTP/2, workers Celery pour le traitement en arrière-plan, MySQL pour le stockage multi-tenant, et Redis pour la mise en cache et le pub/sub. Médias servis depuis Azure Blob Storage derrière un CDN. Déployé sur Kubernetes via Helm avec auto-scaling, budgets de perturbation des pods et sondes de santé. Performances optimisées, passant de plus de 70 requêtes à 9 sur les pages de campagne complexes grâce à l'élimination des N+1 et à une mise en cache multi-couches.

Me contacter →