Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ dory Public

🧠 Track what you're about to forget β€” a spaced repetition dashboard powered by forgetting curve research.

Notifications You must be signed in to change notification settings

iamonzon/dory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dory

Spaced repetition Android app using the FSRS-4.5 algorithm.

What It Does

Dory helps you remember anything by scheduling reviews based on the forgetting curve β€” the scientifically-observed pattern where memories decay exponentially over time. Unlike flashcard apps, Dory is item-based: you track things you want to remember (articles, concepts, skills) and periodically review them with a 4-point rating (Again, Hard, Good, Easy). The FSRS algorithm computes optimal review intervals, and items are color-coded by urgency (red/yellow/green) so you always know what needs attention.

Tech Stack

Component Technology
Language Kotlin
UI Jetpack Compose, Material 3
Navigation Navigation Compose (type-safe routes via kotlinx.serialization)
Database Room (SQLite)
Preferences DataStore
Background work WorkManager
Algorithm FSRS-4.5 (pure Kotlin implementation)
DI Manual (AppContainer)
Min SDK 36 (Android 15)
Build Gradle 9.0.1, Kotlin 2.0.21, KSP

Architecture

MVVM + Repository pattern in a single :app module.

UI (Compose Screens)
  ↓ observes StateFlow
ViewModels
  ↓ calls
Repositories (ItemRepository, ReviewRepository, CategoryRepository, SettingsRepository)
  ↓ reads/writes
Room Database + DataStore

The FSRS algorithm lives in algorithm/ as pure Kotlin with no Android dependencies, making it independently testable.

Project Structure

com.iamonzon.dory/
β”œβ”€β”€ algorithm/          FSRS-4.5 engine (Fsrs, FsrsParameters, Rating)
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ db/             Room database, DAOs, entities, type converters
β”‚   β”œβ”€β”€ model/          Domain models (Item, Review, Category, ReviewUrgency)
β”‚   β”œβ”€β”€ repository/     Business logic (Item, Review, Category, Settings repos)
β”‚   └── mock/           Mock data for development (to be removed)
β”œβ”€β”€ navigation/         Route definitions and NavGraph
β”œβ”€β”€ notifications/      Daily digest worker, scheduler, notification channels
β”œβ”€β”€ ui/
β”‚   β”œβ”€β”€ dashboard/      Dashboard + Item Edit screens
β”‚   β”œβ”€β”€ creation/       Item creation flow
β”‚   β”œβ”€β”€ review/         Review + Review Session screens
β”‚   β”œβ”€β”€ profile/        Profile, Categories, Archived Items, Advanced Settings
β”‚   β”œβ”€β”€ onboarding/     First-launch onboarding screens
β”‚   β”œβ”€β”€ actionhub/      Action Hub dialog
β”‚   β”œβ”€β”€ components/     Shared UI components (ItemCard, UrgencyIndicator, TopAppBar)
β”‚   └── theme/          Material 3 theme (colors, typography)
β”œβ”€β”€ AppContainer.kt     Manual DI container
β”œβ”€β”€ DoryApplication.kt  Application class
└── MainActivity.kt     Single activity entry point

Building

Requires JDK 21 (for Gradle daemon) with Java 11 target compatibility.

# Set JAVA_HOME if needed
export JAVA_HOME=/path/to/jdk-21

# Debug build
./gradlew assembleDebug

# Run unit tests
./gradlew test

Spec Docs

The spec/ directory contains the full project specification:

File Contents
spec/README.md Index and quick reference
spec/main-idea.md Vision, item model, navigation, review mechanics, color system
spec/use-cases-and-nfr.md 11 use cases (UC1-UC11), data model, edge cases, NFRs
spec/algorithm.md FSRS-4.5 formulas, parameters, rating scale, per-category config
spec/architecture.md MVVM + Repository pattern, package structure, data flow, DI
spec/implementation-plan.md 6-phase build order with progress tracking

Current Status

  • Phases 1-3 (domain models, FSRS algorithm, UI shells, Room database, repositories): Complete
  • Phases 4-6 (wire UI to real data, notifications, polish): In progress β€” ViewModels are created, but screens still use mock data. Integration (Stream 6) is the next step. See docs/streams/stream-6-integration.md for details.

About

🧠 Track what you're about to forget β€” a spaced repetition dashboard powered by forgetting curve research.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages