DEV Community

Cover image for A study notebook for my brother, written by an open model
Archana
Archana

Posted on Edited on

A study notebook for my brother, written by an open model

Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend.

What I Built

My brother is preparing for GATE, a big engineering exam in India (think of it as the entrance exam for a master's at the IITs). The computer science paper covers pretty much everything from college, from discrete maths to operating systems to networks.

Studying for it alone is hard. Not because any one topic is impossible, but because nobody is around to tell you "hey, you're getting better". So I built him inkwand, a free study notebook that tries to be that little bit of encouragement :)

It looks and feels like a school notebook, the grid paper kind we all had as kids. Here's what's inside:

  • The whole syllabus as a bookshelf. 13 subjects and 86 chapters, straight from the official syllabus. Click a book and it slides off the shelf and opens.
  • Notes for every chapter, written like a friendly senior's notes: the idea in simple words, one worked example, common traps, and one line to remember. Key terms get pink, green and yellow highlighter, traps get orange.
  • A practice paper for every chapter. Five exam-style questions. Get one right and you get a sticker: a gold star, a medal, a crown or a "Very good!". Get one wrong and you get a gentle cross and an explanation. Full marks gets you a trophy.
  • Flashcards you tap to flip.
  • Green ticks. Read the notes, finish the paper, flip every card, and the chapter gets ticked off. Each book shows how far along you are.
  • A study calendar. Every day you study gets a tick, there's a streak, and hovering over a day shows what you did.
  • Ask about anything. If something's missing, type it in and Gemma writes fresh notes, a paper or flashcards right there.
  • No login, no accounts. Everything stays in your own browser.

The stickers and ticks sound silly, I know. But when you study alone, nobody says "well done". Now at least a gold star does :)

Demo

Live: https://inkwand.onrender.com

Opening a book

A book sliding off the bookshelf and opening

Practice paper with stickers

Answering practice questions and getting tick marks and stickers

Flashcards, then the chapter gets its green tick

Flipping flashcards until the chapter is marked covered with a green tick

The study calendar

Hovering a ticked day on the calendar shows what was studied

Get one wrong, correct it later

A wrong answer lands in the mistakes notebook and gets crossed off once corrected

A report card, with remarks from Gemma

The report card showing grades per subject and red-pen remarks written by Gemma

And it works offline

With the internet off, the library still opens and a book can be read

If you've got two minutes: open Operating Systems, pick Deadlock, read the notes, try the practice paper (go collect a sticker), and flip through the flashcards. Then head back to the shelf and hover over today on the calendar. And scroll all the way down, there's a little classroom waiting at the bottom :)

It runs on an always-on Render instance, so it should open right away :)

Code

GitHub: https://github.com/pyarchana/inkwand (MIT licensed)

How I Built It

Nothing fancy, and that's on purpose. I wanted it to load fast and stay light:

  • Python and FastAPI on the backend.
  • Plain HTML, CSS and JavaScript on the front. No framework, no build step. Every icon, sticker and drawing is inline SVG, so there are no image files to download.
  • Gemma 4, Google's open-weight model, through the Gemini API. The main model is gemma-4-26b-a4b-it, with gemma-4-31b-it as a backup.
  • Render for hosting, set up from a render.yaml blueprint.

The part that changed my whole plan

My first version asked Gemma to write the notes whenever someone opened a page. It worked! It was also painfully slow. Gemma 4 thinks before it answers, and on the free tier that took anywhere from 45 to 90 seconds. Once it thought so hard that it used up its entire token budget and replied with... nothing.

Nobody wants to wait 90 seconds for a page of notes. So I flipped it around. A small script asks Gemma to write the whole library up front: notes, a practice paper and flashcards for all 86 chapters, 258 pieces in total. It runs 8 requests at a time, retries when the free tier hiccups, and picks up where it left off if you stop it. Everything ends up as about 744 KB of JSON in the repo.

Now chapters open instantly, cost nothing, and still work even if the API key goes missing. Gemma only gets called live for the "ask about anything" box and the "write me a fresh paper" button, and the page is upfront that those take about a minute.

Keeping Gemma honest

Practice papers and flashcards have to come back as proper JSON: exactly four options, one correct answer, and an explanation. The server checks every reply with Pydantic. If something's off, it asks once more with a stricter prompt, and if that fails too, you get a friendly message instead of a broken page.

Free tier things

