I have started learning SwiftUI during the pandemic lockdown. SwiftUI was comparatively easy and challenging for me due to its declarative nature of development. Initially, I have concentrated on the fundamentals of SwiftUI and spent more time playing with the learned concepts in Xcode.
Later, I have decided to develop a complete working app using SwiftUI to monitor my workouts progress which I’m using in my daily routine. I have posted many videos and blogs based on the experience and learnings from the app.
A Guide to Property Wrappers in SwiftUI
@State, @Published, @EnvironmentObject, and more
Integrating WidgetKit in Existing SwiftUI Apps
Add awesome widgets to your iOS 14 application
I was developing the app in private for my personal use. Later, I have decided to open source it to receive feedback and comments about the code structure and approach that I have used on it.
You can find the complete source code of the app from the below repo,
Simple workout and progress tracking app for fitness freaks with Widget support. - karthironald/BodyProgress
Here are the features of the workout app. Take a look at the repo’s Readme file for screenshots.
- CRUD (Can create unlimited workout)
- Favourite and unfavourite (My favourite workouts are chest and biceps. You can favourite and unfavourite your workouts too)
- CRUD (Can create unlimited exercises in a workout)
- Exercise references (Can add video links as reference which can be accessed whenever needed)
- CRUD (Can create unlimited sets in an exercise)
- Bulk update (Can update the weights and reps of the multiple sets easily in few taps)
- Start today workout (Can start your today workout with duration timer and log your each set)
- Rest timer (Automatic or manual rest timer for perfect rest planning between your sets)
- History with filters (Can filter you workout history based on body part, completion status or time period)
- Continue incomplete workouts (Can continue your incomplete workout)
- Pie-Chart summary and its split-up (Provides clear view on each body part and its workout history details)
- Local Notification (Reminds you to start you workout on time)
- Haptic Feedbacks (Provides Rigid haptic feedback for the interactions with the app)
- Widget (A configurable widget to get the summary of your workout history)
My code might not be the perfect. But you can get some idea to learn how easy it is to develop an app using SwiftUI. Have a look at my source code and let me know your feedbacks in comments.