SubTracker


SubTracker to backendowe REST API stworzone w Flasku do zarządzania subskrypcjami (np. Netflix, Spotify) wraz z systemem automatycznych przypomnień o płatnościach oraz miesięcznych raportów wydatków wysyłanych e-mailem.

Projekt został zaprojektowany jako aplikacja produkcyjna, z wyraźnym podziałem na warstwy, asynchronicznym przetwarzaniem zadań, schedulerem oraz pełnym środowiskiem uruchomieniowym w Dockerze.

Kluczowe funkcjonalności

  • Rejestracja i logowanie użytkowników (JWT: access + refresh)
  • Zarządzanie subskrypcjami (CRUD)
  • Automatyczne przypomnienia e-mail o płatnościach za 1 i 7 dni
  • Generowanie miesięcznych raportów wydatków
  • Logowanie każdej próby wysłania przypomnienia (success/failure)
  • Token revocation przechowywane w Redis
  • Dokumentacja API w Swagger UI
  • Postman Collection do testowania endpointów

Architektura

Aplikacja została oparta o podejście event-driven z wykorzystaniem Redis i RQ do obsługi zadań asynchronicznych oraz cyklicznych.

System składa się z:

  • Flask REST API
  • MySQL + SQLAlchemy + Alembic
  • Redis jako:
    • backend dla kolejek RQ
    • storage dla blokowanych tokenów JWT
  • Trzech niezależnych workerów:
    • wysyłka maili
    • przypomnienia
    • raporty miesięczne
  • RQ Scheduler uruchamiającego zadania cykliczne (cron)
  • Pełnego środowiska Docker Compose (API, DB, Redis, workers, scheduler)

Każde przypomnienie i raport przetwarzane są jako osobne zadanie, co pozwala na izolację, retry i skalowalność.

Technologie

Python · Flask · Flask-Smorest · SQLAlchemy · Alembic · MySQL
Redis · RQ · RQ Scheduler · JWT · Mailgun · Docker · Pytest

Testy

Projekt zawiera testy:

  • Unit
  • Service
  • Integration

Pokrycie testami: 90%

Kod źródłowy