Feature Post

Top

My vibe coding experience with SAT word list app

I built a SAT vocabulary practice app for students. Not because I wanted to teach others, but because I needed it for my kids, and every other app out there was either bloated, gamified, or stuck in 2010. I just wanted a minimalist interface that showed me tough words, let me guess the meaning, and told me if I was right, with minimal delay, no clutter, no noise.

With a basic list of features, I decided to "vibe code" it.
Tried a few: 

  • Claude 3.5 Sonnet, 
  • V0 (first version), 
  • Manus (invite only version), 
  • ChatGPT 4o, 
  • Gemini (not Pro) 
  • and of-course Replit. Screenshots (not in order) below.

Initial requirements as prompt

Craft a game for SAT students learning english vocabulary.

I'm thinking
- screen that shows a word with 4 choices of one word answers
- add gamification elements
- tap on correct answer should show
- meaning, with a "Say out-loud" button so that students can listen to how to words a pronounced
- show examples of related synonyms
- show examples of related antonyms
- example use word in simple sentence
- example use word in a complex sentence
- show buttons for next word, and previous word, which would take students to next/previous words
- a way to save progress
- show word count 1/20
- option to see separate lists (and count) of wrongly/correctly answered words
- a way to download/upload the wordlist, button should allow students to download wordlist in csv format
- add 20 words in the list by default
- add anything else that you think can help
- lastly, ensure that all action buttons are fully functional

First version

I wanted the app to be interactive: a screen that shows a word with four multiple-choice options. Tapping on the right answer should give you more than just a "correct" message. I needed context. Meaning, pronunciation, synonyms, antonyms, simple and complex sentence examples, and some way to track progress. Plus, buttons to move between words, and a save-progress feature so students could stop and pick up where they left off.
 
I fed these ideas into AI and within a mins, the first version was up. The frontend was a simple web page with buttons, cards, and animations. Just the forward/backward buttons worked. Nothing else worked. The backend? Still needed work. Plus, it initially had 5 word list, and wasn't uploading the famous 5000 word list. Tried, csv, excel, json formats.

The gamification

I wanted to make it feel engaging. So after each correct answer, there was a pop-up showing the word's meaning, with a “Say Out Loud” button for pronunciation. Plus, a list of synonyms and antonyms to expand the user’s vocabulary, and sentence examples that ranged from basic to complex. I wanted to make sure that the learning process felt progressive.

It took a while to get everything integrated, mainly because the webapp rest of the buttons were not functional. Although the word list was provided with: synonyms, antonyms, usage examples. Claude just wasn't able to understand how to enable the action buttons. Code kept on breaking. And the entire thing kept on hogging my tokens, uselessly wasted. I spent hours fixing these, testing each action call, and making sure I wasn’t overrun by the token limits. This wasn’t just code, it was a battle of configuration.

Saving progress

The user experience also needed to track progress: a “1/20” (for example) indicator that tells you how many words you’ve worked through. It was not able to implement local storage for session progress and syncing it with the backward/forward action buttons. Manus was the only tool that was able to provide with login option, so that a user could log in and pick up where they left off. But it wasnt functional.

I also added the ability to see lists of wrongly or correctly answered words. In memory session was working fine, but it did require a database (like Supabase or simple local storage) integration to keep the session persistent. Dint work though.


CSV download/upload

A feature I thought would be useful: allowing users to download their word list (in CSV format) so they could import it into other apps or study offline. It was a bit more complicated than I expected—mainly because formatting the CSV correctly while retaining the word’s metadata (synonyms, antonyms, examples) took a few tries. But once that worked, I added an upload feature too. The app now supports importing custom word lists, which felt like a small win. But this only worked with a Python code run locally on vscode (see last screenshot). That loads the 5000 words, but does not keep track of records, or scroll through it.

The backend & deployment hell

Once the app worked locally, I hit the familiar deployment snags. Vercel’s build process wasn’t as smooth as it should have been. I had linting errors. Environment variables that didn’t get pushed. Some files missing. Then I had to fix CORS issues when fetching data. None of these problems were major, but together, they slowed things down. Below screenshot is from Manus AI

In session tracking of progress was OK, but when I tried to integrate it a persistent datastore (eg: Supabase), I kept getting errors. So I took a step back and simplified the approach. For now, I’m storing the word data is stored in local storage (csv file), but user progress is not stored. Not ideal for scaling, but it's functional for a personal project :) Btw, was able to run this on Android as an app with the help of Python Emulator on phone. So this becomes an "app". Notice why there's a font option on the screen below? Because android is not able to act on its "responsive"-ness for the python code, and text becomes illegible, and therefore font sizer helps.

Final thoughts

SAT apps (varieties) are available in test mode (no domains/live yet). It’s functional. It’s simple. It does somewhat what I needed it to do: help learn SAT words without the excess fluff. The gamification appears interesting and the features like word tracking, CSV export, and pronunciation make it a solid tool for anyone looking to practice. But code-specific-AI agents still need a bit of work to handle complex tasks (beyond just snakes or flipper bird games). But this was couple of months ago, I'm sure this app can be vibe-coded much better and more improved now.