Hey everyone, I’m Harun. If you’re new here, I’m a 12-year-old solo dev from Tamil Nadu, India. I don’t own a laptop. I build everything on my POCO C55 Android phone using the Acode editor. A few days ago, I posted about building Koda, my AI coding mentor SaaS. I didn't expect much. But then things got crazy. Here is exactly what happened on Days 2 and 3.The Traction & The ScoreboardMy first Dev.to post ("I'm 12. I don't have a laptop. I built a full-stack AI SaaS on my Android phone") hit 115+ views. But the best part wasn't the views. It was the real signups. People actually started using Koda! Here is my Day-2 Scoreboard:MetricCountWho are they?Post Views115+Dev.to communityTotal Users8Real humans using the app!Strangers3Found me from the internetSenior Dev1Nerando Johnson (US)Yes, a Senior Software Engineer from the US named Nerando Johnson signed up. He didn't just test it; he ran a full 6-point QA stress test on my AI. And it passed! 🎉He emailed me to give feedback and signed off with a quote that I’ve written on a piece of paper next to my phone: "Brave doesn't mean you're not scared. It means you go on even though you're scared." — Angie Thomas.That hit hard. Building in public is scary, but messages like that keep me coding.The Mid-Launch DisasterJust as I was celebrating, my live app started throwing 404 and 400 errors. Users couldn't chat. I was panicking.It turned out Groq DEPRECATED my AI models mid-launch. They pulled llama-3.1-8b-instant and openai/gpt-oss-120b. My app completely broke because it was hardcoded to look for models that no longer existed. I learned a massive lesson that day: AI models are suppliers — and suppliers rotate inventory. You can't rely on just one.I quickly built a model fallback chain in Vanilla JS. If the primary model throws an error, it automatically tries the next one.javascript1234567891011121314async function askKoda(prompt) { // Fallback chain: if one fails, try the next const models = ['llama-3.3-70b', 'llama-3.1-8b-instant', 'openai/gpt-oss-120b']; for (const model of models) { try { const response = await fetchGroqAPI(model, prompt); return response; // Success! } catch (error) { console.warn(${model} failed with ${error.status}. Trying next...); } } throw new Error("All models failed. Please try again later.");}It took me a few hours of thumb-typing in Acode, but the app was back online.UI Battles: Scroll Jank & The Netlify BadgeBuilding on a phone means you notice UI bugs instantly. First, I had "scroll jank." When the AI was streaming text, the chat window was shaking violently. I fixed it by using instant scrolling while the AI is typing, and switching to a smooth scroll only at the very end of the stream. Much better.Then, there was the Netlify badge. It was sitting at the bottom right of the screen and completely covering my "Send" button for real users on mobile. I tried fighting it with CSS z-index and margins, but it kept coming back. So, I nuked it. I wrote a tiny JavaScript DOM remover to just delete the badge element from the page. javascript12// RIP Netlify badge, you blocked my Send buttondocument.querySelector('.netlify-badge')?.remove();But wait! After I fixed it, my users were still seeing the old broken version. I had to learn about cache-busting by adding ?v=2 to my script and CSS links. Why didn't I just check it in Incognito mode? Because I'm 12, and Google Family Link blocks Incognito for me. I had to figure it out the hard way!3 Golden Lessons from Days 2-3Never overwrite working code with generated code. I tried letting an AI rewrite a working function, and it broke everything. If it works, don't touch it.Read your Supabase chat logs. Users will literally type your product roadmap into the chatbox. I found so many feature requests just by reading the database logs.Pull marketing beats push marketing. I didn't force anyone to use Koda. I just shared my honest story, and 8 people pulled themselves in.What's Next?My thumbs are tired, but my brain is happy. For the next few days, my goals are:Making Koda a PWA so users can install it on their home screens.Finally learning how to use Git properly (committing from a phone is an adventure).Getting more users and listening to their feedback.A Humble AskIf you are a senior dev reading this, I would love your feedback. What am I doing wrong? What security blind spots do I have? How can I write cleaner Vanilla JS?Drop a comment or reach out. I'm here to learn.Thanks for reading, and thanks for letting a 12-year-old build in public! — Harun 🇮🇳
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (1)
Hey guys iam doing this in a hurry so dont expect a clear article but if you comment i will make a clear article tomorrow