As someone who enjoys both disc golf and good technology, I wanted Discinstock to be fast and smooth. Here's what powers it:
How the data is collected
Discinstock uses automated web scrapers (spiders) to collect disc information from online stores. These spiders run in a Kubernetes cluster and send their findings through RabbitMQ into a data pipeline. The pipeline handles storage and enrichment โ matching discs across stores, extracting flight numbers, and keeping everything organized.
The tech stack
Frontend:
- Nuxt 4 โ A Vue-based framework for modern web apps with server-side rendering
- TypeScript โ Type-safe code for fewer bugs and better developer experience
- BeerCSS โ A lightweight CSS framework based on Material Design 3
- Pinia โ State management for Vue, handling filters and sorting
- Cloudflare Workers โ Edge hosting for fast page loads worldwide
Backend:
- Python + FastAPI โ The API serving disc data to the frontend
- RabbitMQ โ Message queue for coordinating data from multiple spiders
- Kubernetes โ Container orchestration for running spiders, API, and data pipelines
Why these choices?
The frontend runs on Cloudflare's edge network for low latency, while the backend lives in Kubernetes for flexibility and scalability. It's a hobby project that grew a bit, so I wanted a setup that's fun to work with and can handle future growth without breaking the bank.