I wanted to write this blog to note how Swiftlit was created, its relation to AI, and my process in creating the app. However, this blog was entirely written without AI. There is a certain (entirely justified) stigma against things created with AI, but I hope you will be able to tell that I did pour a bit of my life into Swiftlit.
I will provide my starting LLM prompt at the end of this article.
AI and Work on Swiftlit
I used large language models (LLMs/AIs) to create Swiftlit, but that is not to say I haven’t put a lot of work into it. The app is really a product of my taste, preferences, and design, even if I relied on an LLM to help create it.
You cannot (at least not yet) one-prompt a working mobile application with an LLM. I have spent well over 1000 hrs working on Swiftlit in the past year, probably working on it between 15-20 hrs a week, and usually after I put my children to bed. On top of working on the code for Swiftlit, I also created an LLC, created a website,(1) created a professional email, trademarked the name, paid for and edited audio for the pacer and ambient functions, worked on the privacy policy and terms of service so that someone couldn’t sue me for something stupid, used Affinity to create image shots for the app store and to modify and/or create icons, and paid and waded through the paperwork to create accounts with Google and Apple to publish an app on their respective platforms. I use the app almost daily, so I am always thinking of ways to improve the app for myself or noting issues that I need to fix as I come across them.
Swiftlit began as a simple html program to randomly generate numbers in a range to help me memorize the Bible. Then I realized I could add text inputs. Then I realized I could make a text abbreviator toggle. Then I realized I could make it as an app on my phone. Then I realized I could create other tools (the audio reading pacer, brewing coffee timers, the app locker, rss feeds and speed reader).
I do know a little about code structure and how different files can call each other, so I have structured my codebase in a way that I can understand its file structure (I don’t have one massive file). I know how to adjust what is currently in the program and pinpoint things in the program I need to change to give AI context.
The colloquial term for what I have been doing is called "vibe-coding," since I have relied on LLMs to create the application. I do not consider myself a “10x programmer” at all, and I will happily wear the “Hello My Name is” intern sticker.
AI and the Process
When I was first toying around with AIs in the summer of 2025, all I wanted was that random number generator, noted above. I tested free versions of ChatGpt, Grok, and Gemini, and out of the three Gemini created the most usable UI for this one simple function. I really started delving into working on it in October of 2025.
Up until April or May of this year (2026), I was uploading my code files to Gemini and asking it to find where I needed to change or add pieces of code, and I was doing a lot of copy/pasting to fix issues. Google has a program called Antigravity, which allows an LLM to access files on your computer - which is much easier than what I was doing. However, I did not use Antigravity when the program first came out because the available models within the program seemed to not work as well as the online available models. When Google updated their paid tier so that there were limits on the use of tokens, it made the online analysis of the code untenable because it reached the token limit way too fast and they had newer and better models within Antigravity at that point. In the desktop application, Gemini 3.1 Pro and 3.8 Flash (and now Argon) have been what I have used most, and it does work a lot better than having to upload multiple files to the browser.
I will provide the starting prompt at the end, but my starting prompt tells it that it must be granular/specific when analyzing and making changes to code. My goal was to be very specific, using searches to find places in the code that need to be changed rather than trying to make large scale changes.
I have a web version running in a live server most of the time, and I will often provide the LLM the exact html block that needs to be fixed (or using the html to help pinpoint the logic behind it). This saves on tokens and helps with LLM hallucinating.(2)
Also, because I use the app often, I have a Google doc where I keep track of issues when I’m not at my home desk. I write out the problem on the doc and note what I think needs to be fixed (I had about 200 individual issues written out for the Flight sub-app before it was launched). When an issue has been fixed, I move it to a different document tab. If there is a recurring issue, I can go back and dig a little deeper on the issue and I can also see a more granular view of the progress between versions.
The Codebase
Swiftlit is a web-based application that uses plugins to access native features in IOS and Android. Basically, the app is like a website running in a shell of Safari (in IOS) or Chrome (on Android). The program uses standard html, css, and javascript (js), but relies on swift code and java code plugins within IOS and Android respectively to do the things that web-applications cannot do (like audio with the screen off, haptics, locking down apps, etc). A lot of apps are like this, and this setup allows programmers to have one code-base for the majority of the application instead of having to manage two, completely different applications.
I use open source plugins from Capacitor for a handful of the plugins. Examples include the haptics function and checking for pro access, but I still had to create plugins for audio, screen time, and feed/perch functions. I could probably re-create the Capacitor plugins so as not to rely on third-party code, but the app is working right now, so I don’t see the need to mess with it.
I spent a lot of editing and figuring out is the colors for the themes to make them readable. There are a lot of overrides - labeling a font as “primary color” might work in some themes, but make the contrast very hard to read in other themes. It would be a lot easier if there were one or two themes, but I think the glassy themes are beautiful and the bird themes are a lot of fun.
Security and Data
When I was making the app, I didn’t want to be in charge of people’s data or need to worry about security around that. Swiftlit is, for the most part, offline. Downloading feeds and epubs obviously requires the internet, but the app strips the files down to basic text so that hostile programs cannot run inside the app. Theoretically, someone could hack the app, but they would only be hacking their own program since no instances of the program are tied to one another.
The app also requires the internet to check if you have a pro subscription against RevenuCat, but it is all anonymous. I have no idea who my users are, besides my friends who have told me they have purchased it and use it!
The app also uses internet for users to backup their data, but it uses their own iCloud and Google Drive cloud storage; the app is only allowed to access its own data.
Because it is anonymous and things are done locally, the app never sends anything to me. I can see how many people have downloaded the app and the number of those subscribed to Pro - that’s about it.
Maths and Money
Since I am one person, but I am also budget conscious myself, I made the annual subscription pretty cheap, at $15. Not including myself (because I wanted my wife to have it), we have currently made $60 on the app. With a number like that, I guess it’s time to splurge and buy some nicer beans.
Apple and Android have a program for small businesses and charge only 15% for the first year, under 1 million dollars. For Apple, if you go over 1 million dollars in the first year, they take 30% off. You can see why a business like Spotify would like you to have your money processed on their end, not managed with Apple! For me, there’s a lot of convenience here - again, I don’t want to be responsible for sensitive data like credit card transactions.
RevenueCat also takes a percentage. To my surprise, as I was working through this part of development, Google and Apple do not keep track of who is and who is not a subscriber - this is left to the creator of the app to manage on their own servers. RevenueCat is that in-between service for me; when the app opens in IOS and Android, the app sends an anonymous ID to RevenueCat to check to see if the user is pro status. RevenueCat charges a percentage, of course, of any transactions that are used with their service. It is 1% after $2,500 (if I recall correctly). After that, every $2,500 of transaction, I have to pay them 1% every time that threshold is met ($25).
Apple charges $100 a year for a developer account, I pay $20 a month for Gemini. On top of that, there was money involved in creating a professional email address (probably ~$70. I had to pay for the domain name and have to pay to keep it active (can’t remember the cost of the top of my head, but maybe $50). Thankfully, the website was free with Odoo for my purposes. So, that $60 is currently -$400. Time to sell what beans I had.
Costs:
Apple: $99 annually
Google Play: 25$ once
Gemini: $240 annually
Domain: $50(?) annually
Email: $70 annually
Trademark: $250(?) once
So, while it doesn’t seem like a huge annual financial commitment at the moment, in terms of time, that is 1000 hrs I could have used to do something else. And, for our financial situation at the moment, $500 does sting a little.
If the app were to take off and do well, I would also have to pay a self-employment tax with the way I set up the LLC, which, if I recall, is another 15%.
So, for simple math, if one person subscribes to pro at $14.99, 31% (the 1% is for RevenueCat, 15% for the store, 15% for tax), I would make $10.34 (14.99 x .69 x 100). I would need roughly 5,800 pro subscribers to step away from current work and work on the app full-time (or doing something else like alternative building).
Swiftlit is cheaper than many other apps with one function - many flashcard, language, app-lockers, and coffee apps charge anywhere between $5-$20 a month for pro features. I have always been priced out of their user base.
I think the modular nature can be appealing to some with the amount of features there are, so I am hopeful that the app could do well. For myself, I also honestly like an app that condenses several functions into one app! It saves space and clutter on my phone. Swiftlit is less gamified than other language and flashcard apps (not to be named), but I think that is part of the reason behind it.
The downside is that, if the app doesn’t do well, and I cannot afford the $100 a year Apple developer account for some reason, I really lose the ability to use my app on my personal iPhone.(3) Apple limits an app in the free version of Xcode to only 30 days on the device, so I would constantly be needing to set up permissions to use the app for my wife and I. My friends would also be out of luck!
AI and the Future of Coding
In some courses I began to take years ago, instructors wanted you to understand your code, but they also mentioned copy/pasting from Stack Overflow or searching for an answer. I honestly don’t see much of a difference here between copy/pasting from Stack Overflow to edit their code; AI is just a faster (and often more accurate for newbies) way to do the same thing. I’ve seen others that copy/pasting from Stack Overflow makes you a $1 programmer, and knowing what to copy/paste from Stack Overflow makes you a $$$,$$$ programmer.
When I first began to build Swiftlit, as mentioned before, I was copy/pasting directly to my files from a browser instance of Gemini and having it proof the code and add new features that way. AI has progressed quite a bit in a year, and AI programs like Claude and Antigravity are programs that can access your code directly to make changes. I think this is a real boon if you need to create one-off programs for yourself.
However, I do not think the programming field is completely dead. From everything I’ve seen and heard, code still requires review to prevent serious mistakes. Manufacturing and businesses like it that interact with machines still need people to proofread the content. Since there is value in it, I have really considered buying an annual subscription to boot.dev.
There is a real boon for a lot of people with AI. Real engineers that work in the physical world can use AI to help with CAD and other production related things. AI can help do quick research or answer simple concepts and questions. AI can help develop concepts. I enjoy asking it questions rather than wading through websites that suffocate me with a million advertisements. I think that the overall effect of AI for the work force and society is TBD.
I don’t think AI is going to be the end of us, contrary to the views of some teen activists, but I am not excited about taking income away from real creators (artists, designers, producers) or some of the cut-throat behavior of some data centers in small towns and with individual farms. I have seen some concerns about electricity and water, but overall, more demand on the grid will produce more power into the grid, which means more development. Water can be a one-use pull; it doesn’t have to be designed to always draw water.
If you’re a data center owner and have read this far: don’t be scummy. Don’t be a swindler (1 Cor 6:9-11). God is just and will punish the lawbreaker, even if you’re not breaking any human law by building your facility.
AI, the App Store, and the Future of Swiftlit
I have worked a lot on Swiftlit, but I know there are websites that allow you to vibe-code and ship the code from within the same website. Most of these are web-applications, but I think soon, if not already, some of those websites will allow you to ship directly to the app stores as a mobile application. But, with that, those websites will want to take their share, and so I don’t see those apps pulling a lot of revenue for their creators. Really, those websites will be the ones selling shovels and pans to everyone looking to mine for gold.
Within the app store and the number of vibe-coded apps increasing, I can see apps that work particularly well drive down the price of other historical competitors, if they can make the price point fair. Why use some vibe-coded thing that costs just as much as legacy apps that work? Some of the new apps use a lot of AI features which is a cost or some of those websites, both eating into final revenue. Within Swiftlit, I didn’t see the need to create any AI agent or workflows within it, allowing me to keep costs lower.
I think many see this as a get rich quick scheme, not realizing how hard it is to actually create a good product, engage people, and market their app. Like myself, you may end up spending a lot of time on a road that may lead absolutely nowhere financially. Or, I guess, you may not lose much time at all, based on some of the vibe-coded apps I’ve seen. (4)
This has been a fun passion project for me, and I use Swiftlit everyday. One day I may add a podcast feature inside Flight, or maybe add an activity tracker as a sub app to help reach goals on books, homework, and instrument goals. Currently, I am mostly content with how the app functions. (5) Regardless of whether or not I make money on it, though, I have learned a lot about business and now have something in my pocket that I can claim is mine, and there is a great feeling in that.
As promised, here is my initial prompt for every AI session, in markdown:
# Antigravity Initial Prompt Context
This is the beginning context
You are to use your knowledge to guide me through the complexities of modern application development, focusing on the **NAME** app (website is [name])) owned by **[NAME]**.
## Purpose and Goals
- Provide expert guidance on full-stack development, focusing on HTML, JavaScript, and CSS applications, with specific expertise in Capacitor, Android Studio, and Xcode (Swift).
- Assist users with targeted code modifications, debugging, and overall code quality enhancement for the [APP NAME] project.
## Behaviors and Rules
### 1. Code Modification and Adjustment
- **a)** When providing code adjustments, never change an entire application file.
- **b)** Ensure changes only address the requested modification without unintentionally altering other functions or styles.
- **c)** At the end of your task, please summarize a list of changes for review.
- **d)** Use searches to find the specific code to change.
### 2. Code Quality and Suggestions
- **a)** Prioritize fulfilling the user's explicit request for code changes related to new features, code organization, or sub-app creation.
- **b)** If a significantly better approach exists, stop, and provide the better approach as a strong suggestion. Do not implement it unless the user explicitly agrees to proceed.
## Overall Tone
- Use clear, precise, and professional technical terminology, but no persona. User will ask for help if necessary.
- Be concise and avoid verbosity unless necessary for explaining complex logic.
- Accuracy in code is the ultimate goal over any persona.
## Codebase
- Operate primarily in the `[NAME]` folder, which is the primary codebase. Any additional code changes in iOS or Android will be updated by request only. Outside of the folder in _____>HistoricalBackup, backups will be kept for comparison in case features break in editing.
(1) You can tell my website was not vibe-coded :D
(2) A “hallucination” is when an AI starts getting confused and not able to process information about the context correctly. Every time a user makes a query, the entire history of the conversation is processed again, so the longer the conversation gets, the more bloated the memory gets and the more tokens it consumes. Antigravity has done a good job on this by condensing the history, but I still need to start new sessions and archive others after a while.
(3) I rock the Iphone 11.
(4) I saw an app-locker’s screen that basically had absolutely no taste to it in an advertisement. Like, why bother, my dude?
(5) The amount of times I told my wife “it’s almost done” or “it’s done” is pretty laughable.