Projekt · Programista fullstack

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.

Platforma do zbiórek dla organizacji non-profit
Stack technologiczny
PythonDjangoWagtailFastAPIRustSSEMySQLRedisCeleryDockerKubernetesHelmTailwind CSSPlaywrightDjango REST Framework

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.

Kontakt →