Skip to content

LisandroDiMeo/kado-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kado

CI Coverage ktlint detekt License Release

Kotlin Compose Multiplatform Android minSdk 24 iOS ESP32

Google Play Website Sponsor

Home Deck Review Settings

Kado

Kado is an open-source spaced repetition flashcard app built with Kotlin Multiplatform for Android and iOS. It helps you learn and retain knowledge using your choice of SM2 or FSRS scheduling algorithms, with support for rich text cards, Anki deck imports, and a companion ESP32 hardware device.

Features

Spaced Repetition & Review

  • SM2 and FSRS scheduling algorithms with per-deck selection
  • Four-button rating system (Again / Hard / Good / Easy) with interval preview
  • 3D card flip animation with crossfade content transitions

Deck Management

  • Create and manage flashcard decks with daily new card limits
  • Deck partitioning — split large decks into sub-decks for focused study
  • Deck cloning and reversed deck creation
  • Bulk editing with saved find/replace rules (plain text and regex)

Card Content

  • Rich text / HTML rendering (bold, italic, colors, headings, lists)
  • Image support in cards
  • Adjustable card font scaling
  • Import Anki .apkg decks with template rendering and media extraction

Customization & Platform

  • Dark and light themes
  • Localization (English, Spanish)
  • Text-to-speech for card pronunciation (Android)
  • Tablet-friendly layout
  • Kotlin Multiplatform — shared logic across Android and iOS

Analytics & Hardware

  • Learning statistics — calendar heatmap, daily review history with cumulative trend, rating breakdowns, and hour-of-day distribution, filterable by deck and 30d / 90d / 1y range
  • Sync decks to an ESP32 hardware device over WiFi

Documentation

Download

Stores

Coming Soon

You can download the latest Android APK from the Releases page.

iOS builds require building from source via Xcode (see below).

Building from Source

Android

./gradlew :androidApp:assembleDebug

iOS

Open the iosApp/ directory in Xcode and run from there.

Code Quality

This project enforces code quality through automated tooling:

Tool Purpose Command
ktlint Kotlin linter & formatter ./gradlew ktlintCheck
detekt Static analysis ./gradlew detekt
Kover Code coverage ./gradlew :composeApp:koverHtmlReport

Setup Git Hooks

./hooks/enable_hooks.sh

This installs:

  • pre-commit — runs ktlint + detekt (blocks commit on violations)
  • pre-push — runs unit tests + version tag validation (blocks push on failure)

Auto-fix Formatting

./gradlew ktlintFormat

Running Tests

./gradlew :composeApp:testAndroidHostTest

Coverage Report

./gradlew :composeApp:koverHtmlReport
open composeApp/build/reports/kover/html/index.html

Project Structure

Directory Purpose
composeApp/ Shared KMP module (commonMain + platform actuals)
androidApp/ Android app entry point
iosApp/ iOS Xcode project

ESP32 Hardware Module

Kado supports syncing flashcard decks to an ESP32-based hardware device for offline review. See the ESP32 Hardware Guide for the device communication protocol, .ald format specification, and setup instructions.

Support the Project

If Kado is useful to you, consider supporting its development:

GitHub Sponsors Ko-fi Cafecito

License

This project follows GLP v3. See the LICENSE file for details.

About

Kado App is an open source flash card app written in Kotlin and available for iOS and Android

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors