A static, community-maintained directory of Bitcoin open-source organizations. Filterable by type — powered entirely by a JSON file anyone can PR into.
Live site: nkatha23.github.io/Anzagallery
Anzagallery is open source — contributions are welcome.
The only file you need to edit is data/orgs.json.
- Fork this repository on GitHub.
- Open
data/orgs.json. - Add your entry using the template below (entries are displayed alphabetically by name).
- Commit:
git commit -m "feat: add <org name>" - Open a pull request — CI will validate your entry automatically.
- Once merged, the site updates within minutes.
{
"id": "org-name",
"name": "Org Display Name",
"type": "Project",
"description": "One or two sentences describing what this organization does.",
"website": "https://example.org",
"github": "https://github.com/org-name",
"community": "https://discord.com/invite/..."
}| Field | Required | Notes |
|---|---|---|
id |
Yes | Kebab-case, must be unique across all entries |
name |
Yes | Display name shown on the card |
type |
Yes | One of: Project, Product, Education, Design |
description |
Yes | One or two sentences |
website |
No* | Full URL — at least one of website or github is required |
github |
No* | Full GitHub org or repo URL |
community |
No | Discord, Telegram, Slack, or forum link |
* At least one of website or github must be present.
| Type | When to use |
|---|---|
Project |
Open protocols, libraries, node implementations |
Product |
Applications, wallets, payment processors, tools |
Education |
Courses, games, learning resources, developer programs |
Design |
Design systems, UX research, visual resources |
Every pull request that touches data/orgs.json runs two checks automatically:
- JSON syntax —
python -m json.toolcatches malformed JSON immediately. - Schema validation —
.github/scripts/validate_orgs.pyverifies:- All required fields are present.
- No duplicate IDs.
typeis one of the four valid values.- At least one of
websiteorgithubis present.
The deploy to GitHub Pages only runs on merge to main, after both checks pass.
No build step required. Serve the project root with any static file server:
# Python
python3 -m http.server 8000
# Node
npx serve .Then open http://localhost:8000 in your browser.
Opening
index.htmldirectly as afile://URL will not work because the app usesfetchto loaddata/orgs.json, which browsers block onfile://.
.
├── index.html # Single-page app shell
├── styles.css # Slate + white design system
├── js/
│ └── app.js # Filter, search, and render logic
├── data/
│ └── orgs.json # The community-maintained data file
├── .github/
│ ├── scripts/
│ │ └── validate_orgs.py # CI validation script
│ └── workflows/
│ └── validate.yml # GitHub Actions: validate + deploy
└── README.md
MIT