Platforma do zbiórek dla organizacji non-profit
Wielodostępowa platforma SaaS dla uczelni i organizacji non-profit, umożliwiająca prowadzenie kampanii fundraisingowych z monitorowaniem darowizn w czasie rzeczywistym, programami ambasadorskimi, konfigurowalnym brandingiem oraz skalowalnością klasy enterprise na Kubernetes.
🔒 Praca prywatna / dla klienta — działająca strona i kod objęte są NDA. Chętnie omówię architekturę i moją rolę podczas rozmowy.
Przegląd projektu
W pełni funkcjonalna platforma fundraisingowa, która umożliwia organizacjom uruchamianie i zarządzanie kampaniami zbiórek. System obsługuje izolację wielodostępową (multi-tenant) z osobnymi bazami danych dla każdej organizacji, kanały darowizn w czasie rzeczywistym przez Server-Sent Events, strony fundraisingowe ambasadorów, konfigurowalne wyzwania oraz branding white-label — wszystko zarządzane przez panel administracyjny Wagtail CMS.
Kluczowe funkcje
- Architektura multi-tenant ze współdzieloną główną bazą danych i osobnymi bazami darowizn dla każdej organizacji
- Kanał darowizn w czasie rzeczywistym oparty na mikrousługach SSE (FastAPI i Rust/Axum) z Redis pub/sub
- Program ambasadorów — osobiste strony fundraisingowe z indywidualnymi celami i rankingami
- Termometry kampanii, wyzwania ograniczone czasowo oraz oznaczenia celów
- Branding white-label dla każdej organizacji (logo, kolory, czcionki, domeny niestandardowe)
- Uwierzytelnianie SSO przez OIDC (Google, Azure AD, Okta)
- Zadania w tle Celery do agregacji statystyk i rozgrzewania cache
- Wykrywanie botów i ograniczanie liczby żądań (rate limiting) na połączeniach SSE
- Rozproszone śledzenie (distributed tracing) z OpenTelemetry i Jaeger
- Zestaw testów end-to-end z Playwright
Architektura
Stos wielousługowy: Django/Gunicorn dla warstwy webowej, FastAPI/Hypercorn oraz Rust/Axum do asynchronicznego strumieniowania SSE przez HTTP/2, workery Celery do przetwarzania w tle, MySQL do przechowywania danych multi-tenant oraz Redis do cache'owania i pub/sub. Media serwowane z Azure Blob Storage za CDN. Wdrożenie na Kubernetes przez Helm z auto-skalowaniem, pod disruption budgets i health probes. Wydajność zoptymalizowana z ponad 70 zapytań do 9 na złożonych stronach kampanii dzięki eliminacji N+1 i wielowarstwowemu cache'owaniu.