Skip to content

03 — Notion task board sync #2

Description

@gardusig

Summary

Epic: shuttle notion — sync tasks between an existing Notion database and local markdown (data/tasks/).

Local repository is the source of truth. Shuttle never creates databases, views, formulas, or board layout.

CLI convention (local-centric)

Direction Verb Command
Notion → local ingest shuttle notion ingest
Local → Notion deploy shuttle notion deploy
Full loop sync shuttle notion sync (ingest then deploy)
Remote cleanup cleanup shuttle notion cleanup --yes

Hidden legacy: download / upload, and older export / import.

Configuration

notion:
  database_id: your-database-id
  task_directory: data/tasks
  cleanup_before_deploy: false
  properties:
    title: Name
    status: Status
    priority: Priority
    tags: Tags
    id: ID
    created: Created
    updated: Updated

Auth: NOTION_TOKEN (integration token). Never commit tokens.

Local task format

One file per task: data/tasks/{id}.md — YAML frontmatter + # Description / # Notes / # Checklist.

Current scaffold (shipped)

  • CLI: ingest / deploy / sync / cleanup with token + database_id validation
  • Hidden legacy aliases (download, upload, export, import)
  • shuttle/services/notion_sync.py stubs (NotImplementedError)
  • data/tasks/.gitkeep
  • Scripts: scripts/notion/ingest.sh, deploy.sh, sync.sh, cleanup.sh
  • docs/notion.md, README section
  • Real Notion API (children below)

Child issues

Non-goals

Database creation, views, filters, formulas, relations, bidirectional sync (v1).

Definition of done (epic)

  • Ingest/deploy/cleanup work against real Notion API
  • CLI verbs match local-centric convention
  • Deterministic, Git-friendly markdown output
  • Property mapping configurable in YAML
  • Integration tests with mocked HTTP

Execution

Close children #20#23; link PRs to this epic.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions