Inspiration

As a previous student. Reading for exams turned into a chore and I kept putting it off until the night before, which never really worked. I'd pass and forget it all a week later. I wanted a way to get through a subject bit by bit instead of in one panic session. That's not really a student problem though, it's just how most people end up with things they've been meaning to learn.

What it does

You tell Argy what you want to learn, or upload your own notes, and it builds you an actual course with modules and lessons in order.

Lessons are built around however many minutes a day you say you have, and none of them are just reading. Every one ends with something you do: multiple choice, putting steps in order, filling in blanks, sorting, recall. Streaks and spaced review pull old material back before you forget it. If a course turns out too hard or too easy you say so, and it rebuilds the lessons you haven't reached yet without touching what you've already done.

How I built it

React Native on Expo SDK 57, TypeScript, NativeWind, Reanimated. Supabase for the database, auth, file storage and edge functions. Azure AI Foundry does the generation, with structured outputs so I get back validated data instead of text I have to parse. EAS for builds, OTA updates, Sentry for crashes.

One thing I decided early was that no model call happens while you're inside a lesson. It's all generated beforehand and saved. That made generation a lot more work, but lessons load instantly, can't stall on a slow API, and can't break halfway through.

Challenges I ran into

Deleting things bit me first. Deleting a row in Postgres doesn't touch files in storage, so when I deleted a course its images stayed in a public bucket with nothing pointing at them. No query could find them and nothing would ever clean them up. I had to rewrite deletion so storage gets cleared first and the row only goes if that worked.

I also didn't have cron jobs. Energy refills over time, streaks expire, archived courses get deleted after 3 days, all things you'd normally schedule. So I don't schedule anything, each one works itself out from timestamps when you read it. It's honestly better than cron would have been. Nothing drifts and nothing fails quietly at 3am.

The one that actually scared me was OTA updates. They push JavaScript into an app that's already installed, and I had it set up so an update could land on a build with different native code. That doesn't throw an error, it just crashes on open and you can't push a fix. I caught it before it reached a real phone.

What I learned

The AI part was the easy bit. Getting decent lessons out of a model took a few days. Everything around it took months: making sure one account can't reach another's data, stopping a double tap from generating the same lesson twice, cleaning up properly, deciding what happens when generation half fails. That's what decides whether the app is actually usable.

I also stopped assuming a change worked just because it looked right. I've got a script that fails the build on hardcoded colours and fonts, and every feature goes through a pull request that gets reviewed before it merges. Both caught things I'd have shipped.

What's next for Argsmind

Voice. I want you to be able to go through a whole lesson by talking to Argy instead of tapping, so you can do one while you're walking or cooking. And more interactive lesson formats than what's in there now.

Components. I'll be adding more interactive components that can accommodate general and niche topics.

Built With

Share this project:

Updates

Submission history