The Wee Table
A production-style iOS WidgetKit app for SPFL standings, backed by a resilient Cloudflare Worker with multi-source ingestion and layered caching.
I built The Wee Table for myself first. I am a Scottish football fan, and I wanted a fast, clean way to check SPFL standings without bouncing between slow pages and inconsistent feeds. Outside Scotland, these leagues are often treated like an afterthought, so I decided to build the tool I wished existed and make it useful for other fans too.
The project became an iOS app + home screen widget focused on SPFL standings and fixtures.
The app includes four tabs:
- Table: Full division tables with team drill-down views
- Stats: Derived division metrics and leader context
- Predict: A “what-if” simulator based on upcoming fixtures
- Settings: Widget setup guidance and badge visibility preferences
The widget is configurable through AppIntent parameters, allowing people to select division and display mode (top-of-league vs team-context view), across small, medium, and large widget sizes.
On the backend, I built a TypeScript Cloudflare Worker API that aggregates standings and fixtures from multiple independent providers with a priority-based failover strategy.
If a provider is delayed, degraded, or changes format, the API automatically falls through to the next source and serves the best available dataset.
This design prioritises reliability over single-source trust, with layered caching across Worker KV, shared app/widget UserDefaults, and a file-based badge image cache for widget-safe rendering.
The core engineering outcome was a fast, glanceable product that remains useful even when upstream data is inconsistent or temporarily unavailable.