English | 中文
A portal to the Bitcoin ecosystem — curated links for wallets, nodes, learning resources, and more.
Website: https://btcnav.org
BTCNav is a static navigation site that groups Bitcoin-related resources into four categories:
beginnerbitcoinlightningnew-things
Built with React, Vite, and Material-UI. Content lives in JSON files and is deployed to GitHub Pages.
Requires Node.js 20+ (same as CI).
yarn
yarn dev # local development server
yarn build # production build → build/
yarn preview # preview the production buildMost contributions only need JSON and image changes.
- Add or edit an entry in the matching file under
public/data/:beginner.jsonbitcoin.jsonlightning.jsonnew-things.json
- Make sure the tag already exists in
public/data/tagList.json(tag,tag_en,category). Add a new tag there first if needed. - Put the logo under
public/static/img-btc/and setlogoorimagein the JSON (path like/img-btc/...; the app serves it from/static). - Or open an issue with the product submit template.
Example entry:
{
"name": "示例",
"name_en": "Example",
"desc": "",
"desc_en": "",
"url": "https://example.com/",
"url_en": "",
"tag": "社区",
"tag_en": "Community",
"logo": "",
"image": "/img-btc/Community/example.png"
}Notes:
- Empty
*_enfields fall back to the primary (name,url, etc.) on the English UI. - If
logois non-empty, it takes priority overimage.
- Delete the full object from the matching category JSON (
beginner.json/bitcoin.json/lightning.json/new-things.json). - If the entry has a dedicated logo under
public/static/img-btc/and no other entry references that path, remove the image file too. - Usually do not remove tags from
tagList.json. Keep unused tags unless you are sure the tag is permanently retired; this avoids sidebar churn.
- Scope: Content changes should normally touch only
public/data/*.jsonandpublic/static/img-btc/. Do not editsrc/or build config unless the task explicitly asks for it. - Placement: Keep entries with the same
tagtogether. Insert new items near existing ones for that tag (typically at the end of that tag group); do not scramble other groups. - Image folders: Prefer the same subdirectory used by similar existing entries (e.g.
Community/,hot/,Software Wallet/). Avoid inventing inconsistent folder names. Encode spaces in paths the same way existing entries do (e.g.Bitcoin%20Optech.jpg). - Fields & formatting: Keep the existing field order and tab indentation. Empty
*_enstrings are fine (English UI falls back to the primary fields). Non-emptylogotakes priority overimage. - New tags: Add
tag/tag_en/categorytotagList.jsonfirst.categorymust be one ofbeginner|bitcoin|lightning|new-things, then add the entry in the matching JSON file. - Done when: JSON parses cleanly; if practical, run
yarn buildonce to confirm the build still passes.
| Path | Purpose |
|---|---|
src/ |
React app (App.jsx, components, services) |
public/data/ |
Navigation and tag JSON |
public/static/img-btc/ |
Resource logos |
.github/workflows/gh-pages.yml |
GitHub Pages deploy |
This project is licensed under the MIT License. Copyright (c) 2025 BTCNAV.org.
Full text: LICENSE.
Pushes to main build and publish the site to GitHub Pages via .github/workflows/gh-pages.yml. The badge below shows the latest workflow status (not a deploy button):