Skip to content

yeungjosh/studyblank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

StudyBlank πŸ§ πŸ“š

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.

Android License Min SDK

🌟 Key Features

🧠 ML-Powered Learning

  • 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

πŸ“š Rich Content

  • 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

🎯 Smart Study Sessions

  • 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

πŸ” Secure & Personal

  • 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

πŸ“± Screenshots

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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]   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

Prerequisites

  • Android Studio Arctic Fox or later
  • JDK 8+
  • Android device/emulator (API 15+)
  • Firebase account

Installation

  1. Clone the repository

    git clone https://github.com/yeungjosh/studyblank.git
    cd studyblank
  2. Set up Firebase

    • Go to Firebase Console
    • Create a project and add Android app
    • Package name: com.example.bao48.studyblank
    • Download google-services.json and place in /app/ directory
    • Enable Email/Password authentication
  3. Build and Run

    ./gradlew assembleDebug
    ./gradlew installDebug

    Or open in Android Studio and click β–Ά Run

  4. Start Learning!

    • Create an account
    • Login to see dashboard
    • Start studying with pre-loaded content

🧠 How the ML Algorithm Works

The SM-2 Spaced Repetition Algorithm

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 Scale

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

Why It Works

  1. Forgetting Curve: Reviews are scheduled just before you're likely to forget
  2. Personalized: Each card adapts to YOUR performance
  3. Efficient: More time on hard cards, less on easy ones
  4. Scientific: Based on decades of memory research

πŸ—οΈ Architecture

Technology Stack

  • 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)

Project Structure

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

Database Schema

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    1:N    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    1:N    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Decks   │───────────│ Flashcards  │───────────│ StudyProgress  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    β”‚                        β”‚                           β”‚
    β”‚                        β”‚                           β”‚
    β”œβ”€ name                  β”œβ”€ question                 β”œβ”€ easeFactor  ←─┐
    β”œβ”€ description           β”œβ”€ answer                   β”œβ”€ repetitions   β”‚
    β”œβ”€ category              β”œβ”€ imageUrl                 β”œβ”€ interval      β”‚ ML
    └─ cardCount             └─ deckId                   β”œβ”€ nextReview   β”‚ State
                                                          β”œβ”€ accuracy    β†β”€β”˜
                                                          └─ userId

πŸ“– Documentation

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

πŸŽ“ Usage Guide

First Time Setup

  1. Create Account

    • Open app β†’ "Create Account"
    • Enter email and password
    • Verify email (check spam folder)
    • Login with credentials
  2. Explore Dashboard

    • View statistics (cards due, total cards)
    • Check out features
    • Open navigation drawer (☰)
  3. Start Studying

    • Click "Study" from menu
    • View flashcard question
    • Click "Show Answer"
    • Rate your knowledge (Easy/Good/Hard/Again)
    • Algorithm schedules next review
  4. Browse Decks

    • Click "My Decks" from menu
    • View all available decks
    • See card counts
    • Tap deck to study

Study Best Practices

βœ… 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

πŸ”¬ The Science Behind It

Why Spaced Repetition?

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

Research Backing

  • 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

πŸ› οΈ Development

Build from Source

# Clone
git clone https://github.com/yeungjosh/studyblank.git
cd studyblank

# Build
./gradlew clean
./gradlew assembleDebug

# Install
./gradlew installDebug

# Run tests
./gradlew test

Dependencies

// 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'

🚧 Roadmap

Version 2.0 (Planned)

  • Statistics dashboard with charts
  • Custom deck creation
  • Import/export decks (JSON, CSV)
  • Dark mode
  • Card flip animations
  • Image support for diagrams

Version 3.0 (Future)

  • Cloud sync across devices
  • Collaborative decks
  • Voice input
  • Multiple algorithm options
  • Gamification (achievements, XP)
  • Social features (leaderboards, sharing)

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is for educational purposes. Gray's Anatomy content is used for demonstration.

πŸ™ Acknowledgments

  • SuperMemo: For the SM-2 algorithm
  • Gray's Anatomy: For anatomical content
  • Firebase: For authentication services
  • Android Team: For excellent development tools

πŸ“ž Contact & Support

πŸ“Š Project Stats

  • 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."

About

Started a Quiz App for Android

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages