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.
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 inpyproject.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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71abd138452cf0648a5670523347aa692168343c47c5758bba383cdaf8abba75
|
|
| MD5 |
d80be631f94af53511d93ea8901c0aad
|
|
| BLAKE2b-256 |
9272a9174f791639415529e372a585c868c050faf763041b1b5901521513c08e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e48e9927afbe0319bf22e685343fb13afc959bf304f2924d677dc3b91ac4ee65
|
|
| MD5 |
4a415a0c717c597e88452eaa53ea9016
|
|
| BLAKE2b-256 |
517441b93ed26d8538a8cffb7d3af655a41566694cbe9fee8fa3ba405f891f4a
|