Skip to content

NeonD00m/quizzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quizzy

CI Release License: MIT

A terminal-first, Quizlet-like flashcard tool written in Rust. Import decks (Quizlet JSON, simple JSON/CSV/TSV), study with multiple modes (cards, learn, gamble), and keep learning stats locally in SQLite.

Why Quizzy?

  • Local-first: your decks and learning stats stay on your machine.
  • Multiple study modes: quick flashcards, an adaptive "learn" quiz mode, and a playful gamble/gauntlet mode.
  • Lightweight CLI written in Rust - good for learning and reducing bloat during when you have to be locked in.

Features

  • Import from Quizlet JSON (helper included) or load TSV/CSV/JSON text files.
  • Save decks and per-card stats locally using SQLite (rusqlite).
  • Study modes:
    • learn: multiple-choice or written quizzes with progress tracking and optional stats commit.
    • cards: front/back flashcards with optional shuffle.
    • gamble / gauntlet: game-like sessions to spice up review.
  • Command-driven CLI powered by clap.
  • Platform-aware storage path via dirs-next.
  • Detects and offers to recover failed session files on startup.

Quick install

# Build locally
cargo build --release

# Install locally to your cargo bin
cargo install --path .

# Or run the built binary directly
./target/release/quizzy

Quickstart examples

# Create a new deck from a CSV
quizzy new mydeck examples/worldCapitals.csv

# Import from a Quizlet link into a saved deck named "My Quizlet" (requires browser)
quizzy import "My Quizlet" "https://quizlet.com/1234567890/some-study-deck-flash-cards/"

# List saved decks (not file-backed decks)
quizzy list

# Study
quizzy learn mydeck            # interactive quiz mode
quizzy cards mydeck --shuffle  # flashcard mode
quizzy gamble mydeck           # play in the "study casino"

Tutorial deck

  • A small tutorial deck is included in examples/tutorial.csv. To load and play it:
quizzy new tutorial examples/tutorial.csv
quizzy learn tutorial

Importing from Quizlet

  • Quizzy currently supports the Quizlet web JSON format (see src/core/import.rs) and the companion importing.md.
  • If Quizlet’s API changes, the helper will prompt you to save the browser JSON response and import from that file.

Configuration and storage

  • Data is stored in an SQLite DB located using dirs-next patient conventions (platform-specific).
  • The DB schema and storage logic live in src/core/storage.rs.
  • On startup Quizzy checks for unsaved/failed session files and can attempt to commit them to storage.

Development

  • Formatting: cargo fmt
  • Linting: cargo clippy
  • Testing: cargo test
  • Quick full-check (CI parity):
cargo fmt -- --check && cargo clippy --all-targets --all-features -- -D warnings && cargo test --workspace

Repository badges

  • The CI badge at the top references the Actions workflow at .github/workflows/ci.yml.
  • The Release badge comes from GitHub releases.
  • The License badge reflects the included LICENSE (MIT). This project is licensed under the MIT License — see LICENSE in the repo root.

Planned/available GitHub Actions

  • CI: run cargo fmt -- --check, cargo clippy, and cargo test on push/PR.
  • Release: on tag push (e.g. v0.1.0) build release binaries for Linux/macOS/Windows and attach zipped artifacts to the GitHub Release. (See .github/workflows/ci.yml and .github/workflows/release.yml in the repo for the actual workflows.)

Contributing

  • Open issues or PRs - small improvements, importers, or bug fixes are welcome.
  • Please run the formatter and clippy before submitting PRs.
  • Add small example input files for new importers under examples/.

License

  • This repository is licensed under the MIT License. See LICENSE for details.

Contact

About

Study sessions, brought to your terminal. No distracting ads or wifi problems- just you and your flashcards.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages