Two things in one place: help your child learn a little every day, and give the grown-ups
a proper paper study workflow: find, save, read, understand, annotate, review and cite.
It all runs in your browser with your own API key. No account, no server.
Live demo · Website · Features · Paper study · Privacy · Quick start · FAQ · 中文
Sidonie (Chinese name: 伴学, "learning companion") is named after my wife and inspired by our child. Every day I watched the two of them use AI tools that weren't really built for them. The tools were too generic for a child's homework and too scattered for a parent who still wants to keep up with research. So I built one place for both. It started with the people closest to me, and if it works for them it may work for your family too.
The mascot is a moon rabbit (玉兔), chosen for Sidonie because my wife loves rabbits; it reads an open book in front of the moon, the rabbit that reads along with your child (陪孩子一起读书的玉兔), and belongs to the FantasyAI Lab mascot family.
Two pillars, one shared foundation:
| For | What you get | |
|---|---|---|
| Help Child (帮孩子学) | your child, with you alongside | A curriculum map, concept and quiz cards, and spaced review. Learn a concept, practise, and come back when it's due. It isn't just a chat box. |
| Paper study (大人的论文学习) | the grown-ups | Paper Radar finds new arXiv papers; a reading list and a paper workspace take you from first skim to highlights, flashcards and a ready-made citation. |
| Chat + Notes | everyone | Multi-model chat and notes that both pillars save into. |
- Private by default. Chats, notes, your child's progress, your papers and your keys stay in your browser's storage.
- Bring your own key. Gemini, DeepSeek, Kimi or Qwen. Reading, highlighting, notes and flashcard review work without any key.
- Curriculum map. A built-in math path runs from Grade 1 to university. You can also generate a custom course for any subject and grade with AI.
- Three kinds of learning cards. Concept explanations (with follow-up questions), multiple-choice quizzes, and interactive HTML visuals.
- Spaced review. Each quiz answer reschedules the topic (1 day, 3 days, then longer). Topics your child struggled with come back sooner and are marked Review Due.
- Motivation without pressure. XP, levels and badges, plus a calendar of every session.
- Daily notes from school. Log the teacher's message (text or photos). AI can explain the key points for the parent or generate a few practice questions.
![]() |
![]() |
| Quiz card with explanation | Badges and the learning calendar |
Paper Radar used to be a feed of new arXiv papers. It is now a full study loop for the grown-ups:
find → save → read → understand → annotate → review → cite
| Step | What Sidonie does |
|---|---|
| Find | Browse the newest arXiv papers by topic (LLM, Vision, Agents, Robotics, ML) or search keywords. AI Deep Read and a Daily Briefing summarise in English or Chinese. |
| Save | A reading list with To read / Reading / Read, tags, filters and sorting. Add papers from the feed, by arXiv ID or URL, or import a local PDF. The header shows real stats: papers, read this week, cards due, study streak. |
| Read | Full text extracted from the PDF in the browser (pdf.js, bundled, no CDN) into sections with a contents sidebar. Bilingual mode puts a paragraph-by-paragraph Chinese or English translation next to the original. |
| Understand | One-click structured analysis (TL;DR, question, method, contributions, results, limitations, prerequisites, who should read it). Ask the paper: answers cite the sections they used, retrieved locally with BM25. |
| Annotate | Select text to highlight in four colours, add a note, or have AI explain or translate the passage. A Markdown note per paper, and Export to Notes collects it all. |
| Review | Key-term flashcards reviewed on the same spaced-repetition schedule as Help Child. Due cards show up as "8 cards to review today". |
| Cite | Copy BibTeX, APA 7 or GB/T 7714-2015 in one click. |
![]() |
![]() |
| Reading list with status, tags and study stats | Structured analysis, grounded in the full text |
Good to know:
- No key needed to study. Reading, highlighting, notes, the reading list, flashcard review and citations all work without an API key. AI buttons explain how to add one.
- Full-text extraction is heuristic. Two-column layouts, headings and hyphenation are handled, but formulas, tables and figure text can come out garbled. Scanned PDFs (images only) have no text to extract, so you get abstract-only mode.
- Text-only providers (DeepSeek, Kimi, Qwen) receive extracted text, trimmed to fit the model's context.
- Where it's stored. The reading list, highlights and flashcards live in
localStorage; PDFs, extracted text, translations, analyses and chats live in IndexedDB. - The AI panels in these screenshots (explanation, analysis, translation, flashcards) show hand-written demo text, not real model output.
Full guide with every tab explained: docs/paper-study.md.
![]() |
![]() |
| Chat with plans, Markdown and Mermaid diagrams | Notes with tags, grid and calendar views |
- Multi-session chat with streaming replies, plus file uploads (PDF, Word
.docx, CSV, TXT and images). - Complex requests show a step-by-step plan. Markdown, code, tables and Mermaid diagrams render inline, and HTML can be previewed live.
- Mention a note with
@to add it as context, and save any answer to Notes. You can export answers as Markdown or Word. - Optional Google Search grounding (Gemini) and image generation ("Draw …", needs a Gemini key).
- English and Chinese UI.
Sidonie is a static web app. There is no Sidonie backend, no account and no analytics.
| What | Where it lives / where it goes |
|---|---|
| Chats, notes, your child's progress, settings, reading list, highlights, flashcards | localStorage in your current browser only |
| Paper PDFs, extracted text, translations, analyses, paper chats | IndexedDB in your current browser only |
| API keys | localStorage in your browser. They are sent only to the provider you pick and are never built into the app bundle |
| AI requests | Straight from your browser to Google Gemini, DeepSeek, Moonshot (Kimi) or Alibaba DashScope (Qwen) |
| Paper Radar searches and PDFs | arXiv. Its metadata API doesn't allow direct browser calls (CORS), so see below |
Paper Radar and CORS. With npm run dev or npm run preview, searches go through a small proxy built into the local Vite server. A static deployment such as GitHub Pages can't run a proxy. There, Sidonie first tries your own proxy (VITE_ARXIV_PROXY, if set) and then falls back to the public allorigins.win proxy. That third-party service sees your search keywords and nothing else, and the app tells you when it was used. Public proxies can be slow or down, so run Sidonie locally for the most reliable Paper Radar. arXiv PDFs do allow cross-origin requests, so full-text reading works on static hosting too, and Add by ID still saves a paper when the metadata API is unreachable.
Tips: use API keys with spending limits. On a shared computer, use Settings → Remove all keys when you're done. Clearing your browser's site data deletes everything, and there is no cloud sync yet.
Requirements: Node.js 20+ and an API key from at least one provider.
git clone https://github.com/melonlee/sidonie.git
cd sidonie
npm install
npm run dev # http://localhost:3000Open Settings → API Keys, paste a key, and you're ready. You don't need an .env file.
| Provider | Models in Sidonie | Get a key |
|---|---|---|
| Google Gemini | Gemini 3 Flash / Pro / Flash Lite, image generation | aistudio.google.com/apikey |
| DeepSeek | DeepSeek V3 (deepseek-chat), R1 (deepseek-reasoner) |
platform.deepseek.com |
| Kimi (Moonshot) | moonshot-v1-8k |
platform.moonshot.cn |
| Qwen (DashScope) | Qwen Plus, Qwen Max | bailian.console.aliyun.com |
Help Child and Paper Radar use Gemini when a Gemini key is set. Otherwise they automatically use the first other provider you've configured.
Other scripts:
npm run build # production build into dist/
npm run preview # serve the build locally (includes the arXiv proxy)
npm run typecheck # tsc --noEmit
npm test # vitest (SRS, BM25, citations, text sections, paper store)The app is fully static, so any static host works.
- GitHub Pages:
.github/workflows/deploy-pages.ymlbuilds and publishes on every push tomain. Turn it on under Settings → Pages → Source: GitHub Actions. The workflow setsVITE_BASE=/<repo-name>/for you. - Elsewhere: run
VITE_BASE=/your/sub/path/ npm run build, or leaveVITE_BASEunset to serve from the root. - Optional: set
VITE_ARXIV_PROXYto a CORS proxy you control (a prefix to which the encoded arXiv URL is appended) so Paper Radar doesn't depend on a public proxy. On GitHub, add it as a repository variable.
Project website: https://melonlee.github.io/sidonie/ (Chinese + English). Source in website/, plain HTML/CSS with no build step. One GitHub Pages deployment serves the website at the root and the app under /app/; see website/README.md.
React 19 · TypeScript · Vite 6 · Tailwind CSS 3 (+ typography) · @google/genai + OpenAI-compatible fetch · react-markdown · Mermaid · mammoth (Word parsing) · pdf.js · localStorage + IndexedDB (idb-keyval) · Vitest
App.tsx app shell: sidebar, chat, settings
components/StudyView.tsx Help Child (curriculum, cards, quizzes, review, daily notes)
components/AcademicView.tsx Paper Radar (arXiv feed, reading list, workspace entry)
components/paper/ paper study: reader, PDF text, analysis, Q&A (BM25), flashcards, citations
services/srs.ts spaced-repetition scheduler shared by Help Child and paper flashcards
components/NotesView.tsx Notes
services/geminiService.ts model routing, streaming, BYOK key handling
constants.ts models, prompts, default curriculum, en/zh strings
docs/assets/brand/ moon-rabbit icons and favicons, logo (incl. 伴学 wordmark), banners, posters (+ SVG masters and build scripts in src/)
website/ static project website, deployable on its own (see website/README.md)
Ideas we'd like to build next. None of these exist yet, and contributions are welcome:
- Several child profiles in one family
- Export / import all data as a JSON backup
- More built-in curricula (Chinese, English, science)
- Installable PWA with offline access to saved content
- A one-file arXiv proxy (e.g. Cloudflare Worker) template
- Automated tests for model routing (the review scheduler and paper tools are covered)
Is it free?
Sidonie itself is free and open source (MIT). You pay your AI provider for what you use with your own key, and many providers offer a free tier.
Do I need to run a server?
No. npm run dev is enough on your own machine, or you can host the static build anywhere. The only optional server piece is a CORS proxy for Paper Radar on static hosts.
Is my API key safe?
The key is stored unencrypted in your browser's localStorage and is sent only to the provider it belongs to. Anyone with access to that browser profile could read it, so use keys with spending limits and remove them on shared devices.
Why does Paper Radar fail on the live demo?
arXiv doesn't allow direct browser requests, and the demo relies on a public CORS proxy that is sometimes unavailable. Run locally (npm run dev) or set VITE_ARXIV_PROXY to your own proxy.
Which ages and subjects does it cover?
The built-in path is mathematics from early primary school to university. "Create Course" asks the model to draft a curriculum for any subject and grade.
Can my child use it alone?
It's designed for a parent and child to use together. AI-generated explanations and quizzes can contain mistakes, so look over the content with your child.
Issues and pull requests are welcome. Before opening a PR, please run:
npm run typecheck && npm test && npm run buildSidonie is built by Melon (李辉), an AI full-stack engineer and the founder of FantasyAI Lab, who builds reliable AI agents, multi-agent systems and practical AI products. Read more at fantasyailab.com and on Melon's profile page.
MIT © 2026 Melon (李辉)











