FastAPIAPSchedulerDockerSQLite

Giants Monitor

A service that monitors listings on the Yomiuri Giants' official resale platform (tixplus.jp) and sends a notification when a ticket matching the configured conditions appears.

Tech stack

Backend: FastAPI + APScheduler (polling every 5 minutes) / DB: SQLite / Runtime: runs continuously on gumma via Docker / docker-compose (restart: always) / Notifications: ntfy.sh (planning a future migration to the LINE Messaging API)

Scraping approach

tixplus.jp is an Inertia.js SPA, but the entire page's JSON is embedded in a data-page attribute, so I found and implemented a way to fetch listing data with curl alone — no JS engine needed. The resolver that maps a date to a game ID also handles series spanning multiple days, and caches for an hour to keep load down.

How it's built

A solo project. Monitoring conditions (max price, quantity, game date) can be changed from a web UI and take effect immediately, with no Docker restart required.