Skip to main content

Through a command-line interface, the program enables users to input study topics and, using a Python algorithm, calculates future review dates for the selected content. These dates are then exported as a calendar file (.ics), allowing users to easily visualize and manage their review schedule in any compatible calendar application.

Project description

🐋JUBARTE

Python CLI tool for scheduling spaced reviews and exporting a calendar `.ics` file with review dates.

Banner

Description

Jubarte is a command-line utility that allows users to register study topics and generate an initial review plan based on spaced-repetition intervals. The calculated dates can be exported as an iCalendar (.ics) file for import into calendar applications.

The business logic (item creation, scheduling, persistence, and export) is organized in an application layer (App) and modular components (store, scheduler, exporter) that can be replaced or extended.

Features

  • Add a new study topic (title + optional notes).
  • Automatically generate a set of initial reviews using predefined spaced intervals.
  • List items and their upcoming reviews (optionally only those due today).
  • Interactive terminal mode (REPL).
  • Remove item(s) by title.
  • Clear all stored data (items and reviews).
  • Export all scheduled reviews to an iCalendar (.ics) file.

Installation

Pip

pip install jubarte

Git Clone

Requirements: Python >=3.14,<3.15 (as defined in pyproject.toml)

Using Poetry (recommended for development):

git clone https://github.com/HenriqueMelo2007/Jubarte.git
cd Jubarte
poetry install

Usage

The main CLI command is exposed via the entry point jubarte.

  • Add a study topic
jubarte add "Calculus - Derivatives" --notes "Review exercises from chapter 1"

# Expected output:
# Added: Calculus - Derivatives
  • Interactive mode
jubarte interactive

# Starts the interactive command loop defined in jubarte.ui.interactive.
  • List all items
jubarte list

# Example output:
# Calculus - Derivatives | Review date: 2026-03-06
  • List items due today
jubarte list --due-today
  • Export review schedule to .ics
jubarte export review_schedule.ics

# Example output:
#Exported: review_schedule.ics

# If no reviews exist:
# No reviews to export.
  • Remove item(s) by title
jubarte remove "Calculus - Derivatives"

# Example output:
# Removed item(s) with title: Calculus - Derivatives
  • Clear all stored data
jubarte clear

# Output:
# Cleared all items and reviews.
  • Show version
jubarte version

CLI interface

The CLI is built with argparse and supports the following subcommands:

  • add <title> [--notes|-n NOTES] — add a new study topic.

  • interactive — start interactive REPL mode.

  • export <output> — export all scheduled reviews to an .ics file.

  • list [--due-today] — list items and review dates; --due-today filters only reviews scheduled for the current day (UTC).

  • clear — remove all stored items and reviews.

  • remove <title> — remove items that match the provided title.

  • version — print the package version.

Observed behavior from the implementation:

add_item raises ValueError if an item with the same title already exists.

list_items(due_only=True) compares review dates against the current UTC date.

export_ics(path) writes an .ics file using the exporter and prints the result.

Scheduler

SimpleSpacedScheduler generates an initial sequence of reviews using fixed intervals (in days):

[1, 3, 7, 14, 30, 60, 120, 240, 360, 720]

Each interval is added to the current UTC timestamp to determine future review dates.

ICS Exporter

ICSExporter generates a standards-compliant iCalendar file:

  • Datetimes formatted as YYYYMMDDTHHMMSSZ (UTC)
  • Escapes reserved characters in text fields
  • Applies line folding according to RFC 5545
  • Writes files atomically using a temporary file and os.replace

License

MIT

Author

HenriqueMelo2007

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jubarte-0.1.0.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jubarte-0.1.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file jubarte-0.1.0.tar.gz.

File metadata

  • Download URL: jubarte-0.1.0.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.14.2 Windows/11

File hashes

Hashes for jubarte-0.1.0.tar.gz
Algorithm Hash digest
SHA256 71abd138452cf0648a5670523347aa692168343c47c5758bba383cdaf8abba75
MD5 d80be631f94af53511d93ea8901c0aad
BLAKE2b-256 9272a9174f791639415529e372a585c868c050faf763041b1b5901521513c08e

See more details on using hashes here.

File details

Details for the file jubarte-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: jubarte-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.14.2 Windows/11

File hashes

Hashes for jubarte-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e48e9927afbe0319bf22e685343fb13afc959bf304f2924d677dc3b91ac4ee65
MD5 4a415a0c717c597e88452eaa53ea9016
BLAKE2b-256 517441b93ed26d8538a8cffb7d3af655a41566694cbe9fee8fa3ba405f891f4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page