This repository goal is to have the more complete database of Bitcoin books, so they can be compared, helping users to choose wisely. The database is open-source, meaning anyone can collaborate to improve and correct any wrong data or add new items.
Inside the items directory, there is a JSON file for each book, with all the data about it. To collaborate (adding missing data, fixing wrong data or adding a new book), just fork the repository and send a pull request with the changes.
Before sending the pull request, please run the following commands to format the JSON:
cd scripts/
node json-format.js
The following is a sample of the JSON format:
{
"id": "book-id",
"name": "Book Name",
"purchasable": true,
"category-name": {
"feature-name-1": {
"value": "YES",
"flag": "positive",
"supported": true,
"texts": [
"Optional contextual text describing the feature"
],
"links": [
{
"title": "Optional contextual link referencing official documentation",
"url": "url"
}
]
},
"feature-name-2": {
"value": "Experimental",
"flag": "neutral",
"supported": true
},
"feature-name-3": {
"value": "NO",
"flag": "negative",
"supported": false
}
}
}JSON fields:
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | true | The book id. It matches with the JSON file name. |
| name | string | true | The book name. |
| purchasable | boolean | true | If the book can be purchased |
| category-name.feature-name-1.value | string | yes | The visible feature value. For example: "YES", "NO", "Experimental", etc |
| category-name.feature-name-1.flag | string | no | The flag of the book feature. Possible values: "positive", "neutral" or "negative" |
| category-name.feature-name-1.supported | boolean | no | If the feature is supported by the book. This is used to filter by this feature |
| category-name.feature-name-1.texts | array of strings | no | Official Texts with info about the feature |
| category-name.feature-name-1.links | array of objects | no | Official links with info about the feature |
| category-name.feature-name-1.links.title | string | yes | The title of the link |
| category-name.feature-name-1.links.url | string | yes | The url of the link |
On each pull request, the JSON files are verified to be sure they are valid and well-formatted. You can run the following command inside the scripts directory to format the JSON before sending a pull request:
node json-format.js
All the features supported:
| Category | Category Id | Feature | Feature Id |
|---|---|---|---|
| Basic Information | basic-information | Publication Year | year |
| Basic Information | basic-information | Publisher | publisher |
| Basic Information | basic-information | Pages | pages |
| Authorship | authorship | Authors | authors |
| Authorship | authorship | Website | website |
| Authorship | authorship | X (Twitter) | |
| Authorship | authorship | Nostr | nostr |
| Authorship | authorship | YouTube | youtube |
| Publication Format | format | Ebook | ebook |
| Publication Format | format | Paperback | paperback |
| Publication Format | format | Hardcover | hardcover |
| Publication Format | format | Audiobook | audiobook |
The thebitcoinhole.com website offers a Bitcoin Books Comparison using this database.
Sponsor this project to help us get the funding we need to continue working on it.