From Zero to App Store.

Leveraging AI to Build an iOS App

Instead of writing this article in the traditional sense, I enlisted ChatGPT (o1-preview) to act as a tech journalist to interview me. We conducted a one-on-one interview where it asked questions based on my responses. At the end of the “interview,” I prompted it to create an article based on our conversation.

Introduction

In an era where technology evolves at lightning speed, the lines between product management, design, and development are increasingly blurred.

Cong, a seasoned product leader with over 16 years of experience in Product Management and UX Design across APAC, decided to take this convergence to heart. Currently based in Singapore, Cong has a unique ability to bridge the gap between disciplines and teams.

With a love for Japanese curry and pour-over coffee, he embarked on a journey to build an iOS app from scratch—with zero prior coding experience.

“I’ve been around, and I’m well-rounded,” Cong says. Having worked across startups, scale-ups, and enterprises, he has navigated the unique cultural and process challenges of each organisational size.

Armed with determination and the assistance of Large Language Models (LLMs) like ChatGPT and Claude, Cong transformed an idea into a tangible product available on the App Store in just six weeks.

The Motivation: Deepening Empathy Through Hands-On Development

“I always wanted to learn how to build an app,” Cong shares. Despite his extensive experience in designing websites and apps and leading product teams, he hadn’t tackled the full end-to-end process of app development on his own.

“I wanted to gain a deeper, empathetic understanding of the end-to-end software development process,” he explains. By immersing himself in the actual coding and development, Cong aimed to bridge any gaps in his knowledge and enhance his ability to communicate and collaborate with development teams.

To maximize the learning experience, he chose to create a logging app—a tool that allows users to log almost anything, visualize data, and spot trends. “I wanted something that could teach me lots of different things. Managing data flows, data models, and how to aggregate data seemed like an interesting start,” he notes.

No-Code vs AI

FlutterFlow and Its Limitations

Before diving into coding, Cong explored the no-code route using FlutterFlow. Having previously used WebFlow extensively for web design, he was optimistic about the possibilities.

FlutterFlow allowed him to build a simple logging app using Firebase for the backend, complete with logic to control categories. However, as he attempted to add more complex features, limitations became apparent. “I was facing more issues getting complex features like data visualisation to work,” he recalls. Online forums and Reddit threads echoed his frustrations, particularly when it came time to prepare the app for launch.

“FlutterFlow seemed great at building template apps, but moving outside of that sandbox required custom code, which was problematic.”Realising that no-code solutions weren’t meeting his needs, he decided to pivot.

“Giving up on no-code made me feel like I had an ocean to cross…on a rowboat,” Cong admits. But there was only one way forward: coding the app himself to truly understand the intricacies of software development.

Embracing Code: Diving into Swift and Xcode

To kickstart his coding journey, Cong watched a three-hour YouTube tutorial from iOS Academy on building a to-do list app with Xcode, and Firebase.

“The guy just blazed through the material,” he recalls. “I frantically tried to copy what he was writing without much understanding.”

Despite the confusion, typing out the code and seeing a functional app was incredibly encouraging. “It was the push I needed to go further,” he says. This hands-on experience laid the foundation for his coding journey and deepened his appreciation for the development process.

Leveraging LLMs: ChatGPT and Claude as Coding Assistants

At first, Cong used the ChatGPT desktop app to write pseudocode and request actual code in return. “I would describe what I wanted to do, and GPT would produce the code, for most things the code worked.” he explains.

A friend then introduced him to Cursor AI, an integrated development environment (IDE) with LLMs like Claude built-in. “That was amazing because using ChatGPT on its own, I was limited to how many lines of code I could send, whereas with Cursor, it could analyze the whole codebase,” he says.

Switching between ChatGPT and Claude proved beneficial. “Sometimes one would give an answer the other couldn’t,” he notes. The LLMs became invaluable tools for generating code snippets, solving problems, and providing explanations, all of which contributed to his growing understanding of development.

Overcoming Challenges: Hallucinations and Version Control

One of the significant hurdles was dealing with the “hallucinations” that LLMs can produce—incorrect or nonsensical code. “At first, it was quite difficult as I didn’t know much code myself,” Cong admits.

For instance, when transitioning from Firebase to Core Data for offline functionality, the LLMs provided incorrect guidance. “The code didn’t work, and I couldn’t get it to work.”

To overcome this, he turned to tutorials to gain a high-level understanding of Core Data. “That gave me enough information to ask the question the right way, which then GPT gave me the correct answers,” he explains.

This experience underscored the importance of having foundational knowledge to effectively use LLMs and spot inaccuracies.

Learning GitHub and version control was another crucial step. Initially daunting, Cong overcame his fears by watching anther tutorial to grasp the basics of branches, commits, and repositories. “It was a lifesaver. Without it, I would’ve spent countless hours making multiple versions of Swift files myself to make backups,” he says.

