Inspiration

I like the to-do list app. I'm currently using the Things 3 app to manage my tasks; both personal and work. While it is nice to have everything in one app, having my grocery list mixed with work-related tasks makes things a bit of a mess. I also want to share the list with my wife, and Things 3 cannot do that.

I browsed through the App Store to see what's available out there before I committed to building it. I found out that many of the top 10 looked a bit outdated and full of unnecessary features for me. I wanted something simple that I would use myself, but it should have extra functionalities for managing a grocery list that a general to-do list app lacks.

And then Ship-A-Ton happened! And I'm a developer. So why not make another one?

What it does

It is a to-do list app made specifically for managing grocery lists. It allows users to:

  • Create to-buy items (Obviously!)
  • Group items into places to buy
  • Separate everything by lists
  • Share each list with different people (future update)
  • Check off items from Apple Watch (future update)
  • ...while keeping things simple and clutter-free

How I built it

  1. I sketched things out on paper. I followed what I had in mind and just sketched the flow. I tried to avoid checking for inspiration as the first step. I didn't want my ideas influenced by all sorts of other stuff.
  2. After the sketch, I went to Dribbble and Pinterest for inspiration.
  3. Then I started coding. The fun step.
  4. Throughout the development process, I occasionally shared updates on Twitter (X) to see if anyone had any feedback.

Challenges I ran into

  1. Design: Design is not my strong suit. I want things to look nice but as a developer, it's hard to come up with a cool design by myself. I have to balance getting inspiration from existing designs without simply copying everything.
  2. Customization: Working with a custom design is always challenging. There are many things I get for free if I stick to the standard UI. Customizing the UI means I have to build some of those functionalities myself too.
  3. CoreData and SwiftUI Integration: Surprisingly, they don't fit that well together. While CoreData is powerful, it feels a bit clunky to make it work with SwiftUI. SwiftData is not an option because I need to be able to share the data between users.
  4. Building in Public: I don't know what to share. I can't justify why what I'm sharing is interesting enough for people to read. And during the busy time, I just don't want to share anything at all and just focus on coding. I haven't found the right balance yet.

Accomplishments that I'm proud of

  1. This might not actually fit in here at all, but I'm going to mention it anyway. This is my second app since I started to become an indie iOS developer. To think that I didn't have any apps at all at the beginning of the year to now having 2 apps in the store is just amazing.
  2. I managed to finish this app from scratch in just about a month's time. Of course, I needed to scope down so many features, but a month to get everything from picking an idea to getting it on the store is a lot of work. I almost couldn't believe that I could pull this off. Do you know that my first app took me about 6 months?

What I learned

  1. Building a good app takes time. Building an MVP doesn't mean building a good app. An MVP is meant to be "minimal". It's still difficult to accept that the app I've just released is not as good as I want it to be, but that's the point of building an MVP.
  2. Having a hard deadline is great. I can always set my own deadline, and I can always extend it. I can't extend the deadline of Ship-a-ton. It helps me justify cutting out many features that I want to include on the day-one release.
  3. Sharing progress on social media is quite rewarding. I got to talk to other people who are going through the same journey as I am. Everyone was trying to release their app before the same deadline, and everyone was struggling with the same issue. I still don't know why they read what I wrote, but probably it's the same reason that I read theirs.

What's next

I consider what I'm having as an MVP of the MVP. So what's next is to get it into the MVP state.

  1. Sharing: It needs to support sharing to allow family members to use together.
  2. Apple Watch: Nobody wants to bring out their phone to check off items while being at the store.
  3. Latest iOS features: Widget, ControlWidget, AppIntent, etc...
  4. Smart suggestion: Suggest items that are purchased frequently
  5. Bug fixes and stability improvements. 🤣

Built With

Share this project:

Updates