Objective: Create an app that includes Maths questions by chapter so as user can practice questions. When done, the app produces a PDF which includes questions, answers and metrics such as average time per question.
Value proposition: (1) Quick access to maths questions without having to recopy questions from book to exercise book (2) User metrics – like fitness metrics but for maths questions. User can track progress over time. (3) can be done on the go.
Platform: iPad using Xcode
Building: Two versions were created. First version was a proof of concept that it can be done without knowing any Xcode programming using only ChatGPT. Second version is a more polished version with more features from the objective.
Learnings:
- As a first time user of Xcode,
- ChatGPT can quickly produce simple apps without complex features. In the space of 3-4 hours, I was able to use ChatGPT to make a working app. Basic features such as inserting questions, starting practice and exporting session practice questions and answers to a PDF. In all, this app required 5 files.
- ChatGPT alone struggles to build more complex features – inserting a timer and pen colours caused bugs which made the app not work beyond choosing a set of question. Solving the app the conventional way : screenshot the error raised in Xcode into ChatGPT just created vicious circles of changing files which yielded no progress. The issue was solved when using ChatGPT Plus within Xcode. It quickly understood the issue and resolved it. The use of the Plus version is limited though and fairly quickly through the addition of new files and resolving new bugs, the token limit was reached – it can only be reused after 24 hours.
- Use screenshot into ChatGPT pro for easy bugs to fix. Use inbuilt Plus version when really stuck.
- Prompts have to be as clear as possible. Often asking ChatGPT if it has any questions on things that are not clear and clearing those before it spells out codes is a time saver.
- Even though I have no Xcode programming skills, there needs to be a basic understanding of what the codes are meant for and what they are doing. Understanding how the files relate to each other is also important. For example, at one point, ChatGPT could not resolve a bug. Questioning whether it may be related to a file it had not considered helped it resolve the issue and explain why the bug was not being resolved.
- Safari is very bad to use when using ChatGPT for multiple prompts within one window. At some point, the history becomes so long that Safari struggles. The same happens in Chrome but killing the window and reloading it works faster than doing same in Safari.
- Do you know how to save a pdf of your prompt history? I did not either. I found this cool little solution that works really well. At some point, when the history got too long (it was 200+ pages long), ChatGPT struggled to see where the issue was. Starting a new chat and uploading the pdf of the previous chat allowed it to have a broader view and solve the issue.
- There is a tendency by ChatGPT, I think, to apply solutions that require least computational power – which would make sense. Often times, instead of rewriting whole codes, it would suggest pasting bits and pieces in coding files. It’s what it calls “Surgical improvements”. However, as I’ve found out, those minimal code changes would create more issues than resolve. I’d rather it re-wrote the whole code than apply these small changes.
- Vibe coding is becoming popular – it’s not an ideal way to do coding but it is a gateway for amateurs to learn more about coding and learning coding. About coding in the sense that the steps it involves prior to doing any coding – e.g. in this case using Xcode and preparing the iPad for testing. Even though I was mostly copying and pasting, whenever there were bugs, it forced me to try and understand what was happening and how the codes related to each other. I know some basic python and this helped me. It also gave me confidence to try other projects and learn coding.
- Using solutions such as Lovable did not make things easier. It ran into bugs and it was harder to understand what the bugs were and how to help it resolve them. I did not go beyond the free trial token allocation. For this project, I ran into the limit pretty quickly – 20 minutes of using the service approximately.
- Vibe coding is going to change the app landscape totally. Anyone will be able to create a custom app – design it as one wishes, add custom capabilities, etc. This is something I discuss more here.




