Interact.
An AI study tool that asks how deep, why, and how long — then builds sectioned study material around your answers, with progress tracking as you work through it.
- React
- TypeScript
- Vite
- Express
- Supabase

Why I'm building this
Generic AI study help ignores the three things that actually shape good material: how deep you want to go, why you're studying, and how much time you have. You get a wall of text tuned for nobody.
Interact starts from those answers instead. A short onboarding asks about depth, reason, and time, and everything generated after that is built around what you said — so the material reads like it was made for you, because it was.
My approach
Interact is my first solo full-stack product: a React + Vite frontend, an Express backend sitting between the client and the model provider, and Supabase for auth and storage. Signup and onboarding came first, then the study view with its sidebar, sections, and progress checkmarks.
Generation runs in stages — an outline first, then section content — so a failure in one section doesn't take down the whole set, and progress can be tracked per section as you study.
Key features
- Onboarding that matters. Depth level, reason for studying, and available time feed directly into what gets generated
- Sectioned material. Topics come back as structured sections instead of one long dump, each tracked separately
- Progress tracking. Checkmarks and a sidebar show where you are and what's left
- Real accounts. Signup works, so your topics and progress persist between sessions
How it works
Sign up, answer three questions, type a topic — then study through the sections it builds for you.
- Create an account and answer the onboarding questions: how deep, why you're studying, how long you have
- Type in a topic — transistors, for example — and the server generates an outline for it
- Each section gets full content generated around your onboarding answers
- Study through the sections in the sidebar view, checking off progress as you go
- Spaced repetition (planned) brings material back so you actually remember it
Challenges & lessons learned
The biggest bug so far never threw an error. My server had a fallback: if the AI call failed, it caught the error and returned pre-written template material instead. The frontend got a clean 200 with fake content inside — every section the same headers, the same bullets, one sentence that wasn't even English.
The only reason I caught it was the broken grammar. The real error was in the server logs all along: the model I'd hardcoded wasn't available anymore, so every request had been failing since I started testing. I swapped the model and real material finally came back.
The lesson stuck: a fallback that never complains is a bug hider. The fallback now logs the actual error loudly, and a failed generation shows the user an error instead of fake content. I'd rather see something break than have it look fine.
What's next
- Spaced repetition, so people remember what they study — not just read it once
- Better generation quality: early real output was too short and too generic for the depth level chosen
- A public live demo and open repo once the core loop is solid