Nustime

Nustime

A time tool for better productivity

After nearly a month of weekend experiments, navigating through platforms like Xcode, Electron, and Tauri, Nustime was born—an app powered predominantly by ChatGPT, with over 95% of its code generated by AI. As someone with no programming experience, this journey was not just a product challenge but a remarkable exploration into what's possible with AI.

Though the interface is simple, Nustime serves as a testament to the immense potential of using ChatGPT to build functional applications. However, it's important to note that ChatGPT isn't yet a full substitute for traditional development. It falls short in areas like UI refinement, where manual intervention was required, and in packaging tasks such as creating a DMG file.

This exploration revealed both the limitations and the exciting possibilities of app development with ChatGPT. Below, I’ll share how someone with no programming background like me used ChatGPT to build a macOS app and some insights from the experience.

Banner

Understanding the Basics

For a beginner unfamiliar with programming, developing a macOS app can feel overwhelming. Before diving in, it’s important to understand the frameworks available for building macOS apps.

Before starting, I had only heard of Xcode and Electron. Xcode is Apple’s official development environment for native apps but comes with a steep learning curve. Electron, on the other hand, runs apps like a web browser using Chrome but can result in heavy app sizes. Later, I discovered Tauri, a smaller alternative, after realizing Electron's size was too large for my needs.

With ChatGPT as a guide, you can explore these options, gradually unlocking the mysteries of each framework.

Banner

Structuring the Product: Clarity is Key

Once you have a basic understanding, you can begin coding your first app with ChatGPT. However, as a product manager, I know a good app needs a clear structure and defined features—this is your product architecture.

For Nustime, the goal was simple: to calculate remaining work hours during the day or week, enhancing productivity. On top of that, I added features that focus on improving work concentration.

Breaking the app into smaller components was key. Nustime, for instance, can be broken down into features like:

  • Default working hours setup
  • Remaining time calculation
  • Notification alerts

This breakdown allowed me to provide clearer instructions to ChatGPT. For example, "remaining work hours" could be split into default time settings, real-time calculation, and output formatting. ChatGPT can then tackle each part, leading to the final implementation.

Design First, Then Code

One key takeaway from using ChatGPT was that while it excels at generating code, its understanding of user interfaces (UI) has limitations. I recommend sketching out the basic framework of your app before asking ChatGPT to generate the code.

While ChatGPT can handle basic layouts, it often requires tweaking when it comes to frontend details. If your app doesn’t involve a complex UI, like a simple menu-bar app, the process becomes much easier, allowing you to focus on functionality.

Banner

You’re Not Training a Pet, You’re Providing Direction

Using ChatGPT can sometimes feel like you’re trying to train it to understand what you want. However, I realized that ChatGPT is simply a tool, and I needed to provide clear and specific requirements to get the results I wanted.

For instance, when I wanted to change the menu bar icon in my Electron app, ChatGPT initially gave me the wrong information, claiming it wasn't possible. However, after checking the official Electron documentation, I found the solution through Tray Icon. This reminded me that I need to guide ChatGPT with accurate details, not just rely on its suggestions.

Logs: Your Lifeline for Debugging

One of the biggest challenges for a non-programmer is dealing with error logs. Fortunately, with ChatGPT, you can paste error logs and it will help you identify and resolve issues.

However, I also found that logging more information in the app’s terminal was critical. For example, after adding a feature to allow users to customize their work hours, I checked the terminal logs to ensure the correct data was being processed.

Don’t Lose Heart, Persistence Pays Off

It’s easy to get frustrated when results don’t meet expectations, especially as a beginner. But remember, ChatGPT can only handle limited code generation in one go, so patience and persistence are key. If you break down tasks into smaller steps, you will eventually get the results you're aiming for.

Banner

Building Nustime using ChatGPT has been an enlightening journey, proving that even without coding skills, you can bring an idea to life. Whether you're looking to develop a simple app or something more complex, the key is to start small, learn along the way, and persist through challenges.