DCC Weekly Activities — Building a Live iOS App with SwiftUI, Cloudflare Workers & Jira
- Mar 27
- 2 min read

The Challenge
The Desi Cycling Club needed a simple, engaging way for members to track weekly cycling stats, compare performance, and stay motivated — without requiring individual Strava accounts or complex OAuth flows.
The Solution
I designed and built DCC Weekly Activities — a native iOS/iPad app with a serverless Cloudflare Worker backend. The app features 55+ features across 5 tabs, real-time Strava data integration, adaptive layouts for iPhone and iPad, and an in-app feature request system that creates Jira tickets directly.
App Screenshots

Tech Stack
Swift 6 / SwiftUI — full native iOS and iPad app with adaptive sidebar layout
Cloudflare Workers — serverless API with KV caching, cron triggers, and automatic token refresh
Strava API — club activity aggregation with sport type enrichment (Road, MTB, Gravel, E-Bike)
Jira REST API — automated issue creation from in-app voice/text feature requests
Face ID / Keychain — biometric authentication with secure token storage
Speech Recognition — on-device voice dictation for feature requests
Architecture Highlights
The app uses a club code authentication model — members enter a shared code (no individual Strava OAuth) and unlock with Face ID on subsequent launches. Data flows from Strava through a Cloudflare Worker that aggregates per-member stats, caches responses in KV for performance, and serves them via a clean REST API.
A protected core framework (SCRUM-56) guards critical files with a 6-step change control process — ensuring auth flows, data pipelines, and navigation never break from feature additions.
Key Features (55+ shipped)
Weekly Report Table — distance, rides, avg speed, elevation, trend arrows, week-on-week comparison
Interactive Charts — radar chart, scatter plot (speed vs elevation), distance bar chart
AI Coaching Tips — personalised gap analysis with What-If scenarios
Performance Rings — animated rings showing your stats relative to the club
Celebration Cards with confetti animations for each rider
Ride Type Filter — Road, MTB, Gravel, E-Bike, Virtual
iPad Adaptive Layout — sidebar navigation, two-column dashboard, Stage Manager support
Voice Dictation Feature Requests — speak your idea, it creates a Jira ticket
Offline Support — disk caching and queued feature requests that auto-send
Live Feature Dashboard
The interactive feature dashboard below is live — it pulls directly from the Jira SCRUM project backlog via a Cloudflare Worker. Features are auto-categorised by Jira labels and status. Search, filter by status (Live / Planned / Shelved), and explore all features in real time.
Explore the full interactive dashboard here: DCC Feature Dashboard
Project Management Approach
Agile/Scrum with Jira — sprint-based delivery with SCRUM project board
Protected Core Framework — tiered file protection with mandatory regression checklists
Claude Code + AI-Assisted Development — pair programming for Swift and JavaScript
User feedback loop — in-app feature requests flow directly into the Jira backlog
Results
55+ features shipped across 12 categories
5 interactive tabs: Ride, Overview, Leaderboard, Insights, Analysis
Sub-second data loads via Cloudflare KV edge caching
Zero-touch deployment via Wrangler CLI
Offline-capable with disk caching and queued feature requests










Comments