Home
Softono
github-project-todo-md

github-project-todo-md

Open source MIT TypeScript
17
Stars
0
Forks
4
Issues
1
Watchers
3 years
Last Commit

About github-project-todo-md

github-project-todo-md is an open-source Node.js library designed to synchronize data between GitHub Project Boards and Markdown Todo lists. It enables bi-directional synchronization, allowing developers to convert GitHub Project Board issues into formatted Markdown text and update the project board status based on changes in Markdown checklist items. The tool supports mapping issues to specific columns such as To Do, In Progress, and Done, while preserving links to the original issues. It includes a feature to handle notes within cards, provided specific options are enabled. The library supports both repository-level projects and user or organization-level projects by adjusting owner parameters accordingly. Key use cases include generating documentation from project boards, automating task tracking workflows, and integrating with note-taking applications like Inkdrop. Installation is performed via npm, and the library requires a valid GitHub token for authentication. It follows the MIT license and is maintai

Platforms

Web Self-hosted

Languages

TypeScript

Links

github-project-todo-md

A library that sync between GitHub Project Board <-> Markdown Todo text.

Example

This library convert https://github.com/azu/github-project-todo-md/projects/1 to following:

## To do

- [ ] [TODO ISSUE](https://github.com/azu/github-project-todo-md/issues/4)


## In progress

- [ ] [PROGRESS ISSUE](https://github.com/azu/github-project-todo-md/issues/3)


## Done

- [x] [DONE ISSUE](https://github.com/azu/github-project-todo-md/issues/5)

Install

Install with npm:

npm install github-project-todo-md

Usage

GitHub Project Board → Markdown

import { fetchProjectBoard, toMarkdown } from "github-project-todo-md";
const json = await fetchProjectBoard({
    owner: "azu",
    repo: "github-project-todo-md",
    projectNumber: 1,
    token: GITHUB_TOKEN
});
const markdown = toMarkdown(json);
assert.strictEqual(
    markdown,
    `## To do

- [ ] [TODO ISSUE](https://github.com/azu/github-project-todo-md/issues/4)


## In progress

- [ ] [PROGRESS ISSUE](https://github.com/azu/github-project-todo-md/issues/3)


## Done

- [x] [DONE ISSUE](https://github.com/azu/github-project-todo-md/issues/5)
`
);

Markdown → GitHub Project Board

Sync Markdown's task status to GitHub Project Board's issue and pull request.

import { syncToProject } from "github-project-todo-md";
const CODE = `## To do

- [ ] [TODO ISSUE](https://github.com/azu/github-project-todo-md/issues/4)


## In progress

- [ ] [PROGRESS ISSUE](https://github.com/azu/github-project-todo-md/issues/3)


## Done

- [ ] [DONE ISSUE](https://github.com/azu/github-project-todo-md/issues/5)
`;
await syncToProject(CODE, {
    owner: "azu",
    repo: "github-project-todo-md",
    projectNumber: 1,
    token: TOKEN
});

Options

  • includesNote: boolean
    • Default: false

If you want to include notes card for syncing, set includesNote to true.

- [ ] title
  - body
    text

title

- body
  text

Current Limitation append a node to first column

User's or Organization's project

User or Organization level project is supported.

You need to pass specific value to owner option.

  • User: owner: "users"
  • Organization: owner: "orgs"
import { syncToProject } from "github-project-todo-md";
const CODE = `## To do

- [ ] [TODO ISSUE](https://github.com/azu/github-project-todo-md/issues/4)


## In progress

- [ ] [PROGRESS ISSUE](https://github.com/azu/github-project-todo-md/issues/3)


## Done

- [ ] [DONE ISSUE](https://github.com/azu/github-project-todo-md/issues/5)
`;
await syncToProject(CODE, {
    owner: "users",
    repo: "azu", // user name
    projectNumber: 1,
    token: TOKEN
});

UseCase

Inkdrop note <-> GitHub Project

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu