An Intelligent Flashcard App for Anatomy & Biology Mastery
StudyBlank is an Android application that uses machine learning-powered spaced repetition to help students master anatomy and biology. Built with the scientifically-proven SM-2 algorithm, it optimizes your study schedule based on your performance, ensuring maximum retention with minimum effort.
- Spaced Repetition Algorithm (SM-2): Intelligent scheduling adapts to YOUR learning pace
- Adaptive Difficulty: Cards automatically adjust based on your performance
- Priority Queue: Focus on cards that need review most urgently
- Performance Analytics: Track accuracy and progress for every flashcard
- Pre-loaded Gray's Anatomy Decks: 35+ flashcards across 3 systems
- Skeletal System (15 cards)
- Muscular System (10 cards)
- Nervous System (10 cards)
- Ready-to-study content from day one
- Optimized Review Timing: Reviews scheduled just before you forget
- Instant Feedback: Rate your performance (Easy, Good, Hard, Again)
- Progress Tracking: See due cards, total cards, and accuracy metrics
- Session Management: Study only what's due, when it's due
- Firebase Authentication: Secure user accounts with email/password
- Local Data Storage: Room database for fast, offline access
- Per-user Progress: Your learning journey is uniquely yours
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Login Screen │ │ Dashboard │ │ Study Session │
│ │ │ │ │ │
│ [ Email ] │ │ 📊 Due: 12 │ │ ┌─────────────┐ │
│ [ Password ] │ │ 📚 Total: 35 │ │ │ Question? │ │
│ │ │ │ │ └─────────────┘ │
│ [ LOGIN ] │→│ 🧠 ML Learning │→│ [ Show Answer] │
│ [CREATE ACCT] │ │ 📚 Gray's Anat │ │ │
│ │ │ 📊 Progress │ │ [Easy][Good] │
│ │ │ │ │ [Hard][Again] │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Android Studio Arctic Fox or later
- JDK 8+
- Android device/emulator (API 15+)
- Firebase account
-
Clone the repository
git clone https://github.com/yeungjosh/studyblank.git cd studyblank -
Set up Firebase
- Go to Firebase Console
- Create a project and add Android app
- Package name:
com.example.bao48.studyblank - Download
google-services.jsonand place in/app/directory - Enable Email/Password authentication
-
Build and Run
./gradlew assembleDebug ./gradlew installDebug
Or open in Android Studio and click ▶ Run
-
Start Learning!
- Create an account
- Login to see dashboard
- Start studying with pre-loaded content
StudyBlank uses the SuperMemo 2 algorithm, a proven method for optimizing memory retention:
┌─────────────────────────────────────────────────────────────┐
│ LEARNING WORKFLOW │
└─────────────────────────────────────────────────────────────┘
You study a flashcard
│
▼
Rate your answer (0-5)
│
├─────────────┬─────────────┐
▼ ▼ ▼
Wrong (0-2) Okay (3-4) Perfect (5)
│ │ │
▼ ▼ ▼
Review in Review in Review in
10 minutes 1-2 days 5+ days
│ │ │
└─────────────┴─────────────┘
│
▼
Algorithm adjusts:
• Ease Factor (difficulty)
• Review Interval
• Next Review Date
| Rating | Button | Meaning | Next Review |
|---|---|---|---|
| 5 | Easy | Perfect recall | 5+ days |
| 4 | Good | Correct after thought | 2-3 days |
| 3 | Good | Correct with difficulty | 1-2 days |
| 2 | Hard | Incorrect but familiar | 10 minutes |
| 1 | Hard | Barely remembered | 10 minutes |
| 0 | Again | Complete blackout | 1 minute |
- Forgetting Curve: Reviews are scheduled just before you're likely to forget
- Personalized: Each card adapts to YOUR performance
- Efficient: More time on hard cards, less on easy ones
- Scientific: Based on decades of memory research
- Language: Java
- Database: Room (SQLite)
- Auth: Firebase Authentication
- UI: Material Design, CardView, RecyclerView
- Algorithm: SM-2 Spaced Repetition
- Min SDK: Android 4.1 (API 16)
- Target SDK: Android 9.0 (API 28)
studyblank/app/src/main/java/com/example/bao48/studyblank/
├── algorithm/ ← ML Core
│ └── SpacedRepetitionAlgorithm.java
├── database/ ← Data Layer
│ ├── AppDatabase.java
│ ├── DatabaseInitializer.java
│ ├── DeckDao.java
│ ├── FlashcardDao.java
│ └── StudyProgressDao.java
├── models/ ← Entities
│ ├── Deck.java
│ ├── Flashcard.java
│ └── StudyProgress.java ← ML State
├── Activities (root package) ← UI Layer
│ ├── home.java (Login)
│ ├── createAccount.java (Register)
│ ├── MainActivity.java (Dashboard)
│ ├── StudyActivity.java (Study)
│ └── DeckListActivity.java (Browse)
└── app/src/main/res/ ← Resources
├── layout/
│ ├── activity_study.xml
│ ├── activity_deck_list.xml
│ └── content_main.xml
└── values/
├── strings.xml
└── colors.xml
┌──────────┐ 1:N ┌─────────────┐ 1:N ┌────────────────┐
│ Decks │───────────│ Flashcards │───────────│ StudyProgress │
└──────────┘ └─────────────┘ └────────────────┘
│ │ │
│ │ │
├─ name ├─ question ├─ easeFactor ←─┐
├─ description ├─ answer ├─ repetitions │
├─ category ├─ imageUrl ├─ interval │ ML
└─ cardCount └─ deckId ├─ nextReview │ State
├─ accuracy ←─┘
└─ userId
For detailed technical documentation, see DOCUMENTATION.md:
- Complete architecture diagrams
- ML algorithm deep dive with formulas
- Database schema with ERD
- User flow diagrams
- Code structure guide
- API reference
- Testing guide
-
Create Account
- Open app → "Create Account"
- Enter email and password
- Verify email (check spam folder)
- Login with credentials
-
Explore Dashboard
- View statistics (cards due, total cards)
- Check out features
- Open navigation drawer (☰)
-
Start Studying
- Click "Study" from menu
- View flashcard question
- Click "Show Answer"
- Rate your knowledge (Easy/Good/Hard/Again)
- Algorithm schedules next review
-
Browse Decks
- Click "My Decks" from menu
- View all available decks
- See card counts
- Tap deck to study
✅ DO:
- Study daily for consistency
- Be honest with ratings
- Review all due cards
- Take breaks between sessions
❌ DON'T:
- Cram all cards at once
- Always click "Easy" (defeats the algorithm)
- Skip days (breaks the schedule)
- Study when tired
Spaced repetition is based on the forgetting curve, discovered by psychologist Hermann Ebbinghaus:
Memory Retention Over Time
100% ├─┐
│ └─┐ ← With spaced repetition
│ └─┐ (reviews at optimal times)
50% │ └─┐─────────────────
│ └─┐
│ └─┐ ← Without review
0% └───────────└──────────────────────────
0 1 3 7 14 30 days
- Ebbinghaus (1885): Forgetting curve research
- Wozniak (1990): SuperMemo algorithm development
- Cepeda et al. (2006): Meta-analysis on spacing effects
- Dunlosky et al. (2013): Rated spaced repetition as highly effective
# Clone
git clone https://github.com/yeungjosh/studyblank.git
cd studyblank
# Build
./gradlew clean
./gradlew assembleDebug
# Install
./gradlew installDebug
# Run tests
./gradlew test// Room Database
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
// Firebase
implementation 'com.google.firebase:firebase-auth:11.0.4'
// UI
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.android.support:cardview-v7:26.1.0'
// JSON
implementation 'com.google.code.gson:gson:2.8.2'- Statistics dashboard with charts
- Custom deck creation
- Import/export decks (JSON, CSV)
- Dark mode
- Card flip animations
- Image support for diagrams
- Cloud sync across devices
- Collaborative decks
- Voice input
- Multiple algorithm options
- Gamification (achievements, XP)
- Social features (leaderboards, sharing)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is for educational purposes. Gray's Anatomy content is used for demonstration.
- SuperMemo: For the SM-2 algorithm
- Gray's Anatomy: For anatomical content
- Firebase: For authentication services
- Android Team: For excellent development tools
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Total Code: ~3,000 lines
- Activities: 5
- Database Tables: 3
- Pre-loaded Cards: 35
- Supported Languages: English
- Min Android Version: 4.1 (Jelly Bean)
- Target Android Version: 9.0 (Pie)
Made with ❤️ for students struggling with anatomy
"The best time to plant a tree was 20 years ago. The second best time is now. The same applies to learning."