luxury-opportunity-bot

Luxury Opportunity Bot

Bot per trovare prodotti di lusso in asta o sconto, calcolare margini e inviare segnalazioni con link e dettagli.

Setup locale con Docker

Requisiti

1) Clona il repository

git clone https://github.com/tjkkkk9-sys/luxury-opportunity-bot.git
cd luxury-opportunity-bot

2) Crea il file di ambiente

cp .env.example .env

Apri .env e verifica i valori principali:

PYTHONUNBUFFERED=1
MIN_PROFIT=100
MIN_ROI_PERCENT=20
ALLOWED_BRANDS=
DATABASE_URL=postgresql+psycopg://luxury:change-me@db:5432/luxury
JWT_SECRET=change-this-to-a-long-random-secret-min-32-chars
JWT_EXPIRE_MINUTES=60
ADMIN_USERNAME=admin
ADMIN_PASSWORD=change-this-password
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=
REQUEST_TIMEOUT_SECONDS=10
SCRAPE_URLS=
SCRAPE_INTERVAL_MINUTES=60
WEB_HOST=127.0.0.1
WEB_PORT=8000
CORS_ORIGINS=http://localhost:8000

Nota: in produzione usa password e secret casuali. Non committare .env.

3) Avvia i servizi

make up
make ps

Questo avvia:

4) Verifica il sistema

Apri nel browser:

Oppure verifica da terminale:

curl http://localhost:8000/health

Risposta attesa:

{"status":"ok"}

5) Login amministratore

Il primo avvio crea automaticamente l’utente admin definito da ADMIN_USERNAME e ADMIN_PASSWORD.

Per ottenere un token JWT:

curl -X POST http://localhost:8000/api/auth/token \
  -d "username=admin&password=change-this-password"

L’API risponderà con un JSON contenente access_token, token_type e expires_in.

6) Smoke test

Dopo aver avviato il servizio e impostato la password corretta nel file .env, esegui:

ADMIN_PASSWORD='change-this-password' make smoke

Questo verifica:

7) Comandi utili

make logs
make down
make ps
make db-shell
make test
make lint
make smoke

Vedere i log

docker compose logs -f --tail=100

Aprire il database PostgreSQL

make db-shell

Dentro psql puoi verificare le tabelle:

\dt
SELECT * FROM opportunities LIMIT 10;

Oppure senza entrare nel container:

docker compose exec db psql -U luxury -d luxury -c '\dt'
docker compose exec db psql -U luxury -d luxury -c 'SELECT * FROM opportunities LIMIT 10;'

Struttura del progetto

src/
  luxury_opportunity_bot/
    __init__.py
    auth.py
    pipeline.py
    scheduler.py
    storage.py
    web.py
    static/
scripts/
  smoke_test.py
Dockerfile
docker-compose.yml
Makefile
pyproject.toml
README.md
.env.example

Endpoint principali

Produzione

Prima di esporre il servizio in produzione:

Note

Il repository è pensato per un backend Python con FastAPI, PostgreSQL e un worker di scraping in background. L’API è usata per autenticazione JWT, gestione opportunità e export CSV, mentre il worker elabora i dati e invia notifiche Telegram se configurate.