AlreadyCovered:基於 Gemma 的代課教學資料包,預先準備好以備不時之需
AlreadyCovered: a sub-plan packet that's ready before you need it, built on Gemma
AlreadyCovered 使用 Gemma 及 Ollama,在本機根據教師現有的課程檔案,為每節課草擬代課指引,並提供來源連結。教師可檢視及核准內容,再匯出 PDF 和已核准教材的 ZIP;應用程式不會自動傳送資料。項目目前處於技術測試階段,尚未經在職教師或大型文件集驗證。
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
AlreadyCovered. It's for teachers who already keep their own lesson files (worksheets, notes, whatever) and have a weekly timetable. The problem it solves: when you wake up sick, you shouldn't have to rebuild tomorrow's lessons from scratch while you're unwell.
You upload the files you already have. The app drafts substitute-facing instructions for each lesson block, but only from your own files. It never makes anything up. If it can't find or confirm something, it tells you honestly instead of guessing. You review it, approve what's correct, and export a real PDF plus a ZIP of the approved worksheets. Nothing gets sent anywhere automatically. You download it and share it yourself.
It saves the one thing a sick teacher has none of: the time and focus to sit down and write clear instructions for someone else while feeling terrible.
Demo
Live app: https://alreadycovered.vercel.app
Video: https://youtu.be/hj-DSnZkU8M
Code
AlreadyCovered
A substitute-teaching pack that's ready before a teacher needs a sick day.
AlreadyCovered keeps a source-linked substitute packet current from the lesson files a teacher already has. When an absence happens, the teacher reviews what the app already prepared, fixes anything that's missing, and exports a real, printable PDF and a ZIP of the actual worksheets - instead of reconstructing tomorrow's lessons from scratch while unwell.
Live: alreadycovered.vercel.app
Status: technical beta. The core loop below is real and runnable today It has not been validated with real practising teachers or a large document corpus - see
internal/VALIDATION.mdfor exactly what was and wasn't tested, with real run evidence. This is not a market-validated product.
Who this is for
An individual primary/elementary teacher who keeps lesson files (PDF, DOCX TXT, or Markdown) and has a recurring weekly timetable. It is not built for school administrators, multi-teacher coordination, or any workflow…
MIT licensed.
How I Built It
The AI part runs on Gemma, an open-weight model from Google, through Ollama, running locally, so no third-party API call ever touches a teacher's files.
The rest of it: a Fastify + TypeScript backend, Postgres (every table scoped per user, so one teacher never sees another's data), a React + Vite frontend. The backend runs in Docker on a VPS, the frontend's on Vercel.
The part I actually care about most isn't the AI call itself. It's the retrieval step before it. The model is only ever shown excerpts from the teacher's own indexed files for that specific lesson's subject, and it can only cite source IDs it was actually given. Anything it cites outside that set gets stripped before the teacher ever sees it. That's what "grounded" means here in practice, not just in the marketing copy.
Why Does Open Innovation Matter?
Because this product only works if a teacher can trust it with files about their class, their students' work, and the days they're not there to supervise. A closed API means that trust depends on someone else's servers and someone else's logging policy, with no way to check. Running an open-weight model myself means I can actually say, and mean, that nothing leaves the stack I control, and anyone can read the code and check that for themselves.
It also means the honest failure mode is different. Closed APIs tend to always answer something, confidently, even when they shouldn't. An open model I run myself, I can wire up to say "I don't know" and actually mean it. That's the whole design of this app: missing material shows up as "needs attention," not as a confident-sounding guess.
The Lazy Payoff
The app front-loads the boring work (reading your files, matching them to the right lesson, drafting the instructions) before you need it, not after. So on the actual sick day, instead of starting from a blank page, you're just reviewing and clicking "approve." That's the whole point: less to do on the day you're least able to do it.
Prize Categories
Best Use of Gemma: the lesson-draft generation runs entirely on Gemma through Ollama, local inference, no other model or AI API in the stack.
來源:DEV Community · dev.to