This project is a web dashboard created to study and understand the Bitcoin protocol. It interacts directly with a running bitcoind or bitcoin-qt node, using it as a reference implementation to explore blockchain data, network status, and transaction handling.
The project follows Clean Architecture principles to ensure scalability, maintainability, and testability:
- Controllers: Handle HTTP requests and responses.
- Services: Contain business logic and orchestrate data flow.
- Repositories: Handle data access and communication with external systems (Bitcoin Core).
- Dependency Injection: Dependencies are injected to facilitate testing and decoupling.
- Displays general information about the Bitcoin blockchain, network, and mempool.
- Shows the latest blocks and the current top transactions in the mempool.
- Allows users to look up blocks by hash (including a shortcut for the Genesis Block).
- Allows users to look up transactions by ID (TXID).
- Runtime: Node.js (ES Modules)
- Framework: Express.js
- Templating: EJS
- Testing: Native Node.js Test Runner (
node:test) - Bitcoin Client:
bitcoin-core
- Node.js (v20+ recommended for native test runner support).
- A running Bitcoin Core node. RPC must be enabled in your
bitcoin.conffile. - RPC credentials (username and password).
-
Clone the repository:
git clone https://github.com/jmolinasoler/Novadash.git cd Novadash -
Install dependencies:
npm install
-
Create a
.envfile in the project root and add your Bitcoin Core RPC credentials:RPC_HOST=http://127.0.0.1 RPC_PORT=8332 RPC_USER=your_rpc_username RPC_PASSWORD=your_rpc_password
-
Start the application:
node index.js
-
Open your web browser and go to
http://localhost:3000.
The project uses the native Node.js test runner. To run the tests:
npm testIf you encounter issues connecting to your Bitcoin Core node, please refer to the TROUBLESHOOTING.md guide.
This project is licensed under the MIT License.