JynJyn Docs

Architecture

Jyn's internal architecture - crate structure, data model, and integrations.

Crate Structure

Jyn is built on top of Joy's shared library. The jyn-core crate extends joy-core with personal task features like recurring tasks and due dates. The jyn-cli crate provides the user-facing command-line interface.

What jyn-core Adds

Jyn extends the base Joy item model with features specific to personal task management:

FeaturePurpose
Due datesDate-based task tracking and overdue detection
RecurrenceHuman-friendly input (every Monday, every 2 weeks) compiled to RRULE for storage

Data Model

Jyn uses a simplified version of the Joy data model. A workspace is the nearest .jyn/ directory, found the way Git finds its repository, and all items are always of type "task".

Key Differences from Joy

AspectJoyJyn
WorkspaceOne .joy/ per repositoryNearest .jyn/ directory
Item typesepic, story, task, bug, rework, decision, idea, jobAlways "task"
Statusesnew, open, in-progress, review, closed, deferredopen, closed, archived
RecurrenceNot supportedRRULE-based repeating tasks
Due datesNot a core featureFirst-class with overdue tracking

Configuration

Jyn has its own config layer on top of joy-core. Two YAML files are merged at load time with the project-local layer winning over the personal global layer, and both winning over built-in code defaults:

code defaults  <  ~/.config/jyn/config.yaml  <  ./.jyn/config.yaml

The schema is strict (serde(deny_unknown_fields) at every level), so jyn config set validates the merged file before writing and rejects typos instead of silently persisting them. Config resolution lives in jyn-core::config and is consumed by jyn-cli to gate library-level features - starting with the joy-core fortune output via the output.fortune and output.fortune-category keys.

Integrations

Today Jyn writes its tasks as YAML files in .jyn/. It does not call Git itself; you version the directory with Git if you want history and backup. Sync and dispatch are planned and drawn dashed below.

Integration Details

  • Git - All data is stored as YAML in .jyn/. Commit it like any other file to get history and backup.
  • CalDAV (planned) - The platform will expose Jyn tasks via CalDAV for sync with calendar and reminder apps such as Apple Reminders and Google Tasks.
  • Joy dispatch (planned) - Work from a Joy backlog will be able to land in the Jyn list of the person it is assigned to.