Generate a self-hosted backlog snapshot and dashboard for maintainers.
Project description
Backlog Atlas
Generates a self-hosted backlog snapshot and dashboard for maintainers.
Backlog Atlas keeps the issue tracker as the source of truth and publishes a derived view of one repository's open issues, linked pull requests, status, and recent backlog activity.
What it produces
Outputs land on a dedicated backlog-atlas branch (kept off main so issue churn doesn't pollute the main history):
BACKLOG.md— categorized table of open issues + recently-done.BACKLOG-UPDATES.md— append-only human changelog of new/closed/status/label events.backlog.json— same data asBACKLOG.mdbut structured, consumed by the web UI.updates.jsonl— append-only structured event log (machine-readable changelog). Bootstrapped fromBACKLOG-UPDATES.mdon first run.last_snapshot.json— internal state used to diff against the next run.events.jsonl— log of GitHub issue/PR events queued for the next debounced run.index.html— bundled with the package; copied to thebacklog-atlasbranch by the workflow so a static page can be served via GitHub Pages.
Install
pip install .
# or, once published:
# pip install backlog-atlas
CLI
backlog-atlas update [flags] # regenerate outputs from current GitHub state
backlog-atlas install [flags] # set up backlog-atlas branch + workflow YAML in a target repo
backlog-atlas uninstall [flags] # reverse install
backlog-atlas dump-web --output X # write the bundled index.html (or full web/ dir)
update
Fetches issues/PRs from GitHub via gh and rewrites the backlog files. Useful flags:
--repo owner/name— override repo detection (defaults tosl/gitremote).--dry-run— print what would change without writing.--snapshot-path/--event-log-path/--commit-msg-path— workflow-driven I/O paths.--data-json-path/--updates-jsonl-path— override default output locations.
Defaults write everything under <target-repo>/.backlog-atlas/ so the file system isn't littered.
install
backlog-atlas install --repo owner/name [--pip-spec <pip arg>]
Creates the backlog-atlas branch via the GitHub API (if missing) and drops .github/workflows/update-backlog-atlas.yml into the target repo. The generated workflow does pip install <pip-spec> and runs backlog-atlas update + backlog-atlas dump-web. Default --pip-spec is backlog-atlas (PyPI). Override with a git URL or local path until publication.
uninstall
Removes the workflow YAML and (with confirmation) deletes the backlog-atlas branch.
Web UI
The page is served from the backlog-atlas branch via GitHub Pages: enable Pages → branch backlog-atlas / /. It fetches backlog.json and renders an interactive view with search, category/status filters, sortable columns, dark/light themes, and a fixed bottom activity panel.
For local preview:
backlog-atlas dump-web --output ./preview/
backlog-atlas update --data-json-path ./preview/backlog.json
cd preview && python3 -m http.server 8000
# open http://localhost:8000/
Tests
pytest tests/test_update_backlog.py
Maintainers
See MAINTAINERS.md for local development, testing,
packaging, and publishing notes.
Publishing
Publishing uses PyPI Trusted Publishing from .github/workflows/publish.yml.
Configure the PyPI publisher for:
- repository:
omry/backlog-atlas - workflow:
publish.yml - environment:
pypi
The workflow builds and publishes when a GitHub Release is published.
License
MIT.
Layout
.
├── pyproject.toml
├── README.md
├── MAINTAINERS.md
├── backlog_atlas/
│ ├── __init__.py # CLI + all logic (single-module package for now)
│ ├── config.yaml # default category/keyword/emoji config
│ ├── templates/
│ │ ├── backlog.md.tmpl
│ │ ├── backlog_updates_entry.md.tmpl
│ │ └── workflow.yml.tmpl # GitHub Actions workflow template installed by `install`
│ └── web/
│ └── index.html # bundled static UI
└── tests/
└── test_update_backlog.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file backlog_atlas-0.1.0.tar.gz.
File metadata
- Download URL: backlog_atlas-0.1.0.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6fd9d272b2fe9b274015086b18d7725dffb39936d0f8d360d461678be0b6595
|
|
| MD5 |
cca3c0c92b1c45bf8ccc69ba5a358a49
|
|
| BLAKE2b-256 |
e98e2683b3a49ad096140a78ca36002d9f664e58e651cd8d5ea165139a349ad6
|
Provenance
The following attestation bundles were made for backlog_atlas-0.1.0.tar.gz:
Publisher:
publish.yml on omry/backlog-atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
backlog_atlas-0.1.0.tar.gz -
Subject digest:
a6fd9d272b2fe9b274015086b18d7725dffb39936d0f8d360d461678be0b6595 - Sigstore transparency entry: 1552600350
- Sigstore integration time:
-
Permalink:
omry/backlog-atlas@fd8d6b84443531eca53bdd0efc1e8f52ebdbaf5c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/omry
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fd8d6b84443531eca53bdd0efc1e8f52ebdbaf5c -
Trigger Event:
release
-
Statement type:
File details
Details for the file backlog_atlas-0.1.0-py3-none-any.whl.
File metadata
- Download URL: backlog_atlas-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78090b42be8150850166e6a2ead05b0de84e6acfa391e0fe5e552c1d79abed7d
|
|
| MD5 |
17828609da91576ed71a55941ac145e9
|
|
| BLAKE2b-256 |
0018f61667aeff13274a8c06df74d8ed64fb33fb1a5420fc5d09f0f244d044dc
|
Provenance
The following attestation bundles were made for backlog_atlas-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on omry/backlog-atlas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
backlog_atlas-0.1.0-py3-none-any.whl -
Subject digest:
78090b42be8150850166e6a2ead05b0de84e6acfa391e0fe5e552c1d79abed7d - Sigstore transparency entry: 1552600369
- Sigstore integration time:
-
Permalink:
omry/backlog-atlas@fd8d6b84443531eca53bdd0efc1e8f52ebdbaf5c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/omry
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@fd8d6b84443531eca53bdd0efc1e8f52ebdbaf5c -
Trigger Event:
release
-
Statement type: