Review: iPhone app development — Monthly Wallet

Taeeun Kim
8 min readAug 20, 2021

Hello World,

This semester, I decided to create an app as a side project in collaboration with myself, as a student developer, and another UI/UX designer student!
I have a lot of feelings about it, so I’m going to try to summarize it and post it in one post.
There are so many things to write about, but as the motto of the app is to pursue simplicity, I will write it down in a concise, yet full-bodied way!

Project ideation process:

When we first start thinking about our project, there were a lot of ideas and we thought about which idea we should take. And in the end we came to the conclusion that simple app should be the first, because it’s our first project together.

Idea:

These days, there are more and more subscription plans, and it is easy to think that it is not that much money on a monthly basis. And this app is an app that helps you manage those things well.

Preliminary research:

Naturally, there were already many household apps in the App Store, and there were also a lot of apps that manage subscription plans.
Also, in terms of functionality, there were many functions such as linking to a page to cancel, setting a subscription period, etc.

However! There are people who like it if there are many features, but in my case, if I have a lot to set up, I tend not to use the app because it is cumbersome, and I think there are quite a few people who will agree with this opinion.

For that reason, we aimed to make the functions as simple as possible, put only the necessary functions, and show them at a glance.
-> As a result, there are advantages such as shortening the development period and implementing a clean and simple UI, but there are also disadvantages and concerns that the app may look too empty.

Start development:

First, I planned the overall structure with Miro, a collaborative whiteboard tool, and organized everything from useful links to prototype images, UML diagrams, etc. on the whiteboard. (See photo below)
And additionally, using the To-Do List, we assigned and tracked each other’s tasks. (See photo below)

Miro Board
Kanban Board

In the first concept, functions such as a search function and the logo of a subscribed item (only representative items such as Netflix) appeared. However, as I added features that looked good, the app seemed to be getting more complicated, so I started developing the app by focusing on a simple concept once again through a meeting with Designer.

Development process:

To develop this iPhone app, I first thought about whether to use UIKit or SwiftUI, and decided to use SwiftUI because I wanted to experience the unique advantages of SwiftUI.
The architectural pattern used the MVVM (Model-View-ViewModel) pattern that best matches SwiftUI perfect, and I wanted to try out various new functions, so I chose the SwiftUI lifecycle instead of the UIKit Life Cycle (AppDelegate and SceneDelegate).

As a result, there was a drawback that only iPhones with iOS 14 or higher could be used, but as shown in the statistics below, a lot of users have already moved to iOS 14, so I decided it was worthwhile.

https://developer.apple.com/support/app-store/
  • In storing the subscription list, Core Data, which is a native database, was used, but a systemic error was found in using the PageTabView together, and I tried with Firebase and Realm, but the same problem occurred. However the problem has been resolved now in Xcode13 & iOS15 or In another user’s clever way(Stackoverflow 1, Stackoverflow 2), but there was no other way at the time, so instead of using the default PageTabView, I made a custom PageTabView and applied it. So, in the end, I continued to use Core Data.
  • In the configuration of the custom PageTabView, if the user drags left or right for more than a certain amount, the offset of each page becomes -1/+1, and the width of the subview of the page is multiplied by that amount, so that it becomes longer horizontally.
    That is, it is a long horizontal scroll view made horizontally.
    However, pages shouldn’t stop in the middle and I had some issues with odd and even pages, but I ended up with a custom PageTabView that works perfectly.
  • Swift UI’s layout system is powerful and simple, but at the same time very tricky. I had a lot of trouble because of this, but I learned a lot by watching various related articles and videos. Recently, a video that helps a lot in understanding Swift UI’s layout system has been uploaded and will be shared (Stewart Lynch: Getting a Handle on the SwiftUI Layout System)
  • After the development had progressed to some extent, I started optimizing the existing code. For example, I looked at the code of people with a lot of experience in this field on GitHub, YouTube, or Udemy, compared it with my code, and finally modified it myself.
  • After finishing the functional parts, I received a design from a designer through a tool called Zeppelin, and completed the layout and design. And I started to take care of small details such as animations to improve user experience, color changing when a button is touched, and a haptip function, and we are getting closer to the end of development. Also with localization work for English, German and Korean.
Zeplin

In the end, that’s how we complete everything and go to the App Store for review!

App Store application process:

First, in the App Store, the descriptions and photos of our app were made according to the region/language and the type of iPhone (with or without a notch). And I had to write a privacy policy, so I made a website that automatically created it and edited some parts and uploaded it. In the case of our app, we don’t collect any user data, so it was simple!

And I attached a simple video of using the app, fill in small information here and there, archive the app in Xcode, upload it to App Store Connect, and submitted a review request!!

So, after posting the first application review request, I expected it to go straight to the App Store without any major problems, but I got a rejection email and my heart sank.
I thought, “Was the app rejected because it was too simple?”, “Is there a bug I haven’t caught?”, I opened the e-mail, and luckily, the reason for rejection was “Safety Kids Category”, because it was checked for children.
Basically, it is in the financial app category, and I thought it was an app that even children could use, so I checked the box for children, and the meaning of this for children was the same as for YouTube Kids!

So, after unchecking that part, we submitted a review request again..!

And after a day, I received an email saying it was uploaded to the App Store and we celebrated together :D

After submitting to the App Store:

I got feedback from my friends first.
Since the app is so simple, I first applied without an onboarding page (the description page that appears when the app starts), but this was the part I missed. I’ve been developing this app, so of course all the features will be easy, but there’s definitely a tricky part for first-time users, so I made the onboarding page quickly.

And when using Korean currency, I found a bug where if you input 15,000 won, it will be saved as 150 won.
In the case of dollars or euros, there is a unit called cents under 1 euro, so it shows up to two decimal places, such as 150,50 (=150 euros and 50 cents). However, in the case of Korean currency, there is no decimal place below 1/10 won, so it is displayed directly from 0 without a decimal place. It was a bug caused by missing the conditional statement in that part.

So I added an onboarding page and fixed the bugs mentioned above and uploaded a new updated version, and that was last night!

Future Plans:

I think the functions for the current app are sufficient, so I’m currently planning to update the onboarding pages and fix the parts that need to be fixed by receiving user feedback.
There is also a plan to add a feature that is necessary and good if it comes to mind.

How to use the app:

Although we started with a subscription plan as a target, it can make the overall household account “simple” by recording monthly payments, such as rent and utility bills, and basically divide it into separate pages, so users can create whatever they want. .
For example, a cost page about a house, a page about subscription plans
And the pages can be moved through the left and right drag gestures.

Additionally, if you touch the page title at the top, a teleport view will appear that allows you to go to a specific page at once!

And that’s it :D
Just the title of the page, the title and price of the item, you have already mastered the app with this simple process!

I like this simplicity, but I’m a little worried and excited about how it will be for users.

The name of the app is “Monthly Wallet”.

I would like to write more about it laterin a development related article!It is especially recommended for those who want to manage their monthly money in a simple way, and I will finish this article!

Thanks for reading!

--

--