Get in touch

studIA Notes: designing and shipping an AI study app

How I designed the architecture of an AI note-taking app for university students, directed its AI-assisted development and built the server behind it.

Role
Founder, architect and only developer
Platforms
Android (phone + tablet) · Windows
Stack
Flutter · Node.js · OpenAI API · Google Play Billing · SQLite
Status
In closed testing with real users · Windows installer available · Google Play: October 27, 2026
studIA Notes library screen with notebooks sorted into folders
studIA Notes editor with handwritten notes on lined paper
studIA Notes study screen with a quiz generated from the student’s notes

The problem

University students juggle slides, PDFs and handwritten notes across different apps, then cram before exams without knowing what to review. I couldn’t find an app that let me study the way I wanted, so I designed one.

What it does

  • Handwritten notes with a stylus
  • Import PDF slides or scan paper notes
  • Summaries, quizzes, flashcards and mind maps made from your own pages
  • Answers to questions about your notes
  • Spaced repetition and an exam plan
  • Lecture recording synced with what you write
  • Sharing through a .studia file

Architecture

One Flutter codebase runs on Android and Windows. Notebooks live on the device. When a student asks for AI help, the app sends only what’s needed — page text, page images or a transcript — to my Node.js server, which calls the AI provider. The API key never leaves the server.

Architecture of studIA NotesThe Flutter app on the student’s device sends page text, images or transcripts to David’s Node.js server. The server keeps the API key and calls the OpenAI API, validates Google Play purchases, sends emails through Resend and stores forms in SQLite.Student’s deviceRender, behind CloudflareFlutter appAndroid · Windowsnotebooks stay hereNode.js serverAPI · AI requestspurchases · websiteSQLiteforms, adminOpenAI APIGoogle Play BillingResendpage text · imagestranscriptsAPI key stays herevalidate purchaseemailsArchitecture of studIA NotesThe Flutter app on the student’s device sends page text, images or transcripts to David’s Node.js server. The server keeps the API key and calls the OpenAI API, validates Google Play purchases, sends emails through Resend and stores forms in SQLite.Student’s deviceRender, behind CloudflareFlutter appAndroid · Windowsnotebooks stay hereNode.js serverAPI · AI requestspurchases · websiteSQLiteforms, adminOpenAI APIGoogle Play BillingResendpage text · imagestranscriptsAPI keystays herevalidatepurchaseemails
Architecture of studIA Notes
Flutter app
One codebase for Android and Windows. Notebooks are stored on the device, and core features work offline.
Node.js server
Receives only what the AI needs, adds the API key, calls the provider and returns the result. Also validates purchases and serves the website.
OpenAI API
Generates summaries, quizzes, flashcards and answers from the student’s own pages. Called only from the server.
Google Play Billing
Purchases are confirmed on the server, never decided by the app alone.
Resend + SQLite
Transactional emails, and the forms and admin data the server keeps.

Key decisions

  1. AI only through the server

    An API key inside an app can be extracted. Keeping it on the server also lets me control usage and costs.

  2. Notebooks stay on the device

    Privacy by default. The server stores no notes or images, and audio is never sent.

  3. One Flutter codebase for two platforms

    One person can maintain Android and Windows. Platform differences, like on-device handwriting recognition on Android, are handled explicitly.

  4. Offline first

    Writing, organising and reviewing work without a connection — students don’t always have one.

  5. Purchases validated on the server

    The app never decides by itself who has a paid plan.

How I worked with AI

I designed the program’s structure and used AI tools to write much of the app code, under my direction. I reviewed and integrated what they produced, and I built everything on the server side myself, including how API keys are handled.

Result

A working product on two platforms, in closed testing with real users, with a Windows installer and a Google Play launch on October 27, 2026. The product website, studianotes.com, is served by the same Node.js server.

What’s next

Cloud sync, share links and class groups — once there’s a steady user base.

Questions about the project

Did you build studIA alone?

Yes. I’m the only person on the project: I designed the architecture, directed the AI-assisted development of the app and built the server.

Can I see the code?

The source code is private because studIA is a live product. I’m happy to walk through the code and the architecture in an interview.

Which AI does it use?

OpenAI models, called only from the server.

Want to talk about how I built it?

EmailRésumé