Create, track and complete weekly challenges — and see who's winning among friends.
ChallengeDays is an iOS app where users can create their own weekly challenges and track their daily progress. The app features a friends ranking system that shows who's completing the most challenges — turning personal discipline into a social and competitive experience.
Built entirely with UIKit using View Code (no Storyboards, no XIBs) and Core Data for local persistence.
🎯 Custom Challenges — Create weekly challenges with a name and number of days
📅 Daily Progress Tracking — Complete one day at a time with a clear visual flow
🔄 Challenge Reset — Restart any challenge from scratch whenever you want
📊 Progress Circle — Visual indicator showing how far you've come
🪜 Day Stepper — Step-by-step view of each day's progress
🏆 Friends Ranking — See who's completing the most challenges among your friends
💾 Local Storage with Core Data — All data persists offline, no account required
Layer: Technology
Language: Swift 6
UI Framework: UIKit (100% View Code)
Persistence: Core Data
Architecture: MVVM.
├── App/
│ ├── AppDelegate.swift
│ └── SceneDelegate.swift
│
├── Features/
│ └── Challenge/
│ ├── Model/
│ │ └── ChallengeState.swift
│ ├── View/
│ │ └── ChallengeView.swift
│ └── Controller/
│ └── ChallengeViewController.swift
│
├── Components/
│ ├── ButtonComponent.swift
│ ├── CustomCard.swift
│ ├── ProgressCircleView.swift
│ └── StepperView.swift
│
├── CoreData/
│ └── ChallengeDays.xcdatamodeld
│
└── Resources/
└── Colors.swift
cd ChallengeDays open ChallengeDays.xcodeproj