Nowoczesna aplikacja webowa do wyszukiwania i tworzenia klipów wideo z popularnego polskiego serialu "Ranczo".
To jest interfejs webowy dla RANCZO_KLIPY API
For English documentation, see README.md.
![]() Desktop - Strona główna |
![]() Mobile - Wyszukiwanie |
![]() Desktop - Zapisane klipy |
![]() Mobile - Wyniki wyszukiwania |
- Wyszukiwanie cytatów i dialogów z serialu
- Szybkie i dokładne wyszukiwanie tekstowe
- Wyniki wyszukiwania w czasie rzeczywistym
- Przeglądanie klipów wideo z wybranymi scenami
- Pobieranie klipów w formacie MP4
- Zapisywanie ulubionych klipów do osobistej kolekcji
- Automatyczne generowanie miniatur z cache'owaniem
- Precyzyjne ustawianie czasu rozpoczęcia i zakończenia klipu
- Podgląd zmian w czasie rzeczywistym
- Tworzenie własnych kompilacji
- Bezpieczna autentykacja oparta na sesjach
- Osobiste kolekcje klipów
- Preferencje użytkownika
- Działa perfekcyjnie na komputerze, tablecie i telefonie
- Zoptymalizowany interfejs dotykowy na urządzenia mobilne
- Gotowość do Progressive Web App
- Ciasteczka HTTP-only dla sesji
- Walidacja tokenów JWT
- Proxy API dla bezpiecznej komunikacji
- Konfiguracja CORS
- Przetwarzanie w tle miniatur i dostosowań wideo
- Operacje nieblokujące
- Wiele workerów do przetwarzania równoległego
- Vue 3 - Progresywny framework JavaScript
- TypeScript - Bezpieczeństwo typów
- Vite - Szybkie narzędzie do budowania
- Pinia - Zarządzanie stanem
- Vue Router - Routing po stronie klienta
- Tailwind CSS - Utility-first CSS
- FastAPI - Nowoczesny framework webowy Python
- Uvicorn - Serwer ASGI
- Pydantic - Walidacja danych
- httpx - Asynchroniczny klient HTTP
- Pillow - Przetwarzanie obrazów
- python-jose - Obsługa JWT
- RabbitMQ - Broker komunikatów do przetwarzania kolejek
- pika - Klient RabbitMQ dla Python
- RabbitMQ - Kolejka komunikatów do asynchronicznego przetwarzania zadań
- Docker - Konteneryzacja
- Caddy - Serwer webowy dla produkcji
System:
- Node.js 20.19+ lub 22.12+
- Python 3.10+
- RabbitMQ 3.13+
- Docker (opcjonalny, ale zalecany)
Zależności Backend:
- FastAPI, Uvicorn, Pydantic, httpx, Pillow, python-jose, passlib, pika
Zależności Frontend:
- Vue 3, TypeScript, Vite, Pinia, Vue Router, Axios, Tailwind CSS
# 1. Sklonuj repozytorium
git clone https://github.com/dam2452/RanchBotWeb.git
cd RanchBotWeb
# 2. Konfiguracja środowiska
cp .env.example .env
# Edytuj .env z własnymi ustawieniami
# 3. Zbuduj i uruchom wszystkie serwisy (backend, frontend, RabbitMQ, workery)
docker-compose up -d
# Zobacz logi
docker-compose logs -f
# Zatrzymaj serwisy
docker-compose downDostęp:
- Aplikacja: http://localhost:8880
- Backend API: http://localhost:8000
- Zarządzanie RabbitMQ: http://localhost:15672 (guest/guest)
- Zainstaluj i uruchom RabbitMQ:
# Ubuntu/Debian
sudo apt-get install rabbitmq-server
sudo systemctl start rabbitmq-server
# macOS
brew install rabbitmq
brew services start rabbitmq
# Windows - pobierz z https://www.rabbitmq.com/download.html# 1. Sklonuj repozytorium
git clone https://github.com/dam2452/RanchBotWeb.git
cd RanchBotWeb
# 2. Konfiguracja Backend
cd backend
python -m venv ../.venv
source ../.venv/bin/activate # Windows: ..\.venv\Scripts\activate
pip install -r requirements.txt
# Konfiguracja środowiska
cp .env.example .env
# Edytuj .env z własnymi ustawieniami (w tym dane RabbitMQ)
# 3. Konfiguracja Frontend
cd ../vue-app
npm installTerminal 1 - RabbitMQ (jeśli nie działa jako usługa):
rabbitmq-serverTerminal 2 - Backend API:
cd backend
source ../.venv/bin/activate # Windows: ..\.venv\Scripts\activate
python -m uvicorn app.main:app --reload --port 8000Terminal 3 - Worker Miniatur:
cd backend
source ../.venv/bin/activate
python workers/thumbnail_worker.pyTerminal 4 - Worker Dostosowań:
cd backend
source ../.venv/bin/activate
python workers/adjustment_worker.pyTerminal 5 - Frontend:
cd vue-app
npm run devDostęp:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Zarządzanie RabbitMQ: http://localhost:15672
Aplikacja używa Docker Compose z następującymi serwisami:
- rabbitmq - Broker komunikatów do asynchronicznego przetwarzania zadań
- backend - Serwer aplikacji FastAPI
- worker-thumbnail - Worker w tle do generowania miniatur
- worker-adjustment - Worker w tle do dostosowywania wideo
- frontend - Serwer webowy Caddy serwujący aplikację Vue.js
# Zbuduj i uruchom wszystkie serwisy (produkcja)
docker-compose up -d
# Zbuduj i uruchom w trybie deweloperskim (eksponuje port backendu 8000)
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# Zobacz logi konkretnego serwisu
docker-compose logs -f backend
docker-compose logs -f worker-thumbnail
docker-compose logs -f worker-adjustment
# Zrestartuj konkretny serwis
docker-compose restart backend
# Zatrzymaj wszystkie serwisy
docker-compose down
# Przebuduj po zmianach w kodzie
docker-compose up -d --buildPOST /auth/login- Zaloguj użytkownika i utwórz sesjęGET /auth/logout- Wyloguj bieżącą sesjęPOST /auth/logout-all- Wyloguj ze wszystkich sesjiGET /auth/user- Pobierz informacje o bieżącym użytkowniku
GET /clips?action=get_clips- Pobierz zapisane klipy użytkownikaGET /clips/video/{clip_id}- Pobierz plik wideo dla konkretnego klipuGET /clips/thumbnail/{clip_id}- Pobierz miniaturę dla konkretnego klipuPOST /clips/save- Zapisz klip do kolekcji użytkownikaPOST /clips/delete- Usuń klip z kolekcji użytkownika
POST /api/json- Proxy żądań JSON APIPOST /api/video- Proxy żądań wideo API (zwraca blob)POST /api/thumbnail- Generuj miniaturę z wideo (asynchronicznie z RabbitMQ)POST /api/adjust-preview- Dostosuj timing wideo (asynchronicznie z RabbitMQ)POST /api/batch-load- Równoległe wsadowe ładowanie klipów
Ustaw ENABLE_API_DOCS=True w backend/.env aby uzyskać dostęp:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Frontend (Vue 3) - Interfejs użytkownika na porcie 5173/8880
- Backend (FastAPI) - Serwer API na porcie 8000, proxy do zewnętrznego API
- RabbitMQ - Kolejka komunikatów do przetwarzania asynchronicznego (miniatury, dostosowania wideo)
- Workery - Procesy w tle konsumujące zadania z RabbitMQ
- Zewnętrzne API (RANCZO_KLIPY) - Serwis przetwarzania wideo
cd backend
# Uruchom testy
pytest tests/ -v
# Uruchom konkretny test
pytest tests/test_auth.py -v
# Włącz dokumentację API
echo "ENABLE_API_DOCS=True" >> .env
# Uruchom z hot reload
python -m uvicorn app.main:app --reloadcd vue-app
# Sprawdzanie typów
npm run type-check
# Lint i naprawa
npm run lint
# Budowa produkcyjna
npm run build
# Podgląd produkcyjnej budowy
npm run previewcd backend
source ../.venv/bin/activate
# Uruchom thumbnail worker z debugowaniem
PYTHONUNBUFFERED=1 python workers/thumbnail_worker.py
# Uruchom adjustment worker
PYTHONUNBUFFERED=1 python workers/adjustment_worker.py# RanchBot API
RANCHBOT_API_URL=http://twoj-api-url:8077/api/v1
DEV_JWT_TOKEN=twoj_jwt_token_tutaj
# Sesja i Bezpieczeństwo
SECRET_KEY=twoj-sekretny-klucz-tutaj
SESSION_MAX_AGE=86400
# CORS
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000
# Serwer
HOST=0.0.0.0
PORT=8000
RELOAD=True
ENABLE_API_DOCS=False # Ustaw na True dla dokumentacji API
# RabbitMQ
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASS=guest# RanchBot API
RANCHBOT_API_URL=http://twoj-api-url:8077/api/v1
# Bezpieczeństwo
SECRET_KEY=twoj-sekretny-klucz-tutaj
SESSION_MAX_AGE=86400
# CORS
ALLOWED_ORIGINS=http://localhost:8880
# RabbitMQ
RABBITMQ_USER=guest
RABBITMQ_PASS=guestWkłady są mile widziane! Śmiało przesyłaj Pull Request.
- Sforkuj repozytorium
- Utwórz gałąź funkcji (
git checkout -b feature/NowaCecha) - Zatwierdź zmiany (
git commit -m 'Dodaj nową cechę') - Wypchnij do gałęzi (
git push origin feature/NowaCecha) - Otwórz Pull Request
- v2.0.5 - Dodano przetwarzanie kolejek RabbitMQ, asynchroniczne generowanie miniatur/dostosowań
- v2.0.4 - Zoptymalizowane buildy Docker i cache'owanie
- v2.0.0 - Kompletne przepisanie z Vue.js + FastAPI
- v1.0.0 - Oryginalna wersja PHP (zarchiwizowana w gałęzi
PHP-v1-Version)
Ten projekt jest licencjonowany na licencji MIT - zobacz plik LICENSE po szczegóły.
Zainteresowany używaniem RanchBot Web? Kontakt przez Telegram: @dam2452
GitHub: @dam2452
Jeśli podoba Ci się ten projekt i chciałbyś wesprzeć jego rozwój, rozważ kupienie mi mamrota!






