Bot per trovare prodotti di lusso in asta o sconto, calcolare margini e inviare segnalazioni con link e dettagli.
git clone https://github.com/tjkkkk9-sys/luxury-opportunity-bot.git
cd luxury-opportunity-bot
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.
make up
make ps
Questo avvia:
localhost:5432http://localhost:8000Apri nel browser:
Oppure verifica da terminale:
curl http://localhost:8000/health
Risposta attesa:
{"status":"ok"}
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.
Dopo aver avviato il servizio e impostato la password corretta nel file .env, esegui:
ADMIN_PASSWORD='change-this-password' make smoke
Questo verifica:
/api/auth/memake logs
make down
make ps
make db-shell
make test
make lint
make smoke
docker compose logs -f --tail=100
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;'
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
GET /healthPOST /api/auth/tokenGET /api/auth/meGET /api/opportunitiesGET /api/opportunities/exportPOST /api/pipeline/runPrima di esporre il servizio in produzione:
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.