Hello again,

I want to share my experience with Cursor AI and Claude Sonnet 4 while vibe coding a mobile app for my personal needs.

What was my motivation? Link to heading

I had a pain point and wanted to solve it with a simple mobile app. I live in Poland but create UGC-AI marketing content for the USA to promote my mobile app. From time to time, I open my TikTok accounts to check how things are going and answer comments if there are any. I need to do this under a VPN; otherwise, my audience will be switched to Polish, as TikTok has regional targeting by default. To change it, you have to log in from a new location and wait 30 days. Or if the account was already created under VPN I have to log in all the time under a VPN into it or mobile proxy and have a clean IP with a low spam risk rating. VPNs are used by many people worldwide to hide their identities and sometimes for spam or other bad activities, which can get the shared IP blacklisted or reported. There are tools to verify if an IP has a low risk, like Scamalytics. I used their API and wrote a script to verify that my current VPN IP is legit, but it’s not convenient to get my IP and then type it on my laptop to check. I wanted a quick and cheap way to see my stats directly from my phone (I have two for marketing purposes). So…

Making the app Link to heading

How could I make the app quickly? I asked myself, and since there’s so much buzz around vibe-coding, I decided to try Cursor AI again. I had used it about a year ago and wasn’t impressed, to be honest.

But this time, I decided to be smart and take some advice from the internet to organize my work properly so the AI wouldn’t lose context or start to hallucinate. For this, I used TaskMaster, an open-source AI task manager that helps organize AI workloads and build a dependency tree of tasks. By the way, the tool is free and open source—here’s their repository.

Result Link to heading

Basically, I wanted an app that detects my IP, geolocates it, and processes it with the Scamalytics API. Ideally, it should be a widget that constantly shows all the info on my mobile desktop.

I did it! This is the final result, which I now use regularly for my own purposes. I even plan to turn it into a paid App Store app.

Widget 2 Widget 1 Widget 3

Is Vibe Coding faster? Link to heading

This is a super simple UI with some API calls, specific to iOS platform widget capabilities.

My estimation of the work Link to heading

I thought about how long it would take me to write the app myself. I’d say the UI part would take about 1 hour, the API for fetching geolocation and Scamalytics another hour, and figuring out iOS widget capabilities would be around 2-3 hours, as I didn’t have experience with widgets before and frankly didn’t know what to expect.

So overall, I estimated that it would take me without AI around 6 hours to finish the project. So you probably wonder how much time it would take for AI to do the job under my watch?

Cursor AI setup + TaskMaster Link to heading

To improve the success rate of the endeavor, I added some tweaks:

  • A proper .cursorrules for writing iOS code.
  • I used TaskMaster to split the job into tasks.
  • I added tasks to write unit tests to verify that API calls are working properly.
  • I uploaded documentation for SwiftUI (including widget capability) and Scamalytics API.

This is how the TaskMaster-generated project looked. I just described what I wanted to make, and the tasks were generated for me. Quite a decent job, I would say. If the task is too large, there’s a possibility to expand it into subtasks. Some tasks are weird, like polishing and verifying, which are basically more human-like, as there was no screen design to match to, but that is going to be the next step I add to the process.

You can see there’s a dependency tree. The tool is plugged in as an MCP server and allows you, during chats with the LLM, to reference any task you want and change its status or update it.

Everything was quite smooth. I experienced only some problems with widget capabilities and got into a loop with Cursor, but I can say that with Apple documentation, this is usually quite common, even for me. The problem wasn’t resolved by Cursor, but with the OpenAI+Xcode tool, I quickly found a backward compatibility solution to make it work. I’m not going to lie—it didn’t work from the start, as Cursor messed up the widget extension ID, but it was quickly resolved.

Final verdict and AI timing Link to heading

So with AI, I did this project in the same 6 hours I estimated, but there were a couple of imperfections in the process from my side. I blundered a bit with .cursorrules by forgetting to set the minimum deployment target to 16.4+, which took 10-15 minutes to fix in the AI-generated code. Also, documentation wasn’t parsed properly. From my experience, it seems the feature doesn’t work properly: it accepts any URL, but in fact, it cannot parse PDFs or sublinks, as it turned out. I don’t know—maybe I uploaded it incorrectly.

I felt along the way that I was just sitting and watching how AI was thinking and generating a bunch of lines, which after the first 30 minutes I stopped even reading. =)))

This is a bit of a waste of time from my view, as if there is proper separation of tasks and a dependency tree, then it should be theoretically possible to run all the tasks in the background in parallel and create pull requests when done. There’s a tool for verifying merge requests called coderabbit.ai, which I’ve heard does quite a decent job. Also, Cursor AI has beta background tasks, and OpenAI has a great CLI tool, Codex, which might be quite an interesting addition to improve the quality and speed of my personal development squad.

In my next articles, I want to try to expand the process and use at least proper documentation and review tasks more thoroughly before starting code generation. I’m quite hesitant for now to use background tasks, as it might end up with some costly results for me, since Cursor AI has a limitation of only 500 requests per month, which is nothing with the tool, as it does a lot of iterations. I probably spent 30-50 to make the small project.

My skill issue or not I can’t tell for now for sure but I would like to setup more experiments with it in the near future to figure it out.

That’s it, folks. I hope you enjoyed the article. See you in the next chapters. Happy coding.