{"slug": "i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how", "title": "I'm 18, Self-Taught, and I Built an AI Study App for Nigerian Students — Here's How", "summary": "George Erubami, an 18-year-old self-taught developer in Ibadan, Nigeria, built Aveliq, an AI-powered study companion app for Nigerian students. The app uses a five-provider AI fallback chain called GEOCODE Intelligence to ensure reliability and speed, with Cerebras as the primary provider. Erubami developed the entire app on an Android device using Termux and Acode, avoiding build tools and deploying directly to Vercel.", "body_md": "My name is George Erubami. I go by GeoCode. I'm 18 years old, self-taught, based in Ibadan, Nigeria. I built Aveliq end to end — frontend, backend, AI integration, design, deployment, legal pages, PWA setup, everything. This is the story of how I did it and what I learned.\n\nWhat Aveliq Does\n\nAveliq is an AI-powered study companion. Here is what it does right now:\n\nEverything is powered by what I call **GEOCODE Intelligence** — a five-provider AI chain that I built to ensure the app is always fast and always available, even on the free tier.\n\nThe Tech Stack\n\n**Frontend:** HTML, CSS, Vanilla JavaScript. No framework. No build tool. I build on Android using Termux and Acode, so keeping the toolchain simple was a deliberate choice\n\n**Backend:** Node.js with Express, deployed on Render.\n\n**Database and Auth:** Firebase Firestore and Firebase Authentication.\n\n**Deployment:** Vercel for the frontend, Render for the backend.\n\n**AI:** Five providers chained together — more on this below.\n\nThe Most Interesting Technical Decision: The AI Fallback Chain\n\nThe heart of Aveliq's backend is what I call the GEOCODE Intelligence chain. Every AI request goes through this waterfall:\n\n```\nCerebras → Groq → OpenRouter → Mistral → Gemini\n```\n\nHere is why I built it this way.\n\nThe problem with relying on one provider\n\nEvery free-tier AI API has rate limits. Cerebras allows a certain number of requests per minute. Groq has its own limits. If you build your app on a single provider and that provider hits its limit or goes down, your entire app breaks. For a study app used by students the night before an exam, that is unacceptable.\n\nHow the chain works\n\njavascript\n\nasync function callAI(prompt) {\n\nconst result =\n\nawait callCerebras(prompt) ||\n\nawait callGroq(prompt) ||\n\nawait callOpenRouter(prompt) ||\n\nawait callMistral(prompt) ||\n\nawait callGemini(prompt);\n\nif (!result) throw new Error('All AI providers failed.');\n\nreturn result;\n\n}\n\nEach provider function returns `null`\n\non failure or rate limit, and the next one in the chain is tried automatically. The student never sees an error — they just get a response, slightly slower at worst.\n\nWhy Cerebras first\n\nCerebras is the fastest inference provider I have found. Their Llama 3.3 70B model responds in under two seconds for most requests. That is what makes Aveliq feel instant — most requests never even reach Groq.\n\nThe Rate Limiter\n\nBecause I am on free tiers across multiple providers, I also needed to protect my own backend from abuse. I built a simple sliding window rate limiter:\n\n``` js\nconst rl = new Map();\n\nfunction rateLimiter(req, res, next) {\n  const ip  = req.headers['x-forwarded-for']?.split(',')[0] || req.ip;\n  const now = Date.now();\n  const win = 60 * 60 * 1000; // 1 hour\n  const lim = 60;              // 60 requests per hour\n\n  if (!rl.has(ip)) rl.set(ip, []);\n  const calls = rl.get(ip).filter(t => now - t < win);\n  calls.push(now);\n  rl.set(ip, calls);\n\n  if (calls.length > lim)\n    return res.status(429).json({ error: 'Rate limit reached.' });\n  next();\n}\n```\n\nIt is IP-based, in-memory, and cleans itself up every hour. Simple and effective for the current scale.\n\nBuilding on Android\n\nI want to talk about this because it is something most tutorials assume you do not have to deal with.\n\nI built Aveliq entirely on Android. My tools are Termux for the terminal, Acode as my code editor, and GitHub for version control. No MacBook. No desktop. No VS Code with extensions. Just a phone.\n\nThis forced me to make certain decisions:\n\n**No build tools.** No Webpack, no Vite, no bundlers. The frontend is raw HTML, CSS and JavaScript. This means every file is exactly what gets served — no compilation step, no source maps, no build errors. It is also why the app loads fast.\n\n**No local server testing.** I deploy early and often. Push to GitHub, Vercel auto-deploys, test on the live URL. This made me very deliberate about what I commit because every push is a real deployment.\n\n**Termux for Node.** Running `node server.js`\n\nlocally on Termux is how I tested backend logic before pushing to Render. It works, but it taught me to write clean, readable server code because debugging on a phone screen is not fun.\n\nThe PWA Setup\n\nAveliq is a Progressive Web App. Here is what that means in practice:\n\n`manifest.json`\n\nwith proper 192px and 512px PNG icons (not SVG — iOS home screen requires PNG)`beforeinstallprompt`\n\nevent`apple-touch-icon.png`\n\nat 180x180 for iOS home screenThe offline fallback is something I care about specifically for Nigerian users. Data is expensive and connections drop. If a student has already loaded Aveliq and their connection drops mid-session, they should not see a blank screen — they should see their cached content and a clear message about what happened.\n\nWhat Is Coming Next\n\n**Session 3 — Past Questions Engine**\n\nThis is the feature I am most excited about. The architecture is community-powered:\n\nThe database builds itself as users grow. The first person to upload a paper does the work once, everyone benefits forever. We also add a verification layer — if three different users upload the same paper and the questions match, it auto-verifies. No fake questions get into the pool.\n\n**Session 8 — Paystack Integration**\n\nFree tier with daily limits. Premium at ₦1,500/month for unlimited access. Exam Prep at ₦3,500 for three months. Payment gated via Paystack with a Firebase webhook to update subscription status.\n\nWhat I Have Learned\n\n**Ship fast, fix in public.** The old Aveliq had problems. Instead of fixing it quietly, I rebuilt it completely and documented the process. Building in public keeps you accountable and attracts people who want to see you succeed.\n\n**The AI is not the hard part.** Calling an API is five lines of code. The hard part is the user experience around it — the loaders, the error states, the fallbacks, the identity layer, the rate limiting. The AI is just the engine. The product is everything else.\n\n**Build for your user's reality.** My users study on 2G connections in rented rooms with shared data. Every design decision — the PWA, the offline fallback, the fast AI chain, the WhatsApp share button — came from thinking about that specific person, not an imaginary ideal user.\n\n**You do not need the right tools. You need to start.** I built this on a phone. The tools are not the barrier.\n\nTry It\n\nAveliq is live at [studypal.com.ng](https://studypal.com.ng)\n\nThe app is at [studypal.com.ng/app](https://studypal.com.ng/app)\n\nI post updates on my portfolio at [george-erubami.vercel.app](https://george-erubami.vercel.app)\n\nIf you are a Nigerian student — try it. If you are a developer — tell me what you think. If you want to follow the build — I document every session.\n\n*Built by George Erubami (GeoCode) — 18-year-old self-taught developer from Ibadan, Nigeria.*\n\n*GitHub: Geocode-hub · X: @CoolRexy150983 · Instagram: @geocodedev · WhatsApp: +234 907 269 0451*", "url": "https://wpnews.pro/news/i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how", "canonical_source": "https://dev.to/geocodehub/im-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-heres-how-1958", "published_at": "2026-06-24 22:52:12+00:00", "updated_at": "2026-06-24 23:12:59.894272+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-products", "developer-tools", "ai-infrastructure"], "entities": ["George Erubami", "Aveliq", "GEOCODE Intelligence", "Cerebras", "Groq", "OpenRouter", "Mistral", "Gemini"], "alternates": {"html": "https://wpnews.pro/news/i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how", "markdown": "https://wpnews.pro/news/i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how.md", "text": "https://wpnews.pro/news/i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how.txt", "jsonld": "https://wpnews.pro/news/i-m-18-self-taught-and-i-built-an-ai-study-app-for-nigerian-students-here-s-how.jsonld"}}