This repository is dedicated to documenting my progress of the Hacking With Swift's course "100 Days of SwiftUI" by Paul Hudson.
If you would like to try this course yourself, you can find it at: https://www.hackingwithswift.com/100/swiftui
🚨 Latest update: 15/12/22
👨🏻💻 Currently on: Day 100 of 100
Each numbered project is taught by Paul Hudson through his videos, readings and quizes, as he slowly works through increasingly complex topics. The projects are ultimately prompted with challenges left up to the students to elevate the code on their own. These challenges are optional, but I find them to be one of the most essential parts to learning and gaining the most out of this course.
After 3 regular projects comes a milestone project - a project cumulating the topics of the previous 3. What puts these milestone projects above the regular ones is the absence of any learning material as the students are only provided with prompts to complete and a couple of hints. I believe this to be the most challenging aspect to this course, but also the most effective as it forces the students to delve deeply into all the previous material as well as develop our creativity to successfully tackle every problem. It is entirely up to the students to interpret the essence of each project and find ways to fulfill that image - these milestone projects do not have a single way being done and that is where every student can shine on their own.
This course has a final goal that can be reached after conquering all of the aforementioned projects: an exam for all the 100 days spent. If passed, the student obtains a certificate - with merit if they score 80% or more and with distinction if they score 95% or more. Achieving such a feat is without a doubt not easy and is definitely a great way to comemorate all of this hard work.
The first 14 days provided a gentle warm up for my SwiftUI learning as I covered the fundamentals of the Swift programming language. I worked through a selection of tutorials every day, and there was some optional extra reading afterwards I got to read through to dig even deeper.
I just learned a lot about Swift in only 14 days, so before I continue it's important I reflect on what you've learned so far.
Now that I’ve mastered the basics of Swift, in these days I’ll start building real SwiftUI apps using what I learned.
-
Project 1 - WeSplit
-
Challenge: Volume Converter - ChallengeDay: VolumeConverter
-
Project 2 - GuessTheFlag
-
Project 3 - Views and Modifiers
Reviewing what I’ve learned from days 16 - 24, and creating a project on these topics.
- Milestone Project 1-3 - Brain Train
In these next three projects, I developed my SwiftUI skills in new directions, while also practicing the fundamentals.
Reviewing what I’ve learned from days 26 - 34, and creating a project covering these topics.
- Milestone Project 4-6 - EduTainment
Now that my core SwiftUI skills are strong, I pushed past the basics and started building bigger apps.
Reviewing what I have learned from days 36 - 46, and creating a project covering these topics.
- Milestone Project 7-9 - Habits
In these projects, I started looking more carefully at how to send, retrieve, and store data in SwiftUI apps.
-
Project 10 - CupcakeCorner
-
Project 11 - Bookworm
-
Project 12 - Core Data Project
Reviewing what I have learned from days 49 - 59, and creating a project covering these topics.
- Milestone Project 10-12 - Users List app
In these projects, the difficulty started to ramp up as I learned how to integrate code from frameworks outside of SwiftUI, including UIKit and MapKit.
-
Project 13 - Instafilter
-
Project 14 - BucketList
-
Project 15 - Accessibility
Reviewing what I have learned from days 62 - 76, and creating a project covering these topics.
- Milestone Project 13-15 - NameReminder
In these projects, I built my biggest apps yet, while also exploring more ways to let the user interact with my apps: tab bars, gestures, haptics, and more.
-
Project 16 - HotProspects
-
Project 17 - Flashzilla
-
Project 18 - Layout and Geometry
As I approach the end of our 100 days, it’s time to pause and reflect on the massive projects I’ve built, then take on a fresh app building challenge.
- Milestone Project 16-18 - DiceRoller
In this final project, I cover some last tips and techniques to help me build fuller apps, including how to optimize for iPad.
- Project 19 - SnowSeeker
This entire process has been long and challenging while also being extremely insightful and interesting. I want to give my thanks to Paul Hudson for creating this course that has made it so much easier to learn and understand the beauty and nuances that come with the exciting language of SwiftUI. Not only did I gain more knowledge in SwiftUI itself, I also learned more about the time, effort and patience that comes with building more intricate and complex apps. Now more than ever, I feel most complete as an iOS developer. I am proud to have achieved as much as I did and will be sure to use all this knowledge to keep improving and coming out with amazing apps!
Tony Vu