Local-first macOS study app with FSRS review, decks, study guides, exams, import/export, and a polished SwiftUI desktop interface.
371
stars
10
commits
Swift
primary language
Apr 12, 2026
updated
Local-first spaced repetition for macOS.
Decks, cards, exams, study guides, and FSRS-powered review sessions in one desktop workspace.
As featured on
Revu is an opinionated macOS study app built around real workflows. It uses FSRS scheduling, stores everything locally, and gives you a dense, keyboard-friendly interface that makes serious studying feel organized.
This is a standalone, fully functional version of the app published as open source. The commercial product continues at revu.cards.
![]() | ![]() |
| Learning pulse -- retention, velocity, and workload forecasting | Study session -- multiple-choice with FSRS scheduling |
![]() | ![]() |
| Import decks from Anki, spreadsheets, Markdown, or JSON | Card review with markdown and LaTeX rendering |
Download Revu-1.0.dmg (macOS 14+)
Requirements: macOS 14+, Xcode 16+
Open Revu.xcodeproj in Xcode and run the Revu scheme. No environment variables or backend setup needed.
# Build from the command line
xcodebuild -project Revu.xcodeproj -scheme Revu -destination 'platform=macOS' build
# Run tests
xcodebuild test -project Revu.xcodeproj -scheme RevuTests -destination 'platform=macOS'
App data is stored locally at:
~/Library/Application Support/revu/v1/
├── revu.sqlite3 # Local database
├── attachments/ # Imported media
└── backups/ # Export staging
Revu follows MVVM with actor-isolated persistence and pure scheduling logic:
Revu/Revu/
├── App/ App entry, commands, workspace bootstrap
├── Views/ SwiftUI screens and reusable components (no business logic)
├── ViewModels/ @MainActor state and UI orchestration
├── Services/ Forecasting, session progression, import/export coordination
├── SRS/ FSRS scheduler and review math (pure, no side effects)
├── Store/ Actor-based SQLite persistence, DTOs, repositories
├── Import/ Anki, CSV, Markdown, JSON parsers
└── Export/ Backup generation
RevuTests/ Swift Testing suite
docs/ Architecture, import/export spec, UI design system
Key design decisions:
SQLiteStore handles schema management and concurrency; repositories provide the async API.DesignSystem.swift with reusable components in NotionStyleComponents.swift.See docs/architecture.md for the full module overview, docs/import-export.md for format specs and merge behavior, and docs/ui-design-system.md for the canonical UI rules.
Contributions are welcome. See CONTRIBUTING.md for guidelines.
The short version: keep PRs focused, follow the MVVM split, use design system tokens instead of magic numbers, run the test suite before opening a PR, and check for accidental private strings in changed files.
Bug reports should include macOS version, reproduction steps, and sample data if the issue involves import or scheduling.
GPL-3.0-only. The Revu name and logo are trademarks and are not licensed for reuse under the GPL.
The commercial product with sync, AI features, and the latest updates lives at revu.cards. This repo is the standalone macOS app -- fully functional, open source, and a solid codebase for anyone interested in local-first software, SwiftUI desktop apps, or spaced-repetition tooling.
10 commits
Swift
99.8%
Local-first macOS study app with FSRS review, decks, study guides, exams, import/export, and a polished SwiftUI desktop interface.
371
stars
10
commits
Swift
primary language
Apr 12, 2026
updated
Local-first spaced repetition for macOS.
Decks, cards, exams, study guides, and FSRS-powered review sessions in one desktop workspace.
As featured on
Revu is an opinionated macOS study app built around real workflows. It uses FSRS scheduling, stores everything locally, and gives you a dense, keyboard-friendly interface that makes serious studying feel organized.
This is a standalone, fully functional version of the app published as open source. The commercial product continues at revu.cards.
![]() | ![]() |
| Learning pulse -- retention, velocity, and workload forecasting | Study session -- multiple-choice with FSRS scheduling |
![]() | ![]() |
| Import decks from Anki, spreadsheets, Markdown, or JSON | Card review with markdown and LaTeX rendering |
Download Revu-1.0.dmg (macOS 14+)
Requirements: macOS 14+, Xcode 16+
Open Revu.xcodeproj in Xcode and run the Revu scheme. No environment variables or backend setup needed.
# Build from the command line
xcodebuild -project Revu.xcodeproj -scheme Revu -destination 'platform=macOS' build
# Run tests
xcodebuild test -project Revu.xcodeproj -scheme RevuTests -destination 'platform=macOS'
App data is stored locally at:
~/Library/Application Support/revu/v1/
├── revu.sqlite3 # Local database
├── attachments/ # Imported media
└── backups/ # Export staging
Revu follows MVVM with actor-isolated persistence and pure scheduling logic:
Revu/Revu/
├── App/ App entry, commands, workspace bootstrap
├── Views/ SwiftUI screens and reusable components (no business logic)
├── ViewModels/ @MainActor state and UI orchestration
├── Services/ Forecasting, session progression, import/export coordination
├── SRS/ FSRS scheduler and review math (pure, no side effects)
├── Store/ Actor-based SQLite persistence, DTOs, repositories
├── Import/ Anki, CSV, Markdown, JSON parsers
└── Export/ Backup generation
RevuTests/ Swift Testing suite
docs/ Architecture, import/export spec, UI design system
Key design decisions:
SQLiteStore handles schema management and concurrency; repositories provide the async API.DesignSystem.swift with reusable components in NotionStyleComponents.swift.See docs/architecture.md for the full module overview, docs/import-export.md for format specs and merge behavior, and docs/ui-design-system.md for the canonical UI rules.
Contributions are welcome. See CONTRIBUTING.md for guidelines.
The short version: keep PRs focused, follow the MVVM split, use design system tokens instead of magic numbers, run the test suite before opening a PR, and check for accidental private strings in changed files.
Bug reports should include macOS version, reproduction steps, and sample data if the issue involves import or scheduling.
GPL-3.0-only. The Revu name and logo are trademarks and are not licensed for reuse under the GPL.
The commercial product with sync, AI features, and the latest updates lives at revu.cards. This repo is the standalone macOS app -- fully functional, open source, and a solid codebase for anyone interested in local-first software, SwiftUI desktop apps, or spaced-repetition tooling.
10 commits
Swift
99.8%