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:
| Feature | Purpose |
|---|---|
| Due dates | Date-based task tracking and overdue detection |
| Recurrence | Human-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
| Aspect | Joy | Jyn |
|---|---|---|
| Workspace | One .joy/ per repository | Nearest .jyn/ directory |
| Item types | epic, story, task, bug, rework, decision, idea, job | Always "task" |
| Statuses | new, open, in-progress, review, closed, deferred | open, closed, archived |
| Recurrence | Not supported | RRULE-based repeating tasks |
| Due dates | Not a core feature | First-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.yamlThe 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.