Sneaker Launchpad is a sneaker launch dashboard for Nike and Adidas. It provides:
- A FastAPI frontend for browsing upcoming sneakers and selecting which pair to target.
- A local SQLite-backed purchase history.
- Provider adapters for Nike SNKRS and Adidas release data.
- Browser automation hooks for Nike and Adidas using persistent Chromium profiles.
- Unit and integration tests built around domain services and adapter seams.
GitHub repo name: sneaker-launchpad
The previous repository name no longer matches the project. The new project covers:
- Multiple stores
- Upcoming release tracking
- Purchase selection and automation orchestration
- Purchase history and operational visibility
The product surface is now broader, so the project name is Sneaker Launchpad.
src/sneaker_launchpad/models.py: typed domain objectssrc/sneaker_launchpad/services.py: application services for catalog refresh and purchasessrc/sneaker_launchpad/repositories.py: SQLite and in-memory repositoriessrc/sneaker_launchpad/providers/: Nike and Adidas catalog adapterssrc/sneaker_launchpad/automation.py: Playwright-backed browser automationsrc/sneaker_launchpad/web/: FastAPI routes, templates, and frontend assets
python3 -m pip install -e .[dev]
python3 -m playwright install chromium
cp config/settings.example.env .env.local
source .env.local
sneaker-launchpad serveOpen http://127.0.0.1:8000.
The app reads these values directly from the environment:
SNEAKER_LAUNCHPAD_DB: SQLite file pathSNEAKER_LAUNCHPAD_NIKE_PROFILE_DIR: persistent Chromium profile for NikeSNEAKER_LAUNCHPAD_ADIDAS_PROFILE_DIR: persistent Chromium profile for AdidasSNEAKER_LAUNCHPAD_HEADLESS:trueorfalseSNEAKER_LAUNCHPAD_FINALIZE_PURCHASE: whether automation should attempt the last order-submission click
Browser profiles are the safest way to keep logins and saved payment methods outside the app. Start with SNEAKER_LAUNCHPAD_FINALIZE_PURCHASE=false, verify that cart and checkout navigation behaves correctly, and only then decide whether to enable final order submission.
sneaker-launchpad serve
sneaker-launchpad refresh
sneaker-launchpad buy --provider nike --release-id nike-1 --size 10.5 --run
make checkThis project follows the testing style from Unit Testing: Principles, Practices, and Patterns:
- Business rules live in services and are covered with fast unit tests using in-memory repositories and fake automators.
- Parsing adapters are tested against fixed HTML fixtures to avoid brittle network-dependent tests.
- Integration tests exercise the real FastAPI routing and SQLite persistence together.
Run everything with:
make checkMore detail lives in [docs/ARCHITECTURE.md](/Users/raelldottin/Documents/Personal/Code Project/docs/ARCHITECTURE.md), [docs/USER_GUIDE.md](/Users/raelldottin/Documents/Personal/Code Project/docs/USER_GUIDE.md), and [docs/TESTING.md](/Users/raelldottin/Documents/Personal/Code Project/docs/TESTING.md).
- Nike SNKRS exposes enough page data for server-side parsing today.
- Adidas sometimes serves WAF or 403 pages to automated refreshes. When that happens, the app keeps cached data, and you can still add manual Adidas product URLs from the dashboard.
- Storefront markup changes over time, so browser automation is intentionally isolated behind provider-specific heuristics that are easy to update.