A minimal, self-hosted, spaced-repetition flashcard reviewer for intense memory training.
Reviewer Intense is a lightweight web application designed to help you memorize anything using a dynamic, algorithm-driven review schedule. It's built for simplicity, speed, and effectiveness, running entirely on your local machine.
- 🔁 Dynamic Spaced Repetition: Employs a smart scheduling algorithm. Items you forget are rescheduled at a random interval (8-12 positions later) for more frequent review, while items you remember are progressively mastered.
- 🎯 Mastery-Based Tracking: Tracks your progress clearly (
Mastered/Total). An item is considered "mastered" after its first review or after two consecutive correct recalls. - ⌨️ Keyboard-First Design: Navigate entirely with your keyboard for a fluid, uninterrupted review flow.
Space= Show AnswerF= ForgotJ= Remembered
- 🎨 Clean & Adaptive UI: Features a clean, modern interface with automatic light/dark mode support based on your system preferences.
- 📁 Simple File-Based Knowledge Bases: Your flashcards are stored in straightforward
.jsonfiles. Easy to create, edit, and manage. - 🚀 Self-Contained & Local: Your data never leaves your machine. The backend server runs locally, ensuring privacy and eliminating latency.
This is a full-stack application with a clear separation between the frontend and backend.
- Frontend (
index.html,style.css,script.js): A static, responsive web interface that handles user interaction, review logic, and communicates with the backend API. - Backend (
backend.py): A lightweight Flask server that:- Serves the frontend static files.
- Provides an API to list and load knowledge base (
.json) files from a configured directory. - Generates stable IDs for flashcards based on their content.
- Configuration (
config.json): A simple file to set the path to your knowledge base directory.
- Python 3.7+
- Flask (
pip install flask flask-cors)
- Clone or download the project files.
- Configure the
config.jsonfile to point to your desired knowledge base directory (e.g.,"D:\\knowledge_bases"). - Create a knowledge base: Place a
.jsonfile in your configured directory. The file should contain a list of objects with"question"and"answer"fields. An"id"field is optional and will be auto-generated.[ { "question": "What is the capital of France?", "answer": "Paris" }, { "question": "Explain Newton's First Law.", "answer": "An object at rest stays at rest..." } ] - Start the backend server:
python backend.py
- Open your browser and navigate to
http://localhost:1200.
- Download Reviewer-Intense-v1.0.0.zip, extract it.
- Run backend.py with pythonw.exe.
Tip: You can configure it to run automatically at startup using the Task Scheduler.
3. Edit `config.json` to customize:
* `KNOWLEDGE_DIR`: The absolute path to the folder where your `.json` knowledge base files are stored.
4. Run index.html.
> Tip: You can use Edge app mode for better experience.
- Select a Knowledge Base: Use the dropdown in the header to choose a
.jsonfile to review. - Review:
- The question is displayed.
- Press
Spaceto reveal the answer.
- Self-Assess:
- Press
Fif you forgot the answer. The item will be rescheduled soon. - Press
Jif you remembered the answer. The item moves closer to mastery.
- Press
- Track Progress: Watch the
Mastered/Totalcounter in the header grow as you learn.
The application will automatically sequence the cards based on your performance, focusing your time on the items that need the most attention.
reviewer-intense/
├── index.html # Main application page
├── style.css # Application styles (light/dark theme)
├── script.js # Frontend logic & review algorithm
├── backend.py # Flask server & API
├── config.json # Configuration (knowledge base path)
└── (knowledge_bases/) # Your .json flashcard files (location configurable)
This is a long-term project focused on core review functionality. The code is structured for clarity:
- The review scheduler logic is in
script.js(handleActionfunction). - The backend API in
backend.pyis minimal and focused on file operations. - Styling in
style.cssuses CSS custom properties for easy theming.
Feedback and contributions focused on improving the review algorithm, UX, or code structure are welcome.