The Story of Dey
Why did I Make Dey?
A couple of years ago on January 2021, I was preparing for College exams while on vacation. In my journey trying to maximize Leisure Time without sacrificing Study Time, I went on the App Store and searched for a simple Day Counter App, which I found. However, these apps looked unfinished, unaesthetic and lacked many features. There wasn't a single app with all the features I wanted, there was always something I complained about, so instead of just settling with the best I could find and just keep studying and having fun, I took the long route and made my own day counter App. At first I wanted a very simple app that could allow me to create future events, show them in a list on the main menu with a day counter, let me pin them to a widget on the Home Screen, and finally, look good.
The First Versions
The first versions of the app were radically different, even compared to the ones I dared to release in the App Store. The Design Language was mostly Apple's but with a few changes. The code was awful, unoptimized, organization was nowhere to be found, but at least the user couldn't see that behind the UI, everything was a mess.
​
Since my goal was to make the app as quickly as possible so I could use it to count how may days I had until my exams, the code was messy and I didn't use anything I learned in College. I wouldn't dare to show my teachers that code, I would have been embarrassed. I didn't use any Design Patterns, Unit Tests, Good Practices and almost a third of the project was filled with "Smelly Code", but it did the job and I wasn't planning on releasing the app, it was something I did for myself to learn and have fun.
​
Here are some screenshots of the differences between the first versions of Dey:
Dey 0.1
Dey 0.1
Dey 0.1
Dey 0.1
Dey 0.1
Dey 0.2
Dey 0.2
Dey 0.2
Dey 0.2
Dey 0.3
Dey 0.3
Dey 0.3
Dey 0.3
The evolution between these versions was small, but with each version I learned awesome things.
In Dey 0.1 I learned how to use Core Data to store the custom events, I learned how to make Widgets with WidgetKit, I learned how to work with Dates, DateFormatter and Timers, and then I learned SwiftUI because I remembered Apple was very excited about SwiftUI and I thought "maybe this is the future of iOS Development, so should I use UIKit or SwiftUI? Alright, let's learn something new".
In Dey 0.2 I learned how to use Swift Packages and how to manage dependencies, I used this knowledge to implement a package called "IrregularGradients" to add some Apple Music-Like animations to the counters, and make the app look more fun.
In Dey 0.3 I learned the basics of EventKit and how to work with EKEvents to let the user copy events from their calendars to Dey, instead of adding them manually. This was the first step where you can see this was slowly going to become a calendar app.
Building The MVP
The first versions where good enough to me for a couple of weeks, but every time I used it, I wanted to change something. I've already reached my first goal, to build a functional app, but now what? well, I could polish the code, use it not only as a side project but also as a real life example where I could implement everything I've been learning in College. But that wasn't enough, I wanted to create my own design.
​
Backtracking a little bit to early 2018, without any knowledge of how to code, I started designing an app I still intend to release in the future. Since this was the first time I started designing software, I went through every phase of a noob designer and learned how to apply whatever Design Style was trending at the time. My intention was to only spend a healthy amount of time in the design process, so I wouldn't have to redesign the app too many times down the road, but I took it too far. Time went by and I still found myself in the design process, until I realized I wanted something else, I wanted to build my own Design System, something minimal and timeless, following Dieter Rams' design principles as a guide. That's when I finally found my path.
​
I spent a little longer than a year, from 2020 to 2021 designing my own Design System, and when I finally was happy with the "final" results (it wasn't final, I keep making changes even today), I asked myself "where can I use this?", and this was maybe a couple of weeks after I finished Dey 0.3, and it was perfect because it wasn't a huge and intimidating project, it was something I could do somehow fast and without getting much frustration along the way, so I made another branch on Dey's repository and started what would later become Dey 1.0, the first version to be released in the App Store.
​
For this version, I had 2 major tasks, implement the Design System with SwiftUI and basically rewrite the logic of the app. These weren't easy tasks by any means, since the logic was mixed with the UI, so every little change I made, completely broke the app, so that was the first thing I ended up doing, separating logic from UI.
​
As I was doing this, I realized I wasn't happy with how the app worked. What back then I thought was a cool feature, it was flawed from the start. I'm talking about "Import Events from Calendar", it wasn't "Sync Events with you Calendar". So I made a major decision and rewrote the whole app, removing proprietary Events from Dey, and working directly with the user's calendar.
​
I spent a couple of months polishing the code, adding new features and ironing the design, until I considered I had a pretty good enough version to launch TestFlight Betas. Once I reached that point, I enrolled in the Apple Developer Program and Apple Small Business Program to reduce commissions on my earnings. The process was quite simple, but since I was afraid of making important mistakes in the agreements, reading some articles and watching tutorials on YouTube, steered me in the right directions. Once my account was fully set up, it was time to upload Dey to TestFlight. Every time I uploaded a new beta I thought "this is easy, I think the app is ready, but let's use it for another day or two, just in case". I ended up releasing 14 betas for the first version.
​
Apps are never finished and bug-free, so how did I decide when to stop fixing bugs and release the app? Every time I released a new beta, I got new ideas for the next one, and the next one, and so on. But one time I decided to stop with the new features and focus on fixing bugs, so I fixed them and released the MVP, knowing it wouldn't be too long until I push another update with what I had planned.
​
Here are some Screen Shots of the released version of Dey 1.0:
Dey 1.0
Dey 1.0
Dey 1.0
Dey 1.0
Dey 1.0
Dey 1.0