While writing the library, Google's API threw 74 temporary server errors at me. Then on deploy day, the 26B model failed every single request while the 31B one was totally fine. So now if one Gemma model is having a bad moment, inkwand quietly asks the other one. Swapping models is one setting, which is a big part of why an open model works so well here.

Making it feel like a notebook

I wanted it to feel like sitting at your desk, not opening yet another app. So there's grid paper in the background, headings in pen, and highlighters in the notes. At the very bottom is an empty classroom: a blackboard with chalk in white, pink and yellow, rows of benches, a clock, and a window where the sun glows and clouds drift by. It works on phones too, and it respects reduced motion settings.

Why Open Matters Here

  • It's free. Good study material shouldn't be stuck behind a paywall. Gemma's free tier and Render's hackathon credits mean inkwand costs my brother, and anyone else who finds it, nothing at all.
  • The content is open too. Coaching notes are usually locked away. inkwand's whole library is plain JSON in a public, MIT-licensed repo. Spot a wrong answer? Open a pull request and it's fixed for everyone.
  • No lock-in. When one model broke on deploy day, switching took one setting. If the hosted API ever changes, the same Gemma weights can run somewhere else.
  • It works offline. The whole library is saved in your browser, so every chapter opens with no internet. And because Gemma's weights are public, the model itself can run fully offline too, with no API key at all. A college lab could host the whole thing for its students.

A closed model might have been faster. But free, forkable and fixable by anyone matters more to me here than a few seconds.

Handing It Over

My brother is not a talker. When I sent him the link, I got no "thanks", no "nice", not even an emoji. Honestly, I saw that coming :)

But everything inkwand remembers lives in his own browser: the stickers, the green ticks, and the calendar that marks every day you study. So a little later, I peeked over his shoulder.

The calendar wasn't empty anymore. There were green ticks on it and stickers on his sheet, and hovering over the ticked days showed what he'd been studying.

He still hasn't said a word about it. 👀

In our house, that's a review.

Prize Categories

  • Best Use of Gemma: Gemma 4 wrote all 258 pieces of the library, and it writes fresh notes, papers and flashcards on request, with a second Gemma model as a backup.
  • Best Use of Render: Render is inkwand's AI runtime. The FastAPI service on Render builds every prompt, calls Gemma, validates each reply, retries and falls back between two Gemma models, and serves the front end. It's deployed from a render.yaml blueprint with a health check, auto-deploys on every push, and runs on an always-on Starter instance so it never sleeps.

Top comments (9)

Collapse
 
ssapable profile image
ssapable •

"When you study alone, nobody says well done. Now at least a gold star does" is the whole product in one line, and it's the line I built a 54-second hand-drawn cartoon around: the slump at the desk, the gold star showing up, 13 subjects and 86 chapters, the sticker ladder up to the trophy, and no login. No strings, yours to use or ignore, on a plain page with no sign-up:

ssap-pa.github.io/scripttoon-samples/

If a detail is wrong, tell me which shot and I'll re-render it. One question: does your brother actually chase the streak on the calendar, or is the green tick per chapter the thing that moves him?

Collapse
 
chanadev profile image
Archana •

Thank you, that line really is the heart of it :) I built both on purpose, because people are motivated differently. Some love keeping a streak alive, others just want to see a chapter get its green tick and move on. The calendar is for the first kind, the ticks are for the second. And the mistakes notebook is for everyone, because the questions you got wrong are the ones worth coming back to.

Collapse
 
ssapable profile image
ssapable •

Calendar for the streak people, ticks for the chapter people, mistakes notebook for everyone. That's a cleaner answer than most study apps have, and it explains why the cartoon's "green tick" moment felt right even before I knew the reasoning. The mistakes notebook is the one I'd add if I re-rendered: the wrong answer landing there and getting crossed off later is the most hopeful mechanic in the whole thing. The video is yours to use wherever, no credit needed.

Collapse
 
jeturgavli profile image
Jetur Gavli •

So Awesome Cool Project

Collapse
 
chanadev profile image
Archana •

thanks!!! :)

Collapse
 
srijita33 profile image
Srijita Ghosh •

really cool one

Collapse
 
chanadev profile image
Archana •

thank you!!! <3

Collapse
 
sahil_jaiswal_6affec34584 profile image
Sahil Jaiswal •

So cool!

Collapse
 
chanadev profile image
Archana •

thank you!!! :)