Implementing a proper workflow ensured that his code was safely stored and manageable.

Product & Design

Influence of Product Management and Design Background

Cong’s background in product management and design significantly influenced his app development process. “I ended up creating my own Kanban board to track and prioritise tasks, moving some features into post-launch updates and tracking bugs,” he shares.

For design, the app takes on a very retro early ’90s UI, modeled after one of his favorite file management programs of the time, XTree Gold. “I decided on this retro UI because I felt that current design trends felt very derivative—the same old minimalist ‘clean’ look. Given that this was a hobby project, I thought making this UI would be a lot more fun,” he explains.

This choice unfortunately led to more work, as he found he couldn’t use many default iOS components in the way he needed. “So I had to recreate all the UI components myself,” Cong notes.

His background in UX helped him test the app relentlessly, always considering how a real user would perceive it. “Finding a good balance between staying true to the ‘90s aesthetic while ensuring modern usability standards was quite challenging, and I think there are still some things I’d like to try to make the app easier to use.”

Screenshots from the app.

Data visualisation.
Fasting timer with Metabolic phases.
A folder tree view like XTree Gold.

Navigating Swift and Xcode Challenges

Data modeling in Swift and Xcode was particularly challenging. “Understanding how Swift and iOS transfer data from one view to the next was difficult to grasp,” Cong admits. Gaining a better understanding of data modeling helped him immensely in bug fixing, allowing him to identify where issues were likely originating instead of waiting for GPT or Claude to highlight them.

“The most rewarding part was building the confidence to write code on my own without using LLMs. I could put together layouts and create my own reusable components by myself,” he says.

Balancing Personal and Professional Responsibilities

Balancing learning to code with professional and personal responsibilities was no small feat. “I did my coding at night after the kids were asleep. Each day, I could spend anywhere between 2 to 4 hours on my app. That was the only way for me,” Cong explains.

Utilising Online Communities

While LLMs were invaluable, Cong also leveraged online communities. “I looked up questions on Stack Overflow and Reddit. Although I didn’t post anything myself, I found that many other people experienced similar issues in their own apps, so I could leverage some of the proposed solutions for my app,” he says.

This was especially helpful when GPT or Claude were hallucinating and couldn’t provide the correct answers.

Testing and Debugging

Cong approached testing and debugging by evaluating each function as it was being built. “Using the app every day myself, I would discover a bug here and there,” he notes. One thing he acknowledges is that setting up proper processes like unit testing is something he plans to implement in his next project.

Accelerated Learning with AI.

The Impact of AI on the Learning Curve

The integration of LLMs into his learning process dramatically accelerated his progress. “I think it sped up my learning curve. Instead of a steady rise over time, it was more like a hockey stick—straight up almost,” he reflects.

In just six weeks, he built an app with advanced functions for a beginner, a feat he estimates would have taken six months without LLMs.He became proficient enough to write his own code for programmatic UI without needing GPT or references. “Of course, there is a lot I don’t know, but the speed of learning was significantly increased,” he says.

The Future of No-Code vs. Coding with AI

When reflecting on the future of no-code platforms, Cong believes they will continue to improve but may have inherent limitations. “No-code platforms are definitely going to catch up—they’re already integrating LLMs into their products.

But maybe there is a limit to how customized you can be with no-code,” he speculates. “If there are still limitations on how much you can customize specific to your app’s needs, then learning to code with LLMs would be essential for complex apps.”

Advice for Aspiring Solo Developers

For others looking to follow a similar path, Cong offers several pieces of advice:

  1. Acquire Domain Knowledge: “You cannot rely on LLMs 100%. You need some level of domain knowledge. Even a very high-level understanding helps,” he emphasizes. Watching tutorials can provide the foundational knowledge necessary to ask the right questions and spot hallucinations.

  2. Use Version Control: “Learn GitHub and have a proper workflow setup,” he advises. Version control not only safeguards your code but also streamlines the development process.

  3. Type Out Code Manually: “Don’t just copy and paste code that is produced by LLMs. Type it out,” he suggests. Manually typing code forces you to read it line by line, aiding comprehension and helping to identify potential issues.

From zero coding knowledge to launching an app in the App Store, Cong’s journey is a testament to the power of determination and the potential of LLMs as learning tools. His experience highlights that while LLMs can significantly accelerate learning and development, they are most effective when combined with foundational knowledge and hands-on practice.

For those contemplating a similar path, his message is clear: “If you’ve been thinking about learning app development or something like Python, now is the perfect time to do it. LLMs are only going to get better and better.”

“As a product manager, gaining additional skills like programming helps you communicate better with your teams. Understanding the complexities they face makes you a better collaborator, and communication is a huge part of a product manager’s job,” Cong adds.

Feel free to reach out if you have any questions or if you’re embarking on a similar journey. Let’s learn and grow together.

Download LogTree from the App Store

Check out the LogTree site for more information about the app, or just download it straight from the App Store today!

Download