FlashMind — AI-Powered Study Tool
Turn any notes, PDF, web page, or topic into structured study notes, flashcards, and a Turkish-style exam — with an AI tutor, FSRS spaced repetition, and device sync. Free, no signup, runs in the browser.
🔗 Live: 0xmortuex.github.io/FlashMind
What it does
Give FlashMind some material and it generates a complete study set in one streamed call — you watch the stage checklist tick off and the flashcard counter climb while it writes:
- 📝 Notes — a clean summary with sections, key terms, important dates, common mistakes, and simple diagrams. Read-aloud (TTS) included.
- 🃏 Flashcards — 3D flip-card deck with a drag-to-rate study mode (swipe right = Got it, left = Again, up = Hard) scheduled by FSRS, plus one-click cloze cards built from your notes' key terms. Add, edit, and delete cards by hand (with an optional image), study in typed-recall mode (type the answer, get a verdict before rating), or hit ⚡ Cram the night before — hardest cards first, schedules untouched.
- 📋 Exam (Turkish style) — mixed-format exam with two modes: Practice (per-question feedback, optional timer) and Simulation (deneme sınavı) — one overall countdown, optik-form question navigator, results only at the end. Results include a per-topic accuracy breakdown, and the question bank only grows: generate more questions any time (deduped automatically).
- 📄 Exams from real papers — upload a real exam or MEB sample booklet (PDF or photos): FlashMind learns its style and konu dağılımı, files its readable questions into the bank (keyed from the booklet's answer key, or AI-solved and sent to the answer checker), writes new questions in the same style, and weights adaptive practice by the topic distribution. Open-ended answers can be photographed in handwriting (OCR, correct, then AI-graded), and a photographed graded paper becomes a lost-marks report (per topic + the 3 things to fix first) with its mistakes filed, plus one-click flashcards and practice. Links to the official free sources (MEB ÖDSGM, OGM Materyal, MEBİ) are built in.
- 📕 Mistake notebook (yanlış defteri) — every wrong answer is filed automatically; retake just your mistakes, ask the AI for a harder retake built from them, and correct answers clear them.
- 📊 Stats — day streak with streak freezes (earned every 7 study days, auto-bridge a missed day), review charts, a 6-month activity heatmap, a 7-day due forecast, exam-score history, and an AI weekly report.
- 💬 Ask AI — a tutor with your material as context; one click on any wrong exam answer asks it "explain this". Feynman mode flips the roles: you explain the topic, the AI grades your explanation and lists what's missing. Struggling cards (2+ lapses) get a one-click AI mnemonic.
- ☀️ Today queue — one session that pulls every due card from all your decks, with a home-screen banner, PWA app-icon badge, and an opt-in daily reminder notification.
- 📅 Exam planner — give a deck its exam date and FlashMind works backwards: FSRS pulls every review in before the exam, new cards are spread across the days left (the last day is kept for a final review + cram), and you get a day-by-day plan, a readiness score (predicted recall on exam day), a countdown on the deck, and an "Upcoming exams" strip on the home screen with one-tap Start today's plan.
- 🧠 Mind map — an interactive, collapsible concept map of the set: built instantly from the notes' outline, or rebuilt by the AI as a richer concept map. Click a node to expand it and read its explanation, or ask the AI about it.
- 🎧 Audio overview — a podcast-style recap to listen to on the go: a two-host deep dive, a one-host brief, or an offline quick recap of your notes. Played with your device's voices (one per host), with speed control and a clickable transcript.
- 🧪 Interactive labs — hands-on simulations built from your material: graphs with sliders, projectiles and pendulums, a circuit you can rewire (series/parallel, open switches), a timeline to scrub. Each lab has a goal and live-checked challenges. The AI only fills in a declarative spec; formulas run in FlashMind's own small expression evaluator (no
eval). Starter labs work offline. - 🎬 Video lessons — a narrated slide lesson per topic: the AI writes a storyboard (bullets, formulas, diagrams, narration) and the player shows it like a video with transitions, browser narration, captions, speed, slide markers and keyboard controls. Export as a printable/PDF slide handout.
- 📎 Sources & citations — build one set from several sources (a PDF + a web page + a YouTube video + your notes), toggle each in or out of the AI's context, and re-read them in a viewer. AI answers quote the passages they're based on; each quote is checked against your actual material and anything that can't be found is flagged. Every notes section can show the source passage it came from.
- ∑ Math & formulas —
$...$/$$...$$LaTeX in notes, cards, exams and chat is typeset with KaTeX (lazy-loaded, cached for offline use); generation asks for formulas in LaTeX. - 🖼️ Image occlusion — turn a labelled diagram into cards: draw boxes over the labels, and each box becomes a "what's hidden here?" card (hide all / hide one modes).
- 🎙️ Voice tutor — talk out loud with an AI tutor about the open set (Gemini 3.8 Live): it quizzes you, lets you explain a topic back and finds the gaps, or answers your questions, with a live transcript of both sides. The worker mints a single-use token locked to the tutor setup, so the browser never holds the Gemini key.
- 📷 Check my work — a voice-tutor mode for maths, physics and chemistry: point the camera (front/back or any camera) at your written solution and talk it through; the tutor checks each step, names the first wrong one and coaches you instead of giving the answer. Frames (~640px JPEG) go up about once a second only while you talk or when the page changes.
- 🏫 Lecture companion — record a lesson: live transcript (Gemini Live transcription, with the browser's speech recognition as a fallback), teacher cues like "bu sınavda çıkar" flagged as they happen, and every ~5 minutes the new part becomes notes, flashcards and exam alerts appended to a new or the open deck, with the transcript saved as a source. Sessions renew seamlessly past Gemini's 15-minute limit; up to 90 minutes.
- ⏱️ Focus timer — a Pomodoro timer (25/5, 50/10, 15/3) that survives reloads; finished focus blocks are logged in Stats and count toward your streak.
Not sure? Hit Try an example on the home screen for an instant sample deck — no waiting, no API call.
Inputs
- Paste text (notes, a transcript, a textbook chapter).
- Upload a PDF — text extracted client-side with PDF.js.
- A photo — point your camera at a textbook page or your notes; text is extracted client-side with Tesseract.js OCR (English + Turkish).
- Upload JSON — re-import a FlashMind export, or load any JSON as raw text.
- Upload CSV/TSV — flashcards from our export, Anki exports, or any front/back sheet.
- A URL — the backend fetches the page and extracts its readable text.
- A YouTube link — the backend pulls the video's caption transcript (prefers your UI language, falls back to English/auto-generated).
- Just a topic — type "Photosynthesis" and it teaches the subject.
Turkish-style exam (Türk sınav sistemi)
| Type | Turkish | Notes |
|---|---|---|
| Multiple choice | Çoktan seçmeli | 5 options (A–E) — YKS/lise format |
| True / False | Doğru-Yanlış | single statement |
| Fill in the blank | Boşluk doldurma | typed answer, accepts synonyms |
| Matching | Eşleştirme | match term ↔ definition |
| Open-ended | Açık uçlu / klasik | written answer, AI-graded (practice mode) |
Scoring follows Turkish conventions: Doğru / Yanlış / Boş counts and a Net for the multiple-choice section (net = doğru − yanlış ⁄ 4), a 0–100 puan shown on an animated gauge, and a letter grade. Answer with the keyboard (A–E, Enter for next), filter types, shuffle, set timers, review every answer, and export a printable exam sheet with an answer key.
Study features
- 🧠 FSRS spaced repetition — the modern scheduler (FSRS-4.5) plans each card's optimal review date; lapses feed weak-spot targeting, which generates new cards for the categories you struggle with.
- 🧬 Personal memory model — every review is logged (compact, capped per deck); after 200 spaced reviews FlashMind fits your own initial stabilities and forgetting rate by maximum likelihood and schedules with them. Stats shows predicted vs actual recall and a per-topic forecast for exam day.
- 🎯 Exam predictor — for decks with an exam date: predicted score with a 90% range, plus "the next 2 hours that gain the most marks" (cards ranked by expected marks per minute).
- 🕸️ Concept map — one graph across all decks from key terms and categories, with mastery per concept and prerequisite gaps ("you keep missing X because you haven't mastered Y"); an optional AI pass adds links.
- 🧭 Autopilot coach — "What should I do now?" picks and launches your best next 20 minutes (reviews, high-yield cards, mistakes retake, adaptive exam, voice quiz, mind map) and suggests the next step afterwards.
- 🎚️ Difficulty dial — generate the same material as Simple, Standard, or Advanced (exam-prep depth).
- 📚 Deck library — every set is saved locally; rename, duplicate, search, export, delete, group into folders, or merge decks (review progress carries over); mastery rings and due counts at a glance.
- 🔁 Device sync — account-less: enable sync, enter the private code on another device, and decks/stats merge (deletions propagate too). Disabling wipes the cloud copy.
- 💾 Backup — one file backs up the whole library including schedules, stats, and mistake banks; drop it on any FlashMind to restore.
- 🔍 Search, 🔗 permanent share links, 📤 exports (Markdown, PDF, Anki-compatible CSV, printable exam, JSON).
- 🌍 Community gallery — optionally list a shared deck publicly; the home screen shows the latest community decks, one tap to open.
- 🏫 Class mode — account-less classes: a teacher gets a public join code and a private teacher code, sends decks/exams (with an optional due date) to the class, and sees a students × topics heatmap, the weakest topics, who's behind, and a one-click revision exam on the weakest topics. Students join with the code and a nickname; class decks stay updated without losing their own FSRS progress, and only small aggregated progress reports are sent.
- ⚔️ Quiz battles — Kahoot-style live games on a deck's exam questions: the host shows a room code, link and QR; players join on their phones, everyone gets the same question with a countdown, faster correct answers score more, with a live leaderboard and a podium. Timing, scoring and the answer key stay on the server (a Cloudflare Durable Object per room).
Interface
- ⌘ Command palette — Ctrl+K for tabs, actions, and decks; ? shows all keyboard shortcuts.
- 🌗 Light & dark theme with an animated circular reveal; motion everywhere is GPU-cheap and respects
prefers-reduced-motion. - 🔊 Opt-in sounds & haptics — WebAudio-synthesized, off by default.
- 📱 Mobile-first PWA — bottom navigation, swipe gestures, installable, offline for saved decks.
- ♿ Accessible — focus-trapped dialogs, ARIA roles, keyboard support throughout.
- 🌍 Full English and Turkish UI; generated content matches the source language.
How it's built
- Frontend — vanilla HTML/CSS/JS, no framework, no build step. Hosted on GitHub Pages.
- Backend — a Cloudflare Worker (
flashmind-worker) that proxies generation/grading to OpenRouter (Claude) with SSE streaming, stores shares and sync blobs in KV, extracts text from URLs, and rate-limits per IP. The API key lives only as a Worker secret. - Storage — decks, FSRS schedules, mistake banks, and stats persist in
localStorage; sync/share blobs in Worker KV under random bearer codes. - Charts & scheduling — hand-rolled: inline-SVG charts and mind map, canvas confetti, and an FSRS-4.5 implementation with exam-date capping — no libraries. The only CDN dependencies are PDF.js, and two lazy-loaded ones: Tesseract.js for OCR (only when you drop a photo) and KaTeX (only when a formula appears).
- AI features without new endpoints — mind maps, audio scripts and citations ride the Worker's existing
chataction with structured-JSON prompts; audio is spoken by the browser's Speech Synthesis. - CI — Puppeteer smoke checks plus data and browser regression suites run on every push (badge above).
Run locally
It's static — open index.html, or:
npx serve .
Generation/sharing/sync call the hosted Worker. To run your own backend, deploy flashmind-worker (see its README) and point WORKER_URL in js/api.js at it. Run the tests with Node.js 20 or newer. Install the browser test dependencies and start a local server:
npm install --no-save puppeteer serve
npx serve -l 4173 .
In a second terminal:
node --test tests/regression.js
node tests/smoke.js
node tests/browser-regression.js
node tests/contrast.js
The regression suites use mocked AI/sync responses; they do not upload study material. See AUDIT.md for the audit findings, fixes, and remaining architectural work.
Privacy
Material is processed on demand and not stored server-side. Your library lives in your browser. Shared sets and sync data are stored (by you, on demand) under random codes until you delete them — disabling sync deletes your cloud copy.
License
MIT