My First App - Grow (Journey from Scratch!)

Update 08/22/24

Dear community,

I’ve got a road map now: it follows a set of rough deadlines that I have for my project from this point forward as I count down to October 1, 2024 (the launch day for my app)!

  • Week of August 26: Work on the LYFA CWC+ module challenges and certificates, finishing through the Databases course
  • Week of September 2: Power through the App Store course and get a working model of my app complete (though very much in a beta stage)
  • Week of September 9: My CWC+ subscription ends and I’m flying on my own! I’ll go back over the app creation process, refining and testing my model, bringing it all the way to the design stage
  • Week of September 16: This week I will design my app including all the screens, buttons, and other UI
  • Week of September 23: Now it is time for me to apply to the Apple Developer Program! From now until October 1, I will be running my app on a device and using it frequently to test for any issues or missing features
  • LAUNCH: October 1, 2024: My plan at this moment is to first release the app on TestFlight, not the App Store. This is because I would like to receive feedback from users who feel like their input matters (especially since I am so new to all of this)

Lastly, if y’all have any tips for me, I would really appreciate it! I’m a little nervous about launching my first app, but once it happens, I’m sure everything will only get easier from there! :joy: That is, unless I have to fix thousands of bugs… :lady_beetle:

Anyways, take care! My next update may be sooner than in a week depending on how things are going

-Michael :wink:

1 Like

Update 08/29/2024

Good evening! I’ve been working hard on the LYFA module challenges. I had to resubmit my Foundations course challenge because I sent a file that was only compatible with Xcode 16.1 beta :smirk:. My Networking course challenge is underway (in fact, I’m almost finished). It took a LOT of work to get the API setup (I used NASA’s Mars Photos API), but I think I have everything mostly under control. Really, the only two things I have left are the photo detail view, and the search parameters/filters.

Anyways, I started an application for MIT today! Wish me luck :smiley:

Take care,
-Michael :slight_smile:

1 Like

Focus Survey!

I just created a survey to gather feedback about focus habits. It’s totally anonymous and will really help me narrow down my feature set.

By the way, since I’m here, I’ll just add that I have submitted my iOS Networking App Challenge for review. Hopefully everything comes through, but I will be working on the Databases assignment soon as well.

-Michael :slight_smile:

Update 09/06/2024

I just completed and submitted the Databases project! I’m a little behind on my schedule, but I have high hopes given how much work I have put into my app already. I watched the Analytics video in the App Store course and was able to get the analytics working for my Project Tracker app. I’m not sure if I will use it for the Grow app though.

I attached some pictures of the ToDo app I built for the Databases course challenge! It’s running natively on my Mac. There is support for dark mode based on using the @Environment(\.colorScheme) var scheme property.

Have a great day.

-Michael :slight_smile:



1 Like

Update 09/13/24

My app is slowly but surely creeping into the design stage.

The ToDo app I created for the Databases challenge has really inspired me and I am thinking of integrating the task functionality with my app; users can then turn on Focus Mode and select the task they would like to focus on while the other tasks gracefully disappear for the time being. (I’m not yet sure whether I want to integrate this task functionality, but we’ll see.) While in Focus Mode, a task title and subtitle/specifics as well as a timer and Help button will be visible. I’ll probably allow the user to block everything except the website/app they would like to focus on.

Anyways, details aside, this is what I plan to include in my app:

  • Focus on anything one thing at a time
  • Show countdown/up for session with ability to start break
  • Break time suggestions (take a walk, drink water, etc)
  • View focus duration/sessions history
  • Receive awards for staying off phone
  • Modify app features through in-app Settings
  • Share progress with friend
  • Possibly pull events from Calendar/Reminders for in-app display

This is not a final list, but it’s pretty close. I think the ability to track progress through a growing lotus or other means is something I may have to realistically implement in future versions of the app at this point. I shall have to wait and see.

