top of page

DCC Weekly Activities — Building a Live iOS App with SwiftUI, Cloudflare Workers & Jira

  • Mar 27
  • 2 min read
DCC Weekly Activities App Icon

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

DCC Weekly Activities - Club Code Login Screen on iPhone

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


Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page