Aplikacja została stworzona w celu zbudowania kompletnego systemu backendowego do obsługi logowania użytkowników przez Spotify OAuth, pobierania ich danych oraz asynchronicznego przetwarzania zadań w tle za pomocą Celery. Projekt ma charakter edukacyjno-praktyczny i służył do nauczenia się:
- pracy z Flask w środowisku produkcyjnym,
- integracji OAuth,
- obsługi kolejki zadań (Celery + Redis),
- konteneryzacji aplikacji (Docker, Docker Compose),
- wdrażania aplikacji na serwer VPS.
- Logowanie użytkownika przez Spotify OAuth
- Pobieranie danych użytkownika (np. top songs, profile info)
- Asynchroniczne zadania wykonywane przez Celery Worker
- Dane użytkowników zapisywane w lokalnej bazie SQLite
- Uruchamianie całości w kontenerach Docker
- Możliwość wdrożenia na serwer VPS i podpięcia domeny
.
├── main.py
├── tasks.py
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── instance/
└── User.db
└── static/css
└── css files
└── templates/
└── html files
- Flask – backend / API
- Celery – obsługa zadań w tle
- Redis – broker i backend Celery
- SQLite – lekka baza danych zapisywana lokalnie w katalogu
instance
-
Zbuduj i uruchom kontenery:
docker-compose up --build
-
Aplikacja będzie dostępna pod:
http://localhost:8000 -
Baza danych będzie tworzona automatycznie w katalogu:
instance/User.db
-
Sklonuj projekt na serwer:
git clone <repo> cd <project>
-
Uruchom w tle:
docker-compose up -d
-
Upewnij się, że port 8000 jest otwarty.
-
Wejdź na:
http://IP_TWOJEGO_SERWERA:8000 -
Jeśli korzystasz z domeny — skonfiguruj Cloudflare / DNS → record A → IP VPS.
-
Do produkcyjnego HTTPS użyj:
- Traefik lub
- Nginx + certbot (reverse proxy)
W projekcie użyto SQLite z lokalizacją:
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///instance/User.db"Dzięki temu:
- baza działa zarówno lokalnie, jak i w Dockerze,
- katalog
instance/jest montowany jako volume, - dane nie znikają przy restarcie.
Worker uruchamiany jest w kontenerze:
celery_worker:
command: celery -A main.celery worker -l info --pool=soloWysyłanie zadań działa po stronie aplikacji, zapisując efekty do SQLite.
Projekt jest swobodnie modyfikowalny do użytku własnego.