OpenTime/Examples

Examples

Concrete .ot examples to help you understand and adopt the format in your own tools.

How to Use These Examples

This page shows practical OpenTime snippets you can copy, adapt, and experiment with. They're intentionally small, human-readable YAML fragments that exercise the core ideas of the format:

  • One file, many item types
  • Human-readable first, machine-parseable second
  • Plain text you own
  • Easy to version, diff, sync, and share

At the bottom of the page you'll find a link to a more complete sample.ot file that demonstrates every OpenTime item type.

Example 1: Minimal Task List

This is a minimal OpenTime file that only uses task items. It's a good starting point if you're building a simple task manager or a CLI tool.

# minimal-tasks.ot
opentime_version: "0.2"
default_timezone: "Asia/Tokyo"

items:
  - type: task
    id: task_inbox_1
    title: "Brain dump ideas for Elysium"
    status: todo
    tags: ["inbox", "elysium"]

  - type: task
    id: task_inbox_2
    title: "Book dentist appointment"
    status: todo
    tags: ["life-admin"]

  - type: task
    id: task_inbox_3
    title: "Refactor OpenTime parser"
    status: in_progress
    estimate_minutes: 90
    tags: ["dev", "opentime"]

Even in this simple example, you get the core OpenTime advantages: everything is in one place, human-readable, and trivially parseable as YAML into your language of choice.

Example 2: A Simple Daily Schedule

This example mixes a task, a focus event, and a small recurring reminder to represent a basic day plan.

# daily-plan.ot
opentime_version: "0.2"
default_timezone: "Asia/Tokyo"
generated_by: "Elysium 0.3"

items:
  - type: task
    id: task_write
    title: "Write 500 words"
    status: todo
    due: "2025-12-04"
    estimate_minutes: 45
    tags: ["writing", "daily"]

  - type: event
    id: ev_deepwork
    title: "Deep Work – Novel"
    start: "2025-12-04T09:00:00+09:00"
    end: "2025-12-04T11:00:00+09:00"
    location: "Home Office"
    tags: ["focus", "no-meetings"]

  - type: reminder
    id: rem_water
    title: "Drink water"
    time: "2025-12-04T14:00:00+09:00"
    repeat: "FREQ=HOURLY;COUNT=4"
    tags: ["health"]

A client can render this as a calendar, a list, or both. The format does not dictate the UI; it just provides a portable representation of the underlying intent.

Example 3: A Project with Goals, Tasks, and Events

This example shows how project items can act as containers linking together related goals, tasks, and events.

# novel-project.ot
opentime_version: "0.2"
default_timezone: "Asia/Tokyo"

items:
  - type: goal
    id: goal_novel
    title: "Finish Novel Draft"
    kind: goal
    target_date: "2026-03-31"
    progress: 0.33
    tags: ["writing", "major"]

  - type: task
    id: task_outline
    title: "Outline main story beats"
    status: done
    project_id: proj_novel
    goal_id: goal_novel
    tags: ["writing"]

  - type: task
    id: task_chapter_1
    title: "Draft Chapter 1"
    status: in_progress
    project_id: proj_novel
    goal_id: goal_novel
    tags: ["writing"]

  - type: event
    id: ev_deepwork_novel
    title: "Deep work – worldbuilding"
    start: "2025-12-05T09:00:00+09:00"
    end: "2025-12-05T11:00:00+09:00"
    project_id: proj_novel
    goal_id: goal_novel
    tags: ["focus", "writing"]

  - type: project
    id: proj_novel
    title: "Write My First Novel"
    kind: project
    children:
      - goal_novel
      - task_outline
      - task_chapter_1
      - ev_deepwork_novel
    target_date: "2026-03-31"
    progress: 0.33
    tags: ["long-term", "creative"]

OpenTime doesn't enforce how you interpret project_id and children, but it provides a consistent way to represent these relationships across tools.

Example 4: Extensions with x_* Fields

This example shows how app-specific fields can be stored inside an OpenTime file without breaking interoperability. Other apps can ignore these fields while still preserving them on round-trip.

# extensions-example.ot
opentime_version: "0.2"
default_timezone: "Asia/Tokyo"

items:
  - type: event
    id: ev_example
    title: "Event with extensions"
    start: "2025-12-20T10:00:00+09:00"
    end: "2025-12-20T11:00:00+09:00"
    x_elysium:
      focus_mode: "deep"
      color: "#3B82F6"
      auto_schedule: true
    x_custom_app:
      custom_field: "preserved on round-trip"

The OpenTime specification requires that implementations must not discard unknown fields, including x_* namespaces. This is what makes OpenTime round-trip safe across apps.

Download the Full Sample File

The Elysium project includes a more comprehensive sample.ot file that exercises all seven item types: goals, tasks, habits, reminders, events, appointments, and projects, plus extensions.

Download sample.ot

Tip: store this file in version control, open it in your editor, and experiment with your OpenTime parser. It's a great way to verify that your implementation supports the full range of item types.

Next Steps