Thank you for your interest in Bani Flow! Contributions of all kinds are welcome: data corrections, new lineage edges, new tradition instances, code improvements, and documentation fixes.
The most impactful contributions are improvements to carnatic/data/musicians.json.
To correct an existing edge or node:
Open an issue describing the correction with a source URL (Wikipedia, book, etc.). If you are comfortable with JSON, submit a pull request directly.
To add a musician or lineage edge:
- Check that the musician clears the significance threshold described in
carnatic/README.md— Sangeetha Kalanidhi recipient, or a necessary topological link between two significant nodes. - Add the node to
nodes[]and any edges toedges[]inmusicians.json. - Run
bani-renderand verify the graph looks correct. - Submit a pull request with the updated
musicians.jsonand regeneratedgraph.html.
To add YouTube recordings:
Annotate each link with the video title (the agent/contributor cannot identify
a recording from its URL alone). See the YouTube recording format in
carnatic/README.md.
Bani Flow is designed to generalise. To add a new tradition (e.g. Hindustani, jazz, ballet, martial arts):
- Create a new top-level directory:
hindustani/,jazz/, etc. - Copy the data model from
carnatic/data/musicians.json— adapt node fields and era/instrument vocabularies to your tradition. - Copy and adapt the render package (colours, shapes, label tiers).
- Add a
README.mdin the new directory explaining the tradition and its significance criteria. - Open a pull request. Include at least 10 nodes and 8 edges so the graph is meaningful from the start.
carnatic/render/— HTML/CSS/JS improvements, new layout options, accessibilitycrawl.py— better Wikipedia extraction, support for non-English Wikipediasserve.py— any improvements to the local server- New tooling: tests, CI, linting
Corrections to any README.md, CONTRIBUTING.md, or inline docstrings are
always welcome.
git clone https://github.com/vyaas/bani-flow.git
cd bani-flow
pip install -e ".[dev]"The [dev] extras install pytest and ruff.
# Lint
ruff check .
# Run tests (if any exist)
pytest- One concern per PR. Data changes and code changes should be separate PRs.
- Regenerate
graph.htmlafter any change tomusicians.jsonor the render package. Include the regenerated file in the PR. Runbani-renderto regenerate. - Cite your sources. Every new edge needs a
source_urlpointing to a Wikipedia page or other verifiable source. - Follow the confidence scale defined in
carnatic/README.md. Speculative edges (confidence < 0.70) must carry anoteexplaining the uncertainty. - Do not hand-edit
graph.html. It is a derived artefact — always regenerate viabani-render.
- Python: formatted with
ruff(line length 100, target Python 3.10). - JSON: 2-space indent,
ensure_ascii=False(non-ASCII names are preserved as-is). - Commit messages: imperative mood, present tense (
Add Lalgudi Jayaraman node, notAddedorAdding).
Use GitHub Issues. For data issues, please include:
- The node
idor edge(source, target)pair in question - The correction you are proposing
- A source URL
By contributing, you agree that your contributions will be licensed under the MIT License.