There are some rather rough mockups of my app in the attached screenshots as well as some behind-the-scenes work. SURPRISE! I am renaming my app to Shadow Task! The new app icon represents a target (indicating a single point of focus) and is compatible with iOS 18’s ability to display app icons in dark, light, and tinted modes. The app itself will probably have a gradient fill background, but I haven’t reached the design stage yet so that is tbd.

Looking back, this whole process has taken a very l o n g time! This journal was started back in March (granted Summer happened in-between). :joy: Oh well. I have learned a whole lot.

Both my Foundations and Networking challenges have been Approved and I should be able to receive certificates from both through CWC.

Have a nice weekend!

-Michael :slight_smile:





BREAKING NEWS!!

So, I just had a huge idea inspiration for my app!! :joy: Building on the grounds of focus, productivity, and wellbeing, I created a mockup of how the app might work using Figma! It has three huge buttons on the Home screen that are resources for Focus, Activity (if you’re bored and don’t know what to do besides scroll through tic tok), and Motivation; these link to screens relevant to each task. :ballot_box_with_check:

The Focus screen allows the user to create a task (such as “Landscaping”) with a detailed description of what specifically they will be doing (such as “Plant grass seed in the areas underneath our big tree in front”), and then they can set a timer to go along with it if needed. The screen will flow into an extremely simple layout to help the user focus (the app can be locked if necessary). I may decide to implement Live Activities now or in the future so the user can keep track of the time on their Apple Watch or iPhone without heading to the app. The focus sessions will be logged once completed!

The Activity screen presents the user with a list of different non-electronic ways to spend one’s time (such as going on a hike or sketching a drawing). The user selects the “+” button to choose one. This action hides all the rest of the activities and I’ll probably implement the same simple UI that appeared in the Focus view where the title is prominently placed and all other app features are hidden. This view can be closed at any time without losing work, but it will be paused when this is done.

The Motivation screen allows the user to create three different rewards per day (or something like that) from which one will be randomly selected and presented to the user at a certain time of day or after the user logs that the day’s work has been completed. Furthermore, there will be quick suggestions for the user when they are stuck on a task (such as switching to something else or moving to a different environment.

Whew! Sorry for such long descriptions! :smile: That’s all for now! You can check out the screenshots. Here is the Figma prototype link: https://www.figma.com/proto/FkzmUn1ft8p7wHvYCMAU7H/App-Interface-Design?page-id=158%3A403&node-id=276-169&node-type=frame&viewport=-148%2C1401%2C0.33&t=XyTyzUZ2Vz6kYclK-1&scaling=scale-down&content-scaling=fixed&starting-point-node-id=276%3A169

-Michael :wink:

Update 09/20/2024

Okay! Back to business. This week I forced myself to make some decisions after stalling on the design stage. I looked over my work the past several months, noticing how my app has evolved from a very broad “alternative activities” app to a focus and productivity app. I’m not really sure how I got here, but what I do know is that an app needs to serve many different people.

This final design for both the Home and Progress screens is partly inspired by my talks with friends and family who gave me input on my app ideas. I have created so many sketches over the course of several months to come to this point. The interesting thing that you may notice is that there are design elements spanning from my very first wireframes up until very recent iterations. I have had to tell myself that, according to Jony Ive, “true simplicity is derived from so much more than just the absence of clutter and ornamentation; it’s about bringing order to complexity.” So, I have tried to apply all of the concepts in very simple and meaningful ways.

In terms of functionality, the user has the ability to immediately begin a Pomodoro timer from the Home Screen. Additionally, they can jump into Settings (the gear icon in the upper right) and change the default timer to display, for example, an infinite timer or a 43 minute timer with 2 minute breaks. The user can add a “Task group” which is simply a timer preset (for example, a Math group might arrange timers in 30 minute blocks with 3 minute breaks, or a Great Books group would allow for infinite timing with breaks at desired intervals). I am thinking of implementing, either earlier or later, the ability to calculate focus time based on marking one point in time at the beginning of the task and then marking another point in time at the end of a task or before a break; the difference can be calculated, offering a more energy efficient method to traditional timers.

That’s it for now! Before I leave, I want to share an amazing design video from several WWDCs ago. It really helped me: The Qualities of Great Design - WWDC18 - Videos - Apple Developer

Enjoy the weekend!

-Michael :slight_smile:

P.S. My iPhone 16 Plus arrived today!!! This will be my special tool for testing apps before distributing them to the App Store!! I am sooooo excited! :smile:

1 Like

Update 09/27/2024

My app is almost ready for release! I did a whole lot of work this week ironing out the fine details of the UI/UX and a good part of it has already been implemented in Xcode. Finishing the app by October 1, 2024 seems very likely; having it accepted and ready to publish on the App Store by said date, not so much.

I included a lot more information in the screenshots, so check those out if you want a more thorough understanding. There are both Figma and Xcode snippets. I found the custom tab bar hard to implement, so it may have to come as part of a future software update.

Thank you so much for following me along my journey! It will be exciting to see where my app takes me.

-Michael :slight_smile:

1 Like

Update 10/11/2024

I’m back. It has been a rather depressing past few weeks.

I hit my first major snag when I realized that timer state has to be saved when the app is closed and then updated when the app is opened in iOS since the system shuts down any timers. I was really overthinking things, I think, because I spent several all-nighters and many conversations with ChatGPT (along with web searches) to figure this out. I have it pretty much figured out, now.

Secondly, the thing is that most users would most likely be doing things in other apps while the timer is running, so they need a way to know when the timer is up. Just this evening I came across my old timer app that I created where I messed around with Dynamic Island and Live Activities a little bit. What amazed me was that there seemed to be no problem whatsoever with timekeeping in this app! I’m not sure how I missed this, but once again I spent way too much time researching and testing.

With all of this out of the way, I can happily say that my app is pretty much finished. All of the screens in my app are complete design-wise and almost all of them functionality-wise. The Progress view tracks the time spent on completed tasks (if you complete a task twice, the same entry is updated while new tasks are given their own progress bar). Now I need to some serious testing and debugging along with performance improvements and the like.

So, that has been my crazy past few weeks! I certainly know my weaknesses now, so perhaps I will be a little bit more prudent next time and try to break things down into simple steps. As for the revised launch date, I really don’t know. There are so many unexpected surprises in my app that it’s hard to know when it will be safe to launch on the App Store. :slight_smile:

Enjoy the screenshots! I do have an official macOS version of the app running on my Mac and strangely enough this probably just took about an hour to get working.

-Michael :wink:

2 Likes

Keep it up! Great to see your progress and that you continued to research/learn/code although you ran into night-long issues :+1:

Thank you! :sweat_smile:

1 Like

Update 10/18/2024

My app is finished!! I plan to submit it for review on Saturday. Yes, it has been almost seven months since I first started my journey, but I have learned so, so much invaluable information that will guide me for years to come. Let me start with a little reflection on my journey, though.

In March I stated that my plan was to create an app which would intelligently suggest other ways to spend one’s time doing a task on a device (for example, writing thoughts down on paper instead of on a digital notebook). I really did not want to create a “restriction” app such as those which block other apps. It had to be friendly and inviting.

In order to master the app creation process, I decided to take some time to look into design. Specifically, I read part of a book written by MIT professor Daniel Jackson: The Essence of Software. I also watched (perhaps) too many clips of Jony Ive speaking about the design of new products and software. Then I watched an hour-long Apple session on design linked here: The Qualities of Great Design - WWDC18 - Videos - Apple Developer. I came down to the conclusion that concentration, not reduction is the path to great design; and simplicity is essential. Great design is hard.

Finally I went through a rather early design phase for my app (called Grow back then). I really wanted to create a flower of some sort that grew as the user completed their tasks or completed certain goals. After trying to implement something remotely close to a Lotus using SwiftUI Paths (so I could have perfect animations between states), I decided that this wasn’t practical yet.

Now, I encountered my first hurdles in May when I began to realize I was getting too far ahead of myself; I hadn’t even worked out the main features of my app and yet I was already designing it! Besides all this, I sort of lost motivation. Not only was summer in full swing, but my app idea was seriously unstable. Without a good foundation for what I wanted to create, I was lost. Within all of this, I did think about much deeper questions such as: How can I create an app that is not a distraction? And: How can technology be used as a tool and not a time-waster?

Ok, ok, Michael. So I guess I just really want to create an app that helps humanity in general? That was where I was going in mid-May. I read a LOT of App Store reviews. It was fun and informative (I think I included a few screenshots with highlights). I really looked into which concepts were infinitely helpful and indispensable to users, and some that were “requested.” I actually have included a few of these “requested” features in my final build. My perspective here was that “Form Follows Function” as I learned over and over in my architecture classes. I did manage to make a few UI elements!

Already by June, I had a plan. It was a pretty comprehensive plan, but quite exhaustive, so I lost motivation. I researched a lot of competitors and that got me into the mindset, I think, that I have to match up to their strengths. Also during this month I watch WWDC24. It was very cool. What amazed (and still amazes) me is how Apple had a very organized plan for how developers can open up their apps to AI: just add App Intents and support for SiriKit and AI will decide, based on the options your app exposes, which action to carry out.

In June I just created a timer app to experiment. It was super cool to actually do something rather than just research something. This is actually basically the same timer method that I am using in my final build of my app! It worked so well.

After the summer, I hadn’t made much more progress, but I had done some more research. I found out how it is important for people to focus on one thing at a time (this was my inspiration for naming my app Shadow Task). I came up with a list of different concepts that work well to keep users focused.

On August 22, 2024, I created a road map so that I could set a hard launch date. Of course, I am writing this after the anticipated October 1 launch date, but it was necessary looking back on it. Needless to say, his road map really did motivate me to work hard and I got a lot done. I did think of releasing my app to TestFlight first, but at this point that probably won’t happen.

During the next week I created apps for the Foundations, Networking, and Databases courses. Foundations: Apple Devices app to display several Apple devices with information. Networking: an app to view photos from Mars (taken by rovers). This Networking app inspired some of my final design decisions for Shadow Task. Databases: I created a ToDo app (interesting, right?). This ToDo app is probably part of the reason why I allow users to create several different tasks in my Shadow Task app.

My app icon was created in mid-September. This was the start of my Shadow Task design language. But just a day later, I came out with a breakthrough idea which never took off; it was one of those very flashy brain explosion moments, not really something realistic. Anyways, I did come up with a pretty good focused timer layout which I am now using. This was also the first introduction of my ProgressView() I think.

I came up with a “final” design for Shadow Task about a month ago. This actually introduced a lot of design elements which I have since incorporated such as the task cards and the progress for Day, Week, Month, and Year.

I began building in Xcode almost immediately. There were so many UI elements to figure out, but because I took the time to create concrete designs in a Figma file, I didn’t have to create ideas on the fly.

And yes, I lost motivation again. This time I had actually created my app (basically), but the difficulty I had encountered was running the timer in iOS where an app is terminated when it goes into the background. This cost me many nights of lost sleep when (hint, hint) the answer was using the timer I created several months ago which already calculates based on a saved date and is very accurate.

Today

With all this history and effort and experience under my belt, I have combined it all into a single app: Shadow Task. This is the peak of the mountain, and yet there is still a ways to climb. I’ll include a list of features and a list of different edge-cases I am dealing with. Here are the features:

  • Create timed tasks with timer durations for breaks and sessions which can be repeated up to six times in a single focus session
  • Time your tasks using the Pomodoro method by selecting a timed task
  • Display time spent actively working (the sessions) on a graph with labels for each task
  • Display historical working values for Day, Week, Month, and Year

That’s basically it! Next, here are just some of the edge-cases I took care of:

  • Save timer duration when user closes app and load it when app appears again without affecting the count-down
  • Allow users to pause app and leave without timer being affected
  • Users can reset timer duration when it is running or paused and it will be set to the initialTimerDuration saved at start
  • Cancel timer when user exits timed task and save data to Chart when the timeUp view is shown and the user presses on the “flag” button
  • Set a line limit for all timer titles
  • Set a max and min duration for timer values
  • Handle multiple fast button presses in a row
  • Only schedule notifications if timer is running and adjust when notifications are sent based on the time left

I have an official website for my app here! Almost all of the descriptions were generated by ChatGPT and the screenshots are from my real app: https://shadow-task-app.carrd.co

I signed up for the Apple Developer program recently as well.

Thank you all sooooo much for supporting me on this journey! And a huge thanks to Chris Ching and the Chris (the moderator) for all the help they have provided to me.

Have a wonderful night (yes, 12:21 AM for me)!

All the best,
-Michael :wink:







1 Like

Update 10/19/2024

I just submitted my app for review!! I am supporting the following platforms natively: iOS 17.6 or later, iPadOS 17.6 or later, and macOS 14.6 or later.

I’m braced for a rejection (fingers crossed), but it will be exciting no matter what.

-Michael :smile:

P.S. Yes, I stayed up literally all night. It is now about 8:00 AM where I live, but who cares. It was worth it! :laughing:


1 Like

macOS Shadow Task app accepted and pending release!!!

Don’t worry, I just woke up at midnight after going to sleep around 3:30 PM… (I’ll probably go back to sleep soon). It was absolutely insane how fast the process was from app submission to acceptance.

I don’t think I’ll need to share a link because I searched for Shadow Task on the App Store and nothing showed up. :slight_smile: So once my app is released it will probably be pretty easy to find.

Have a (hopefully) restful Sunday!

-Michael :wink:

1 Like

Just in case, here’s the App Store link! It’s completely free. I may add a few payed features in the future, but the experience alone was worth a million dollars: https://apps.apple.com/us/app/shadow-task-focus-track/id6737145799?mt=12

iOS and iPadOS Shadow Task Apps available for download!!

Just this past evening my apps for iOS and iPadOS platforms were approved on the App Store! I am so grateful for having such a smooth and efficient process with no rejections.

-Michael :smiley:

3 Likes

Update 11/08/2024

Hello y’all! I just thought that I would share some updates on my app. So far I traded a total of 18 App Units (I’m still a little confused by the term, but I’ll take it). What really surprised me is the number of Desktop downloads (up at 72% of total)! I thought for sure that the iOS version would gain more traction, but it is neat to see a slightly different turnout. My app has been downloaded in the US, Brazil, Saudi Arabia, Pakistan, and the Philippines. I’ll share some screenshots of the App Store app analytics.

It has been a bit of a struggle marketing the app. I have my own website and I have also just shared my app with relatives and friends, but I feel like I need to share a stronger and clearer message about what my app does. It is easy to make assumptions about what people already know (such as the pomodoro technique, or creating tasks), so I want to make the onboarding experience as instructive as possible as well as the App Store listing metadata. Part of my issue is that I collect no data whatsoever; I am happy to deliver this level of privacy, but it comes at the cost of not knowing how the consumers are using my app.

I do plan to release a relatively big update soon with a special new “stopwatch” feature so that users can rely on an infinite timer to track their work. I have already added some commented-out code to support this, so it should be pretty easy. I may include an option to hide the timer so that it doesn’t consume too much power (that way I can simply use time stamps to track when the timer starts and when it finishes, completing the calculation in real time when the user starts a break). Overall, I haven’t received any direct feedback from users, so I am not quite sure which features would be most desired.

Enjoy the beautiful fall weather!

-Michael :slight_smile:

P.S. Note how many downloads were marked as “Unavailable”! I have thought of increasing the backwards compatibility of my app, but at the same time it would require me to learn Core Data (my app works with iOS/iPadOS 17.6+ and macOS Sonoma+) when I could be investing my time in creating widgets or better support for Apple Intelligence. I don’t know; it could be worth it.