This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
FocusDesk is a study planner, Pomodoro timer and notes-to-quiz tool, and I built it for my friend Dev.
Dev has three problems when he studies: he has no good way to quiz himself, he struggles to manage his time, and he doesn't keep track of what he's actually done. The result is that he wastes a lot of his own study time without noticing.
FocusDesk tackles each one:
- Time management: a Pomodoro timer with focus sessions, short breaks and long breaks, so studying comes in clear blocks.
- Tracking: a task list with estimated pomodoros per task, plus sessions per day, total focus minutes and a day streak, so he can see what he really did.
- Quizzing: he pastes his notes and a local AI model writes a multiple-choice quiz from them. Missed questions come back on a spaced-repetition schedule (1, 3, 7, 14, 30 days).
- Weak-spot memory: the app tracks which topics he misses and tells the model to ask more about those in the next quiz.
Demo
[https://drive.google.com/file/d/1rOFtYl4n40zQJUg0XBQRRXAOr7iMpgIQ/view?usp=sharing]
The demo shows pasting notes, generating a quiz, answering questions, the weak-spot tracking and the focus timer.
Code
Cipher-Von-shivang-3787
/
focusDesk
Study timer and notes-to-quiz app powered by a local open model (DeepSeek-R1 via Ollama). Private and offline.
FocusDesk
Study planner + Pomodoro timer + notes-to-quiz powered by DeepSeek-R1 (open weights, MIT license) running locally with Ollama. Claude (Anthropic API) is an optional extra provider. Installable as a PWA. No backend, no API keys, no accounts.
Choose your AI
Open Settings. The default is DeepSeek via Ollama, which keeps everything on your machine. You can switch to Claude by pasting an API key (stored only in your browser).
Run it
ollama pull deepseek-r1:8b
OLLAMA_ORIGINS="*" ollama serve
python3 -m http.server 8000 # then open http://localhost:8000
How the quiz works
- Paste notes (or load a .txt/.md file) and press Make quiz.
- The local model writes multiple-choice questions as JSON.
- Every card goes into a spaced-repetition deck (Leitner boxes: 0, 1, 3, 7, 14, 30 days). Missed cards drop back to box 0.
- Review due cards replays whatever is due today.
Using it on a phone
Host the folder…
The README has the setup steps for Windows. It needs Ollama and one downloaded model, then you open index.html.
How I Built It
The app is plain HTML, CSS and JavaScript in a single file, with no backend and no accounts. Tasks, stats and the quiz deck are saved in the browser, and there is a backup and restore file in Settings.
The AI runs locally through Ollama:
- Model: the default is DeepSeek-R1 (8B, distilled), running on my own laptop.
- Quiz generation: the app sends the pasted notes to the local model and asks for multiple-choice questions as JSON, with a short topic name and a one-line explanation for each question.
- Handling the model's output: DeepSeek-R1 writes out its reasoning before it answers, so the app strips that text before parsing the JSON. It retries once if the reply isn't valid JSON, and it shuffles the answer choices because small models tend to put the right answer first.
- Spaced repetition: each question goes into a Leitner-style deck that decides when it should come back.
- Weak-spot memory: the model has no memory between requests, so the app keeps a score for each topic and sends the weakest topics along with the next quiz request.
- Swappable model: the model name is a text field in Settings, so any Ollama model can be used. Claude through an API key is also available as an optional provider, but the project is built around the local open model.
I built this with the help of an AI coding assistant, and I tested it and set it up myself on a Windows 11 laptop.
Why Does Open Innovation Matter?
- Privacy: Dev's study notes stay on his own computer. Nothing is uploaded to a server.
- It works offline: after the one-time model download, the whole app runs with no internet. I tested this with the connection switched off and the quizzes still worked.
- No cost and no accounts: there are no API fees or keys to manage, which matters for a student.
- Control: DeepSeek can be swapped for another open model by changing one setting. With a closed API, I couldn't choose where the data goes or what model runs.
What Dev Said
I showed it to Dev and he said it was very helpful. He also noticed it kept working with the internet disconnected, and that this helped him stay focused, because there was nothing else on the screen pulling his attention.
Limits and What's Next
- A small local model is slower than a cloud API. DeepSeek-R1 thinks before it answers, so a quiz can take a minute or more on a laptop.
- Small models sometimes write weak questions or badly formatted answers, so a retry is occasionally needed.
- Quizzes come from pasted text only. PDF upload is the next thing I'd add.
- Data is stored per browser, so moving to another device means using the backup file.
Top comments (0)