diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c72132..6ce816b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ All notable changes to CoreCraft are documented here. - Integration test suite (`tests/integration/`) — 34 tests covering full HTTP stack via TestClient: Activity 1 endpoints, ZMQ→EventStore→API pipeline (Activity 2), and PSBT end-to-end flow (Activity 3). - Expanded Prometheus metrics: per-path request counters (`corecraft_requests_by_path_total`), last request latency gauge (`corecraft_last_request_latency_ms`), ZMQ event counters for Activity 2 (`corecraft_zmq_blocks_total`, `corecraft_zmq_tx_total`), and PSBT transaction counter for Activity 3 (`corecraft_psbt_sent_total`). -- `docs/docker-troubleshooting.md`: macOS Apple Silicon section (Rosetta 2, memory allocation, `exec format error`) and Windows WSL 2 section (integration, permissions, path issues). +- `docs/en-US/docker-troubleshooting.md`: macOS Apple Silicon section (Rosetta 2, memory allocation, `exec format error`) and Windows WSL 2 section (integration, permissions, path issues). +- Bilingual documentation structure with `docs/pt-BR/`, `docs/en-US/`, and `docs/README.md`. - README badges (GitHub Release, CI status, Docker/GHCR). - README "O que você verá" section with expected `docker compose up` output and smoke test output. @@ -33,7 +34,7 @@ All notable changes to CoreCraft are documented here. - `scripts/smoke-test.sh`: rewritten with wait-for-services loop, per-endpoint PASS/FAIL, `--timeout` flag, and correct exit code. - `README.md`: prominent 3-command quickstart block at the top; docs section now shows beginner-first ordering. - `.env.example`: comments explaining each variable. -- `docs/getting-started.md`: TL;DR 3-step block at the top. +- `docs/en-US/getting-started.md`: TL;DR 3-step block at the top. ## [1.1.0] — 2026-05-03 @@ -79,7 +80,7 @@ All notable changes to CoreCraft are documented here. - `GET /tx/{txid}` — interpreted transaction state: `broadcast → mempool → confirmed → unknown` - Frontend dashboards for all three activities (plain HTML/CSS/JS, polling-based) - Docker Compose configuration to run all three backends simultaneously -- Documentation: `docs/setup-bitcoin-core.md`, `docs/rpc-zmq.md`, `docs/deploy-vps.md`, `docs/deploy-cloudflare-tunnel.md`, `docs/smoke-tests.md`, `docs/validacao-ao-vivo.md` +- Documentation: `docs/pt-BR/` and `docs/en-US/` language tracks, including setup, RPC/ZMQ, deploy, smoke tests, and validation evidence. - MIT licence ### Fixed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ab59dc..7ecbc5e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,7 @@ pip install -r requirements.txt uvicorn app.main:app --port 8001 --reload ``` -See [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) for Bitcoin Core configuration. +See [`docs/en-US/setup-bitcoin-core.md`](docs/en-US/setup-bitcoin-core.md) for Bitcoin Core configuration. ## Project conventions @@ -29,7 +29,7 @@ See [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) for Bitcoin Core ## Testing -Test against a live `bitcoind -regtest` node. The smoke tests in [`docs/smoke-tests.md`](docs/smoke-tests.md) cover the full flow for each activity. +Test against a live `bitcoind -regtest` node. The smoke tests in [`docs/en-US/smoke-tests.md`](docs/en-US/smoke-tests.md) cover the full flow for each activity. ## Submitting changes diff --git a/README.en-US.md b/README.en-US.md index ff4db5b..da314fc 100644 --- a/README.en-US.md +++ b/README.en-US.md @@ -26,7 +26,7 @@ > ``` > > Open the activities at `http://localhost:8001`, `8002`, and `8003`. -> Full guide, including the non-Docker setup: [**docs/getting-started.md**](docs/getting-started.md) +> Full guide, including the non-Docker setup: [**docs/en-US/getting-started.md**](docs/en-US/getting-started.md) ### What you should see after `docker compose up` @@ -53,13 +53,13 @@ Check that everything is working: # ══════════════════════════════════════ # CoreCraft — Smoke Tests # ══════════════════════════════════════ -# Atividade 1 — Mempool Snapshot (porta 8001) +# Activity 1 — Mempool Snapshot (port 8001) # ✔ GET /api/mempool/summary (200) # ✔ GET /api/blockchain/lag (200) -# Atividade 2 — Eventos ZMQ (porta 8002) +# Activity 2 — ZMQ Events (port 8002) # ✔ GET /api/events/summary (200) # ... -# RESULTADO: 7/7 endpoints OK +# RESULT: 7/7 endpoints OK ``` --- @@ -93,7 +93,7 @@ flowchart LR bitcoind --- wallets ``` -Full technical diagrams: [`docs/architecture.md`](docs/architecture.md). +Full technical diagrams: [`docs/en-US/architecture.md`](docs/en-US/architecture.md). --- @@ -126,7 +126,7 @@ Every backend exposes `/health`, `/metrics`, and JSON logs with `correlation_id` | Wallet-scoped RPC | Activity 3 | Calls made under `/wallet/` so balance, UTXO, signing, and history operations stay isolated per wallet. | | Interpreted state | Activity 3 | Domain layer that translates node responses into states such as `broadcast`, `mempool`, `confirmed`, and `unknown`. | -Deeper references: [`docs/rpc-zmq.md`](docs/rpc-zmq.md), [`docs/architecture.md`](docs/architecture.md), and [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md). +Deeper references: [`docs/en-US/rpc-zmq.md`](docs/en-US/rpc-zmq.md), [`docs/en-US/architecture.md`](docs/en-US/architecture.md), and [`docs/en-US/setup-bitcoin-core.md`](docs/en-US/setup-bitcoin-core.md). --- @@ -183,14 +183,20 @@ corecraft/ │ └── atividade_3/ Activity 3 unit tests │ ├── docs/ -│ ├── getting-started.md ← start here (Docker + manual, all operating systems) -│ ├── setup-bitcoin-core.md Bitcoin Core installation and configuration -│ ├── docker-stack.md full Docker stack reference -│ ├── architecture.md design decisions and trade-offs -│ ├── rpc-zmq.md RPC vs ZMQ concepts -│ ├── smoke-tests.md how to verify endpoints manually -│ ├── deploy-vps.md deploy on Ubuntu 22.04 VPS -│ └── deploy-cloudflare-tunnel.md public exposure through Cloudflare +│ ├── README.md bilingual documentation index +│ ├── pt-BR/ documentation in Brazilian Portuguese +│ │ ├── getting-started.md +│ │ ├── architecture.md +│ │ ├── setup-bitcoin-core.md +│ │ ├── docker-stack.md +│ │ └── smoke-tests.md +│ ├── en-US/ documentation in English (US) +│ │ ├── getting-started.md start here (Docker + manual) +│ │ ├── architecture.md architecture and technical decisions +│ │ ├── setup-bitcoin-core.md Bitcoin Core setup +│ │ ├── docker-stack.md Docker stack reference +│ │ └── smoke-tests.md endpoint validation +│ └── assets/ screenshots and visual evidence │ ├── CHANGELOG.md version history and fixes ├── CONTRIBUTING.md contribution guide @@ -213,7 +219,7 @@ corecraft/ | `pip` | up to date | Installs `fastapi`, `uvicorn`, `requests`, `python-dotenv`, `pyzmq` | | Node.js | 18+ locally, 22.12 in CI/Docker | React/Vite frontends | -Bitcoin Core setup guide: [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) +Bitcoin Core setup guide: [`docs/en-US/setup-bitcoin-core.md`](docs/en-US/setup-bitcoin-core.md) --- @@ -222,7 +228,7 @@ Bitcoin Core setup guide: [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core ### 1. Configure Bitcoin Core once ```bash -# bitcoin.conf — see docs/setup-bitcoin-core.md for the full content +# bitcoin.conf — see docs/en-US/setup-bitcoin-core.md for the full content bitcoind -regtest -daemon bitcoin-cli -regtest createwallet wallet1 bitcoin-cli -regtest createwallet wallet2 @@ -271,7 +277,7 @@ corecraft-suite-atividade-3 | INFO: Application startup complete. corecraft-caddy | serving initial configuration ``` -Compose starts `bitcoind` in regtest mode, initializes wallets, mines initial funds to `wallet1`, runs all three backends, and exposes the interfaces through Caddy. Details: [`docs/docker-stack.md`](docs/docker-stack.md). +Compose starts `bitcoind` in regtest mode, initializes wallets, mines initial funds to `wallet1`, runs all three backends, and exposes the interfaces through Caddy. Details: [`docs/en-US/docker-stack.md`](docs/en-US/docker-stack.md). Main variables: @@ -303,7 +309,7 @@ LOG_LEVEL=INFO | POST | `/tx/send` | 3 | Creates, signs, and broadcasts a tx through PSBT | | GET | `/tx/{txid}` | 3 | Interpreted transaction state | -Full smoke tests with `curl`: [`docs/smoke-tests.md`](docs/smoke-tests.md). +Full smoke tests with `curl`: [`docs/en-US/smoke-tests.md`](docs/en-US/smoke-tests.md). --- @@ -311,16 +317,16 @@ Full smoke tests with `curl`: [`docs/smoke-tests.md`](docs/smoke-tests.md). | Document | Contents | |----------|----------| -| [`docs/architecture.md`](docs/architecture.md) | Design decisions, implementation patterns, and trade-offs | -| [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) | `bitcoin.conf`, regtest, wallets, ZMQ, funds generation | -| [`docs/rpc-zmq.md`](docs/rpc-zmq.md) | Pull (RPC) vs push (ZMQ) concepts and rationale per activity | -| [`docs/deploy-vps.md`](docs/deploy-vps.md) | Ubuntu 22.04 VPS deployment with `tmux` and `ufw` | -| [`docs/deploy-cloudflare-tunnel.md`](docs/deploy-cloudflare-tunnel.md) | Public exposure through Cloudflare Tunnel or ngrok | -| [`docs/smoke-tests.md`](docs/smoke-tests.md) | Activity-specific `curl` smoke tests | -| [`docs/docker-stack.md`](docs/docker-stack.md) | Full Docker stack, variables, and Make commands | -| [`docs/docker-troubleshooting.md`](docs/docker-troubleshooting.md) | RPC auth, healthcheck, ZMQ, and Caddy diagnostics | -| [`docs/validacao-ao-vivo.md`](docs/validacao-ao-vivo.md) | Full validation output against Bitcoin Core v31.0 | -| [`docs/demo-publica.md`](docs/demo-publica.md) | Public demo evidence through Cloudflare Tunnel (2026-05-03) | +| [`docs/en-US/architecture.md`](docs/en-US/architecture.md) | Design decisions, implementation patterns, and trade-offs | +| [`docs/en-US/setup-bitcoin-core.md`](docs/en-US/setup-bitcoin-core.md) | `bitcoin.conf`, regtest, wallets, ZMQ, funds generation | +| [`docs/en-US/rpc-zmq.md`](docs/en-US/rpc-zmq.md) | Pull (RPC) vs push (ZMQ) concepts and rationale per activity | +| [`docs/en-US/deploy-vps.md`](docs/en-US/deploy-vps.md) | Ubuntu 22.04 VPS deployment with `tmux` and `ufw` | +| [`docs/en-US/deploy-cloudflare-tunnel.md`](docs/en-US/deploy-cloudflare-tunnel.md) | Public exposure through Cloudflare Tunnel or ngrok | +| [`docs/en-US/smoke-tests.md`](docs/en-US/smoke-tests.md) | Activity-specific `curl` smoke tests | +| [`docs/en-US/docker-stack.md`](docs/en-US/docker-stack.md) | Full Docker stack, variables, and Make commands | +| [`docs/en-US/docker-troubleshooting.md`](docs/en-US/docker-troubleshooting.md) | RPC auth, healthcheck, ZMQ, and Caddy diagnostics | +| [`docs/en-US/live-validation.md`](docs/en-US/live-validation.md) | Full validation output against Bitcoin Core v31.0 | +| [`docs/en-US/public-demo.md`](docs/en-US/public-demo.md) | Public demo evidence through Cloudflare Tunnel (2026-05-03) | Each activity has its own detailed README: @@ -374,7 +380,7 @@ Tests use `monkeypatch` to isolate each domain module. `FakeRPC` simulates the B - **Structured 503 errors.** When the node is offline, all routes that depend on it return `{"detail": {"error": "node_unavailable", "detail": "..."}}` with HTTP 503. - **Minimal observability.** Logs are emitted as JSON with `service` and `correlation_id`; every backend exposes `/health` and `/metrics`. - **Isolated frontends.** Each activity has its own React/Vite/TypeScript frontend. Relative URLs and Caddy prefixes allow direct access (`:8001`/`:8002`/`:8003`) or access through `/atividade-N/`. -- Full architecture decisions are documented in [`docs/architecture.md`](docs/architecture.md). +- Full architecture decisions are documented in [`docs/en-US/architecture.md`](docs/en-US/architecture.md). --- @@ -403,13 +409,13 @@ cloudflared tunnel --url http://localhost:8003 ngrok http 8001 ``` -Details for installation, permanent VPS deployment, and firewall setup: [`docs/deploy-cloudflare-tunnel.md`](docs/deploy-cloudflare-tunnel.md) and [`docs/deploy-vps.md`](docs/deploy-vps.md). +Details for installation, permanent VPS deployment, and firewall setup: [`docs/en-US/deploy-cloudflare-tunnel.md`](docs/en-US/deploy-cloudflare-tunnel.md) and [`docs/en-US/deploy-vps.md`](docs/en-US/deploy-vps.md). --- ## Validation And Demo -The project was validated live against Bitcoin Core v31.0 in `regtest` on 2026-05-02. The complete validation, including real endpoint outputs, the PSBT cycle, and the 503 error path, is documented in [`docs/validacao-ao-vivo.md`](docs/validacao-ao-vivo.md). +The project was validated live against Bitcoin Core v31.0 in `regtest` on 2026-05-02. The complete validation, including real endpoint outputs, the PSBT cycle, and the 503 error path, is documented in [`docs/en-US/live-validation.md`](docs/en-US/live-validation.md). To reproduce locally, with `bitcoind -regtest` on the default ports: @@ -423,9 +429,9 @@ Public demo run on 2026-05-03 through Cloudflare Tunnel: Versioned placeholders for visual evidence live in [`docs/assets/README.md`](docs/assets/README.md). When generating new screenshots/GIFs for the React dashboards, save them as: -- `docs/assets/atividade-1-dashboard.png` -- `docs/assets/atividade-2-dashboard.gif` -- `docs/assets/atividade-3-dashboard.png` +- `docs/assets/activity-1-dashboard.png` +- `docs/assets/activity-2-events.png` +- `docs/assets/activity-3-wallet.png` | Activity | URL | Validated endpoint | Response | |----------|-----|--------------------|----------| @@ -433,7 +439,7 @@ Versioned placeholders for visual evidence live in [`docs/assets/README.md`](doc | 2 | https://dice-garcia-hub-particular.trycloudflare.com | `/api/events/summary` | `{"blocks_observed":1,"tx_observed":4,...}` | | 3 | https://move-after-salaries-kde.trycloudflare.com | `/wallets` | `{"available_wallets":[...],"selected_wallet":"wallet1"}` | -> Temporary `trycloudflare.com` URLs, active while the `cloudflared` processes were running. Full evidence: [`docs/demo-publica.md`](docs/demo-publica.md). +> Temporary `trycloudflare.com` URLs, active while the `cloudflared` processes were running. Full evidence: [`docs/en-US/public-demo.md`](docs/en-US/public-demo.md). --- diff --git a/README.md b/README.md index 025f3c4..0326cf5 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ > docker compose up > ``` > -> Acede às atividades em `http://localhost:8001`, `8002` e `8003`. -> Guia completo (incluindo sem Docker): [**docs/getting-started.md**](docs/getting-started.md) +> Acesse as atividades em `http://localhost:8001`, `8002` e `8003`. +> Guia completo (incluindo sem Docker): [**docs/pt-BR/getting-started.md**](docs/pt-BR/getting-started.md) ### O que você verá após `docker compose up` @@ -93,7 +93,7 @@ flowchart LR bitcoind --- wallets ``` -Diagramas técnicos completos: [`docs/architecture.md`](docs/architecture.md). +Diagramas técnicos completos: [`docs/pt-BR/architecture.md`](docs/pt-BR/architecture.md). --- @@ -113,7 +113,7 @@ Todos os backends expõem `/health`, `/metrics` e logs JSON com `correlation_id` --- -## Key Concepts +## Conceitos principais | Conceito | Onde aparece | Resumo | |----------|--------------|--------| @@ -126,7 +126,7 @@ Todos os backends expõem `/health`, `/metrics` e logs JSON com `correlation_id` | Wallet-scoped RPC | Atividade 3 | Chamadas feitas em `/wallet/` para manter operações de saldo, UTXO, assinatura e histórico isoladas por wallet. | | Estado interpretado | Atividade 3 | Camada de domínio que traduz respostas do nó em estados como `broadcast`, `mempool`, `confirmed` e `unknown`. | -Referências aprofundadas: [`docs/rpc-zmq.md`](docs/rpc-zmq.md), [`docs/architecture.md`](docs/architecture.md) e [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md). +Referências aprofundadas: [`docs/pt-BR/rpc-zmq.md`](docs/pt-BR/rpc-zmq.md), [`docs/pt-BR/architecture.md`](docs/pt-BR/architecture.md) e [`docs/pt-BR/setup-bitcoin-core.md`](docs/pt-BR/setup-bitcoin-core.md). --- @@ -183,14 +183,20 @@ corecraft/ │ └── atividade_3/ testes unitários da Atividade 3 │ ├── docs/ -│ ├── getting-started.md ← começa aqui (Docker + manual, todos os OS) -│ ├── setup-bitcoin-core.md instalação e configuração do Bitcoin Core -│ ├── docker-stack.md referência completa da stack Docker -│ ├── architecture.md decisões de design e trade-offs -│ ├── rpc-zmq.md conceitos RPC vs ZMQ -│ ├── smoke-tests.md como verificar os endpoints manualmente -│ ├── deploy-vps.md deploy em Ubuntu 22.04 -│ └── deploy-cloudflare-tunnel.md exposição pública via Cloudflare +│ ├── README.md índice bilíngue da documentação +│ ├── pt-BR/ documentação em Português do Brasil +│ │ ├── getting-started.md comece aqui (Docker + manual) +│ │ ├── architecture.md arquitetura e decisões técnicas +│ │ ├── setup-bitcoin-core.md setup do Bitcoin Core +│ │ ├── docker-stack.md referência da stack Docker +│ │ └── smoke-tests.md validação dos endpoints +│ ├── en-US/ documentação em Inglês (US) +│ │ ├── getting-started.md +│ │ ├── architecture.md +│ │ ├── setup-bitcoin-core.md +│ │ ├── docker-stack.md +│ │ └── smoke-tests.md +│ └── assets/ screenshots e evidências visuais │ ├── CHANGELOG.md histórico de versões e correções ├── CONTRIBUTING.md guia de contribuição @@ -213,16 +219,16 @@ corecraft/ | `pip` | atualizado | Instala `fastapi`, `uvicorn`, `requests`, `python-dotenv`, `pyzmq` | | Node.js | 18+ local, 22.12 no CI/Docker | Frontends React/Vite | -> Setup completo do Bitcoin Core: [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) +> Setup completo do Bitcoin Core: [`docs/pt-BR/setup-bitcoin-core.md`](docs/pt-BR/setup-bitcoin-core.md) --- -## Quickstart +## Início rápido ### 1. Configurar o Bitcoin Core (uma única vez) ```bash -# bitcoin.conf — ver docs/setup-bitcoin-core.md para o conteúdo completo +# bitcoin.conf — ver docs/pt-BR/setup-bitcoin-core.md para o conteúdo completo bitcoind -regtest -daemon bitcoin-cli -regtest createwallet wallet1 bitcoin-cli -regtest createwallet wallet2 @@ -271,7 +277,7 @@ corecraft-suite-atividade-3 | INFO: Application startup complete. corecraft-caddy | serving initial configuration ``` -O Compose sobe `bitcoind` em regtest, inicializa wallets, minera saldo inicial para `wallet1`, executa os tres backends e expõe as interfaces pelo Caddy. Detalhes em [`docs/docker-stack.md`](docs/docker-stack.md). +O Compose sobe `bitcoind` em regtest, inicializa wallets, minera saldo inicial para `wallet1`, executa os tres backends e expõe as interfaces pelo Caddy. Detalhes em [`docs/pt-BR/docker-stack.md`](docs/pt-BR/docker-stack.md). Variáveis principais: @@ -303,7 +309,7 @@ LOG_LEVEL=INFO | POST | `/tx/send` | 3 | Cria, assina e transmite tx via PSBT | | GET | `/tx/{txid}` | 3 | Estado interpretado da transação | -Smoke tests completos com `curl`: [`docs/smoke-tests.md`](docs/smoke-tests.md). +Smoke tests completos com `curl`: [`docs/pt-BR/smoke-tests.md`](docs/pt-BR/smoke-tests.md). --- @@ -311,16 +317,16 @@ Smoke tests completos com `curl`: [`docs/smoke-tests.md`](docs/smoke-tests.md). | Documento | Conteúdo | |-----------|----------| -| [`docs/architecture.md`](docs/architecture.md) | Decisões de design, padrões de implementação e trade-offs | -| [`docs/setup-bitcoin-core.md`](docs/setup-bitcoin-core.md) | `bitcoin.conf`, regtest, wallets, ZMQ, geração de saldo | -| [`docs/rpc-zmq.md`](docs/rpc-zmq.md) | Conceitos: pull (RPC) vs push (ZMQ) e justificativa por atividade | -| [`docs/deploy-vps.md`](docs/deploy-vps.md) | Deploy em VPS Ubuntu 22.04 com `tmux` e `ufw` | -| [`docs/deploy-cloudflare-tunnel.md`](docs/deploy-cloudflare-tunnel.md) | Exposição pública via Cloudflare Tunnel ou ngrok | -| [`docs/smoke-tests.md`](docs/smoke-tests.md) | Smoke tests `curl` por atividade | -| [`docs/docker-stack.md`](docs/docker-stack.md) | Stack Docker completa, variáveis e comandos Make | -| [`docs/docker-troubleshooting.md`](docs/docker-troubleshooting.md) | Diagnóstico de RPC auth, healthchecks, ZMQ e Caddy | -| [`docs/validacao-ao-vivo.md`](docs/validacao-ao-vivo.md) | Saída completa de validação contra Bitcoin Core v31.0 | -| [`docs/demo-publica.md`](docs/demo-publica.md) | Evidências de demo pública via Cloudflare Tunnel (2026-05-03) | +| [`docs/pt-BR/architecture.md`](docs/pt-BR/architecture.md) | Decisões de design, padrões de implementação e trade-offs | +| [`docs/pt-BR/setup-bitcoin-core.md`](docs/pt-BR/setup-bitcoin-core.md) | `bitcoin.conf`, regtest, wallets, ZMQ, geração de saldo | +| [`docs/pt-BR/rpc-zmq.md`](docs/pt-BR/rpc-zmq.md) | Conceitos: pull (RPC) vs push (ZMQ) e justificativa por atividade | +| [`docs/pt-BR/deploy-vps.md`](docs/pt-BR/deploy-vps.md) | Deploy em VPS Ubuntu 22.04 com `tmux` e `ufw` | +| [`docs/pt-BR/deploy-cloudflare-tunnel.md`](docs/pt-BR/deploy-cloudflare-tunnel.md) | Exposição pública via Cloudflare Tunnel ou ngrok | +| [`docs/pt-BR/smoke-tests.md`](docs/pt-BR/smoke-tests.md) | Smoke tests `curl` por atividade | +| [`docs/pt-BR/docker-stack.md`](docs/pt-BR/docker-stack.md) | Stack Docker completa, variáveis e comandos Make | +| [`docs/pt-BR/docker-troubleshooting.md`](docs/pt-BR/docker-troubleshooting.md) | Diagnóstico de RPC auth, healthchecks, ZMQ e Caddy | +| [`docs/pt-BR/live-validation.md`](docs/pt-BR/live-validation.md) | Resumo da validação contra Bitcoin Core v31.0 | +| [`docs/pt-BR/public-demo.md`](docs/pt-BR/public-demo.md) | Resumo da demo pública via Cloudflare Tunnel (2026-05-03) | Cada atividade tem seu próprio README detalhado: @@ -374,7 +380,7 @@ Os testes usam `monkeypatch` para isolar cada módulo de domínio. `FakeRPC` sim - **Erro 503 estruturado.** Quando o nó está offline, todas as rotas que dependem dele retornam `{"detail": {"error": "node_unavailable", "detail": "..."}}` com HTTP 503. - **Observabilidade mínima.** Logs são emitidos em JSON com `service` e `correlation_id`; cada backend expõe `/health` e `/metrics`. - **Frontend isolado.** Cada atividade tem frontend React/Vite/TypeScript próprio. URLs relativas e Caddy com prefixos permitem acesso direto (`:8001`/`:8002`/`:8003`) ou por `/atividade-N/`. -- **Decisões de arquitetura completas em [`docs/architecture.md`](docs/architecture.md).** +- **Decisões de arquitetura completas em [`docs/pt-BR/architecture.md`](docs/pt-BR/architecture.md).** --- @@ -403,13 +409,13 @@ cloudflared tunnel --url http://localhost:8003 ngrok http 8001 ``` -Detalhes (instalação, deploy permanente em VPS, firewall): [`docs/deploy-cloudflare-tunnel.md`](docs/deploy-cloudflare-tunnel.md) e [`docs/deploy-vps.md`](docs/deploy-vps.md). +Detalhes (instalação, deploy permanente em VPS, firewall): [`docs/pt-BR/deploy-cloudflare-tunnel.md`](docs/pt-BR/deploy-cloudflare-tunnel.md) e [`docs/pt-BR/deploy-vps.md`](docs/pt-BR/deploy-vps.md). --- ## Validação e demonstração -O projeto foi validado ao vivo contra Bitcoin Core v31.0 em `regtest` em 2026-05-02. A validação completa — incluindo saídas reais dos endpoints, ciclo PSBT e caminho de erro 503 — está documentada em [`docs/validacao-ao-vivo.md`](docs/validacao-ao-vivo.md). +O projeto foi validado ao vivo contra Bitcoin Core v31.0 em `regtest` em 2026-05-02. A validação completa — incluindo saídas reais dos endpoints, ciclo PSBT e caminho de erro 503 — está documentada em [`docs/pt-BR/live-validation.md`](docs/pt-BR/live-validation.md). Para reproduzir localmente (requer `bitcoind -regtest` nas portas padrão): @@ -423,9 +429,9 @@ Demo pública executada em 2026-05-03 via Cloudflare Tunnel: Placeholders versionados para evidências visuais estão em [`docs/assets/README.md`](docs/assets/README.md). Ao gerar novos screenshots/GIFs dos dashboards React, salve-os como: -- `docs/assets/atividade-1-dashboard.png` -- `docs/assets/atividade-2-dashboard.gif` -- `docs/assets/atividade-3-dashboard.png` +- `docs/assets/activity-1-dashboard.png` +- `docs/assets/activity-2-events.png` +- `docs/assets/activity-3-wallet.png` | Atividade | URL | Endpoint validado | Resposta | |-----------|-----|-------------------|----------| @@ -433,7 +439,7 @@ Placeholders versionados para evidências visuais estão em [`docs/assets/README | 2 | https://dice-garcia-hub-particular.trycloudflare.com | `/api/events/summary` | `{"blocks_observed":1,"tx_observed":4,...}` | | 3 | https://move-after-salaries-kde.trycloudflare.com | `/wallets` | `{"available_wallets":[...],"selected_wallet":"wallet1"}` | -> URLs temporárias (trycloudflare.com) — ativas enquanto os processos `cloudflared` estavam rodando. Evidências completas: [`docs/demo-publica.md`](docs/demo-publica.md). +> URLs temporárias (trycloudflare.com) — ativas enquanto os processos `cloudflared` estavam rodando. Evidências completas: [`docs/pt-BR/public-demo.md`](docs/pt-BR/public-demo.md). --- diff --git a/SECURITY.md b/SECURITY.md index 3fdc54c..e27f308 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -16,8 +16,8 @@ CoreCraft is a **local development and learning tool** designed to run against a If you need to expose a backend externally (e.g., for a demo), use a tunnel with access controls: -- [Cloudflare Tunnel](docs/deploy-cloudflare-tunnel.md) — restrict access by IP or authentication policy -- [VPS deploy](docs/deploy-vps.md) — configure `ufw` to allow only trusted IPs +- [Cloudflare Tunnel](docs/en-US/deploy-cloudflare-tunnel.md) — restrict access by IP or authentication policy +- [VPS deploy](docs/en-US/deploy-vps.md) — configure `ufw` to allow only trusted IPs ## Reporting a vulnerability diff --git a/atividade-2/README.md b/atividade-2/README.md index 38e9db5..9108ed2 100644 --- a/atividade-2/README.md +++ b/atividade-2/README.md @@ -23,7 +23,7 @@ A aplicação assina `rawblock` e `rawtx`, mantém buffers limitados e expõe um | Latência | Limitada pela frequência de polling | Praticamente em tempo real | | Uso ideal | Consultar estado, enviar tx | Detectar novos blocos/txs | -Mais detalhes: [`docs/rpc-zmq.md`](../docs/rpc-zmq.md). +Mais detalhes: [`docs/pt-BR/rpc-zmq.md`](../docs/pt-BR/rpc-zmq.md). ## Arquitetura @@ -186,7 +186,7 @@ curl -s http://127.0.0.1:8002/api/events/state-comparison | python3 -m json.tool cloudflared tunnel --url http://localhost:8002 ``` -Detalhes em [`docs/deploy-cloudflare-tunnel.md`](../docs/deploy-cloudflare-tunnel.md) e [`docs/deploy-vps.md`](../docs/deploy-vps.md). +Detalhes em [`docs/pt-BR/deploy-cloudflare-tunnel.md`](../docs/pt-BR/deploy-cloudflare-tunnel.md) e [`docs/pt-BR/deploy-vps.md`](../docs/pt-BR/deploy-vps.md). ## Checklist desta atividade diff --git a/atividade-3/README.md b/atividade-3/README.md index 7e9c58c..33b6c43 100644 --- a/atividade-3/README.md +++ b/atividade-3/README.md @@ -222,7 +222,7 @@ curl -s http://127.0.0.1:8003/tx/$TXID | python3 -m json.tool cloudflared tunnel --url http://localhost:8003 ``` -Detalhes em [`docs/deploy-cloudflare-tunnel.md`](../docs/deploy-cloudflare-tunnel.md) e [`docs/deploy-vps.md`](../docs/deploy-vps.md). +Detalhes em [`docs/pt-BR/deploy-cloudflare-tunnel.md`](../docs/pt-BR/deploy-cloudflare-tunnel.md) e [`docs/pt-BR/deploy-vps.md`](../docs/pt-BR/deploy-vps.md). ## Limitações conhecidas diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..ac9ae9f --- /dev/null +++ b/docs/README.md @@ -0,0 +1,28 @@ +# CoreCraft Documentation + +CoreCraft keeps documentation in two maintained language tracks: + +| Language | Directory | Start here | +|----------|-----------|------------| +| Portugues do Brasil | [`pt-BR/`](pt-BR/) | [`pt-BR/getting-started.md`](pt-BR/getting-started.md) | +| English (US) | [`en-US/`](en-US/) | [`en-US/getting-started.md`](en-US/getting-started.md) | + +Shared visual assets live in [`assets/`](assets/). + +## Documentation Map + +| Topic | PT-BR | EN-US | +|-------|-------|-------| +| Getting started | [`pt-BR/getting-started.md`](pt-BR/getting-started.md) | [`en-US/getting-started.md`](en-US/getting-started.md) | +| Architecture | [`pt-BR/architecture.md`](pt-BR/architecture.md) | [`en-US/architecture.md`](en-US/architecture.md) | +| Bitcoin Core setup | [`pt-BR/setup-bitcoin-core.md`](pt-BR/setup-bitcoin-core.md) | [`en-US/setup-bitcoin-core.md`](en-US/setup-bitcoin-core.md) | +| Docker stack | [`pt-BR/docker-stack.md`](pt-BR/docker-stack.md) | [`en-US/docker-stack.md`](en-US/docker-stack.md) | +| Docker troubleshooting | [`pt-BR/docker-troubleshooting.md`](pt-BR/docker-troubleshooting.md) | [`en-US/docker-troubleshooting.md`](en-US/docker-troubleshooting.md) | +| RPC vs ZMQ | [`pt-BR/rpc-zmq.md`](pt-BR/rpc-zmq.md) | [`en-US/rpc-zmq.md`](en-US/rpc-zmq.md) | +| Smoke tests | [`pt-BR/smoke-tests.md`](pt-BR/smoke-tests.md) | [`en-US/smoke-tests.md`](en-US/smoke-tests.md) | +| VPS deploy | [`pt-BR/deploy-vps.md`](pt-BR/deploy-vps.md) | [`en-US/deploy-vps.md`](en-US/deploy-vps.md) | +| Cloudflare Tunnel | [`pt-BR/deploy-cloudflare-tunnel.md`](pt-BR/deploy-cloudflare-tunnel.md) | [`en-US/deploy-cloudflare-tunnel.md`](en-US/deploy-cloudflare-tunnel.md) | +| Delivery summary | [`pt-BR/delivery.md`](pt-BR/delivery.md) | [`en-US/delivery.md`](en-US/delivery.md) | +| Live validation | [`pt-BR/live-validation.md`](pt-BR/live-validation.md) | [`en-US/live-validation.md`](en-US/live-validation.md) | +| Public demo | [`pt-BR/public-demo.md`](pt-BR/public-demo.md) | [`en-US/public-demo.md`](en-US/public-demo.md) | + diff --git a/docs/assets/README.md b/docs/assets/README.md index ded47ef..b97f4ef 100644 --- a/docs/assets/README.md +++ b/docs/assets/README.md @@ -1,14 +1,20 @@ -# Dashboard Assets +# Dashboard Assets / Assets dos Dashboards -This directory reserves stable names for screenshots/GIFs of React dashboards: +This directory stores shared visual evidence used by both documentation tracks. -- `atividade-1-dashboard.png` -- `atividade-2-events.png` -- `atividade-3-wallet.png` +Esta pasta armazena evidencias visuais compartilhadas pelas documentacoes em PT-BR e EN-US. -Visual files must be updated from a real run of `docker compose up --build`, preferably after validating RPC, ZMQ and PSBT with smoke tests. +## Stable File Names / Nomes Estaveis -To refresh the screenshots: +- `activity-1-dashboard.png` +- `activity-2-events.png` +- `activity-3-wallet.png` + +Update these files from a real `docker compose up --build` run, preferably after validating RPC, ZMQ, and PSBT with smoke tests. + +Atualize estes arquivos a partir de uma execucao real de `docker compose up --build`, de preferencia depois de validar RPC, ZMQ e PSBT com smoke tests. + +## Refresh / Atualizacao ```bash python3 -m venv .venv @@ -20,3 +26,5 @@ python scripts/capture-dashboard-screenshots.py ``` The capture script uses Playwright with a `1440x900` viewport, waits for `networkidle`, and saves full-page PNG screenshots. + +O script de captura usa Playwright com viewport `1440x900`, aguarda `networkidle` e salva screenshots PNG de pagina inteira. diff --git a/docs/assets/atividade-1-dashboard.png b/docs/assets/activity-1-dashboard.png similarity index 100% rename from docs/assets/atividade-1-dashboard.png rename to docs/assets/activity-1-dashboard.png diff --git a/docs/assets/atividade-2-events.png b/docs/assets/activity-2-events.png similarity index 100% rename from docs/assets/atividade-2-events.png rename to docs/assets/activity-2-events.png diff --git a/docs/assets/atividade-3-wallet.png b/docs/assets/activity-3-wallet.png similarity index 100% rename from docs/assets/atividade-3-wallet.png rename to docs/assets/activity-3-wallet.png diff --git a/docs/architecture.md b/docs/en-US/architecture.md similarity index 99% rename from docs/architecture.md rename to docs/en-US/architecture.md index 3d65576..ebe0ca6 100644 --- a/docs/architecture.md +++ b/docs/en-US/architecture.md @@ -247,4 +247,4 @@ except ValueError as exc: ## Known limitations -See [Known Limitations](../README.md#limitações-conhecidas) in the root README. +See [Known Limitations](../../README.en-US.md#known-limitations) in the English root README. diff --git a/docs/entrega.md b/docs/en-US/delivery.md similarity index 94% rename from docs/entrega.md rename to docs/en-US/delivery.md index 7824072..5345035 100644 --- a/docs/entrega.md +++ b/docs/en-US/delivery.md @@ -25,7 +25,7 @@ Three independent microservices for integration with Bitcoin Core (regtest): | Activity 2 | https://dice-garcia-hub-particular.trycloudflare.com | | Activity 3 | https://move-after-salaries-kde.trycloudflare.com | -> Temporary Cloudflare Tunnels generated on 2026-05-03. Complete evidence in [`docs/demo-publica.md`](demo-publica.md). +> Temporary Cloudflare Tunnels generated on 2026-05-03. Complete evidence in [`public-demo.md`](public-demo.md). ## Actual endpoint responses (external access) @@ -59,8 +59,8 @@ bitcoin-cli -regtest getblockchaininfo ./scripts/smoke-test.sh ``` -Complete local validation evidence: [`docs/validacao-ao-vivo.md`](validacao-ao-vivo.md) -Public demo evidence: [`docs/demo-publica.md`](demo-publica.md) +Complete local validation evidence: [`live-validation.md`](live-validation.md) +Public demo evidence: [`public-demo.md`](public-demo.md) --- diff --git a/docs/deploy-cloudflare-tunnel.md b/docs/en-US/deploy-cloudflare-tunnel.md similarity index 100% rename from docs/deploy-cloudflare-tunnel.md rename to docs/en-US/deploy-cloudflare-tunnel.md diff --git a/docs/deploy-vps.md b/docs/en-US/deploy-vps.md similarity index 95% rename from docs/deploy-vps.md rename to docs/en-US/deploy-vps.md index d4772b9..64193a9 100644 --- a/docs/deploy-vps.md +++ b/docs/en-US/deploy-vps.md @@ -34,7 +34,7 @@ fallbackfee=0.0001 [regtest] rpcuser=user -rpcpassword=TROQUE_ESTA_SENHA +rpcpassword=CHANGE_THIS_PASSWORD rpcbind=127.0.0.1 rpcallowip=127.0.0.1 zmqpubrawblock=tcp://127.0.0.1:28332 @@ -120,7 +120,7 @@ Frontends use relative URLs, so they work automatically when accessed through th Access via browser: ``` -http://:8001 → Activity 1 -http://:8002 → Activity 2 -http://:8003 → Activity 3 +http://:8001 → Activity 1 +http://:8002 → Activity 2 +http://:8003 → Activity 3 ``` diff --git a/docs/docker-stack.md b/docs/en-US/docker-stack.md similarity index 100% rename from docs/docker-stack.md rename to docs/en-US/docker-stack.md diff --git a/docs/docker-troubleshooting.md b/docs/en-US/docker-troubleshooting.md similarity index 99% rename from docs/docker-troubleshooting.md rename to docs/en-US/docker-troubleshooting.md index a656ec4..75f18ff 100644 --- a/docs/docker-troubleshooting.md +++ b/docs/en-US/docker-troubleshooting.md @@ -522,7 +522,7 @@ docker compose version ### Symptom: `./scripts/quickstart.sh: Permission denied` -**Cause:** The file was cloned into a Windows file system (ex: `/mnt/c/...`) and POSIX permissions do not apply. +**Cause:** The file was cloned into a Windows file system (for example, `/mnt/c/...`) and POSIX permissions do not apply. **Workaround:** Clone the repository within the WSL file system (not in `/mnt/c/`): ```bash diff --git a/docs/getting-started.md b/docs/en-US/getting-started.md similarity index 94% rename from docs/getting-started.md rename to docs/en-US/getting-started.md index e8272f3..461f163 100644 --- a/docs/getting-started.md +++ b/docs/en-US/getting-started.md @@ -178,7 +178,7 @@ chmod +x scripts/setup-mac.sh
-Windows (PowerShell ou Prompt de Comando) +Windows (PowerShell or Command Prompt) ```cmd scripts\setup-windows.bat @@ -246,10 +246,10 @@ Expected result: ```text CoreCraft — Smoke Tests -Atividade 1 — Mempool Snapshot 2/2 OK -Atividade 2 — Eventos ZMQ 3/3 OK -Atividade 3 — Multi-Wallet PSBT 2/2 OK -RESULTADO: 7/7 endpoints OK +Activity 1 — Mempool Snapshot 2/2 OK +Activity 2 — ZMQ Events 3/3 OK +Activity 3 — Multi-Wallet PSBT 2/2 OK +RESULT: 7/7 endpoints OK ``` ### 7. Start just one activity @@ -270,10 +270,10 @@ Replace `atividade-1` with `atividade-2` or `atividade-3` as needed. ```bash make up # Start all services (with build) -make up-detached # Em background +make up-detached # Run in the background make down # Stop all services -make logs # Ver logs em tempo real -make ps # Ver estado dos contentores +make logs # View real-time logs +make ps # View container status make mine # Mine 1 block for wallet1 make mine-10 # Mine 10 blocks make wallet-balance # Check wallet1 balance @@ -288,7 +288,7 @@ Use this path when you want to develop, debug, or do not have Docker available. ### 1. Install Bitcoin Core -See the complete guide: [**`docs/setup-bitcoin-core.md`**](setup-bitcoin-core.md) +See the complete guide: [**`setup-bitcoin-core.md`**](setup-bitcoin-core.md) Quick summary by OS: @@ -353,7 +353,7 @@ bitcoin-cli --version ```bash sudo apt-get install -y python3 python3-pip python3-venv -python3 --version # deve mostrar 3.11 ou superior +python3 --version # should show 3.11 or higher ``` If the version is lower than 3.11: @@ -403,7 +403,7 @@ Only needed to compile or modify React frontends. If you only want to run the ba ```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash -source ~/.bashrc # ou ~/.zshrc +source ~/.bashrc # or ~/.zshrc nvm install 22 nvm use 22 node --version @@ -748,7 +748,7 @@ curl -s http://127.0.0.1:8001/api/blockchain/lag curl -s http://127.0.0.1:8003/wallets ``` -Complete smoke testing guide: [**`docs/smoke-tests.md`**](smoke-tests.md) +Complete smoke testing guide: [**`smoke-tests.md`**](smoke-tests.md) --- @@ -878,9 +878,9 @@ If the problem persists: `docker compose down -v` to remove volumes as well. ## Next steps -- Contribution and testing guide: [**`CONTRIBUTING.md`**](../CONTRIBUTING.md) -- Architecture and design decisions: [**`docs/architecture.md`**](architecture.md) -- Deploy on Ubuntu VPS: [**`docs/deploy-vps.md`**](deploy-vps.md) -- Public exposure via Cloudflare Tunnel: [**`docs/deploy-cloudflare-tunnel.md`**](deploy-cloudflare-tunnel.md) -- Complete Docker Stack: [**`docs/docker-stack.md`**](docker-stack.md) -- Troubleshooting Docker: [**`docs/docker-troubleshooting.md`**](docker-troubleshooting.md) +- Contribution and testing guide: [**`CONTRIBUTING.md`**](../../CONTRIBUTING.md) +- Architecture and design decisions: [**`architecture.md`**](architecture.md) +- Deploy on Ubuntu VPS: [**`deploy-vps.md`**](deploy-vps.md) +- Public exposure via Cloudflare Tunnel: [**`deploy-cloudflare-tunnel.md`**](deploy-cloudflare-tunnel.md) +- Complete Docker Stack: [**`docker-stack.md`**](docker-stack.md) +- Troubleshooting Docker: [**`docker-troubleshooting.md`**](docker-troubleshooting.md) diff --git a/docs/validacao-ao-vivo.md b/docs/en-US/live-validation.md similarity index 96% rename from docs/validacao-ao-vivo.md rename to docs/en-US/live-validation.md index 06eeace..cf83d41 100644 --- a/docs/validacao-ao-vivo.md +++ b/docs/en-US/live-validation.md @@ -32,7 +32,7 @@ Actual execution against `bitcoind -regtest` on host (Bitcoin Core v31.0). All m - [x] Bitcoin Core running - [x] RPC responding - [x] ZMQ configured -- [x] Wallets criadas/carregadas +- [x] Wallets created/loaded - [x] Activity 1 validated - [x] Activity 2 validated - [x] Activity 3 validated @@ -122,7 +122,7 @@ curl http://127.0.0.1:8003/wallet/status curl -X POST http://127.0.0.1:8003/tx/send \ -H "Content-Type: application/json" \ - -d '{"to_address":"ENDERECO_REGTEST","amount":0.001}' + -d '{"to_address":"REGTEST_ADDRESS","amount":0.001}' curl http://127.0.0.1:8003/tx/TXID ``` @@ -266,7 +266,7 @@ Immediately after starting the backend, before any ZMQ events arrive: "last_seen_block": null, "divergence": null, "status": "waiting_for_zmq_block", - "message": "Nenhum bloco observado via ZMQ ainda." + "message": "No block observed via ZMQ yet." } ``` @@ -427,7 +427,7 @@ Response (tx broadcast): "confirmations": 0, "block_hash": null, "age_seconds": 10, - "message": "Transa\u00e7\u00e3o aceita na mempool, aguardando inclus\u00e3o em bloco." + "message": "Transaction accepted into the mempool, waiting for inclusion in a block." } ``` @@ -459,7 +459,7 @@ Changing the active wallet to `wallet2` (which **did not send** this tx) and con "confirmations": 0, "block_hash": null, "age_seconds": 23, - "message": "Transa\u00e7\u00e3o aceita na mempool, aguardando inclus\u00e3o em bloco." + "message": "Transaction accepted into the mempool, waiting for inclusion in a block." } ``` @@ -489,7 +489,7 @@ bitcoin-cli -regtest generatetoaddress 1 $ADDR "confirmations": 1, "block_hash": "0cff68eccfe79d9088e78673d17bb8c7bc2c9eb375eafb790c9edd2bbcab2785", "age_seconds": 38, - "message": "Transa\u00e7\u00e3o confirmada em bloco." + "message": "Transaction confirmed in block." } ``` @@ -542,7 +542,7 @@ All 9 mandatory endpoints + PSBT cycle + Activity 3 bug fix + path 503 were exer | Activity 3 | OK | Section 4 | `/wallets`, full PSBT, bug fix wallet tracking, `balance` fixed via `getbalances()` | | Path 503 | OK | Section 5 | All routes return structured `node_unavailable` | | Frontend | OK | Local (2026-05-02) + public (2026-05-03) | Verified via Cloudflare Tunnel on all three services | -| External access | OK | `docs/demo-publica.md` | Tunnels active on 2026-05-03; Real JSON responses captured | +| External access | OK | `public-demo.md` | Tunnels active on 2026-05-03; Real JSON responses captured | --- @@ -559,4 +559,4 @@ Backends exposed via `cloudflared tunnel --url` on 2026-05-03. Bitcoin Core v31. **Conclusion:** external access verified, frontend served correctly by FastAPI via HTTPS from Cloudflare Tunnel. -Complete evidence: [`docs/demo-publica.md`](demo-publica.md). +Complete evidence: [`public-demo.md`](public-demo.md). diff --git a/docs/demo-publica.md b/docs/en-US/public-demo.md similarity index 100% rename from docs/demo-publica.md rename to docs/en-US/public-demo.md diff --git a/docs/rpc-zmq.md b/docs/en-US/rpc-zmq.md similarity index 100% rename from docs/rpc-zmq.md rename to docs/en-US/rpc-zmq.md diff --git a/docs/setup-bitcoin-core.md b/docs/en-US/setup-bitcoin-core.md similarity index 99% rename from docs/setup-bitcoin-core.md rename to docs/en-US/setup-bitcoin-core.md index 32d21c6..8de158a 100644 --- a/docs/setup-bitcoin-core.md +++ b/docs/en-US/setup-bitcoin-core.md @@ -112,7 +112,7 @@ bitcoind --version # Add to PATH (place in ~/.zshrc or ~/.bash_profile) export PATH="/Applications/Bitcoin-Qt.app/Contents/MacOS:$PATH" -source ~/.zshrc # ou source ~/.bash_profile +source ~/.zshrc # or source ~/.bash_profile bitcoind --version ``` @@ -418,7 +418,7 @@ bitcoin-cli -regtest -rpcwallet=wallet1 listtransactions bitcoin-cli -regtest loadwallet wallet2 ``` -### Download wallet +### Unload wallet ```bash bitcoin-cli -regtest unloadwallet wallet2 diff --git a/docs/smoke-tests.md b/docs/en-US/smoke-tests.md similarity index 97% rename from docs/smoke-tests.md rename to docs/en-US/smoke-tests.md index aefe747..61427b4 100644 --- a/docs/smoke-tests.md +++ b/docs/en-US/smoke-tests.md @@ -211,4 +211,4 @@ curl -s http://127.0.0.1:8003/wallets ## Live validation evidence -Full session output with real Bitcoin Core v31.0 responses: [`docs/validacao-ao-vivo.md`](validacao-ao-vivo.md) +Full session output with real Bitcoin Core v31.0 responses: [`live-validation.md`](live-validation.md) diff --git a/docs/pt-BR/architecture.md b/docs/pt-BR/architecture.md new file mode 100644 index 0000000..fb098d2 --- /dev/null +++ b/docs/pt-BR/architecture.md @@ -0,0 +1,52 @@ +# Arquitetura + +[Versao em ingles](../en-US/architecture.md) + +CoreCraft e composto por tres microservicos independentes. Cada atividade possui backend FastAPI, frontend React/Vite e cliente JSON-RPC proprio para comunicacao com Bitcoin Core. + +## Stack + +| Camada | Tecnologia | +|--------|------------| +| Backend | Python 3.12, FastAPI, Uvicorn | +| Frontend | React, Vite, TypeScript | +| Bitcoin Core | JSON-RPC, wallets, `regtest` | +| Eventos | ZMQ na Atividade 2 | +| Orquestracao | Docker Compose, Caddy | + +## Servicos + +| Atividade | Porta | Responsabilidade | +|-----------|-------|------------------| +| 1 | 8001 | Snapshot da mempool e atraso da blockchain via RPC | +| 2 | 8002 | Eventos `rawblock`/`rawtx` via ZMQ e comparacao com RPC | +| 3 | 8003 | Wallets, PSBT, envio e interpretacao de transacoes | + +## Topologia + +```mermaid +flowchart LR + browser[Browser] --> caddy[Caddy] + caddy --> a1[Activity 1] + caddy --> a2[Activity 2] + caddy --> a3[Activity 3] + a1 -->|JSON-RPC| node[Bitcoin Core regtest] + a2 -->|JSON-RPC| node + node -->|ZMQ rawblock/rawtx| a2 + a3 -->|Global RPC| node + a3 -->|Wallet RPC| wallets[(wallet1 / wallet2)] + node --- wallets +``` + +## Decisoes de Design + +- Cada atividade tem seu proprio `rpc_client.py`, tornando o protocolo JSON-RPC explicito e facil de auditar. +- A Atividade 2 usa estado em memoria com `deque`, suficiente para o escopo do projeto. +- A Atividade 3 delega selecao de UTXO, assinatura, finalizacao e broadcast ao Bitcoin Core via PSBT. +- Chamadas globais e chamadas por wallet nao se misturam: operacoes de wallet usam `/wallet/`. +- Falhas de conexao com Bitcoin Core retornam HTTP 503 estruturado, nao HTTP 500 generico. + +## Limitacoes Conhecidas + +O estado em memoria e reiniciado junto com os processos. Transacoes ja enviadas continuam consultaveis no Bitcoin Core, mas metadados locais temporarios podem ser perdidos. + diff --git a/docs/pt-BR/delivery.md b/docs/pt-BR/delivery.md new file mode 100644 index 0000000..f496c8d --- /dev/null +++ b/docs/pt-BR/delivery.md @@ -0,0 +1,36 @@ +# Entrega — CoreCraft + +[Versao em ingles](../en-US/delivery.md) + +## Escopo + +Tres microservicos independentes integrados ao Bitcoin Core em `regtest`: + +- Atividade 1: snapshot da mempool via RPC. +- Atividade 2: eventos em tempo real via ZMQ. +- Atividade 3: multi-wallet, PSBT e estado interpretado. + +## Checklist + +- [x] Backends funcionais nas tres atividades. +- [x] Frontends servidas pelo FastAPI. +- [x] Documentacao PT-BR e EN-US. +- [x] Validacao local com Bitcoin Core v31.0. +- [x] Demo publica via Cloudflare Tunnel registrada. + +## Evidencias + +- Validacao local: [`live-validation.md`](live-validation.md) +- Demo publica: [`public-demo.md`](public-demo.md) +- Guia de smoke tests: [`smoke-tests.md`](smoke-tests.md) + +## URLs da Demo + +| Atividade | URL | +|-----------|-----| +| 1 | `https://administrators-humanitarian-define-author.trycloudflare.com` | +| 2 | `https://dice-garcia-hub-particular.trycloudflare.com` | +| 3 | `https://move-after-salaries-kde.trycloudflare.com` | + +As URLs `trycloudflare.com` sao temporarias e dependem dos processos locais ativos. + diff --git a/docs/pt-BR/deploy-cloudflare-tunnel.md b/docs/pt-BR/deploy-cloudflare-tunnel.md new file mode 100644 index 0000000..ea03d7e --- /dev/null +++ b/docs/pt-BR/deploy-cloudflare-tunnel.md @@ -0,0 +1,41 @@ +# Deploy com Cloudflare Tunnel + +[Versao em ingles](../en-US/deploy-cloudflare-tunnel.md) + +Cloudflare Tunnel permite expor um backend local na internet sem abrir portas no roteador. + +## Instalacao + +Linux: + +```bash +wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb +sudo dpkg -i cloudflared-linux-amd64.deb +``` + +macOS: + +```bash +brew install cloudflare/cloudflare/cloudflared +``` + +## Expor Atividades + +```bash +cloudflared tunnel --url http://localhost:8001 +cloudflared tunnel --url http://localhost:8002 +cloudflared tunnel --url http://localhost:8003 +``` + +O comando exibira uma URL `https://...trycloudflare.com`. + +As frontends usam URLs relativas por padrao, entao funcionam quando servidas pelo proprio backend. + +## Alternativa + +```bash +ngrok http 8001 +ngrok http 8002 +ngrok http 8003 +``` + diff --git a/docs/pt-BR/deploy-vps.md b/docs/pt-BR/deploy-vps.md new file mode 100644 index 0000000..c6ffeb1 --- /dev/null +++ b/docs/pt-BR/deploy-vps.md @@ -0,0 +1,65 @@ +# Deploy em VPS + +[Versao em ingles](../en-US/deploy-vps.md) + +## Requisitos + +- Ubuntu 22.04+ ou Debian 12+ +- 2 GB de RAM ou mais +- Portas dos backends liberadas no firewall + +## Instalacao Base + +```bash +sudo apt update +sudo apt install -y python3 python3-pip python3-venv git curl wget tmux +``` + +## Bitcoin Core + +```bash +BTC_VERSION=27.0 +wget https://bitcoincore.org/bin/bitcoin-core-${BTC_VERSION}/bitcoin-${BTC_VERSION}-x86_64-linux-gnu.tar.gz +tar -xzf bitcoin-${BTC_VERSION}-x86_64-linux-gnu.tar.gz +sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-${BTC_VERSION}/bin/* +``` + +Configure `~/.bitcoin/bitcoin.conf` conforme [`setup-bitcoin-core.md`](setup-bitcoin-core.md). Use uma senha forte para `rpcpassword`. + +## Backends + +```bash +git clone https://github.com/btcneves/CoreCraft.git +cd CoreCraft +``` + +Para cada atividade: + +```bash +cd atividade-1/backend +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +uvicorn app.main:app --host 0.0.0.0 --port 8001 +``` + +Repita para as portas `8002` e `8003`. + +## tmux + +```bash +tmux new-session -d -s activity1 "cd ~/CoreCraft/atividade-1/backend && source .venv/bin/activate && uvicorn app.main:app --host 0.0.0.0 --port 8001" +tmux new-session -d -s activity2 "cd ~/CoreCraft/atividade-2/backend && source .venv/bin/activate && uvicorn app.main:app --host 0.0.0.0 --port 8002" +tmux new-session -d -s activity3 "cd ~/CoreCraft/atividade-3/backend && source .venv/bin/activate && uvicorn app.main:app --host 0.0.0.0 --port 8003" +``` + +## Firewall + +```bash +sudo ufw allow 8001/tcp +sudo ufw allow 8002/tcp +sudo ufw allow 8003/tcp +``` + +Nao exponha a porta RPC `18443` publicamente. + diff --git a/docs/pt-BR/docker-stack.md b/docs/pt-BR/docker-stack.md new file mode 100644 index 0000000..5e957e4 --- /dev/null +++ b/docs/pt-BR/docker-stack.md @@ -0,0 +1,59 @@ +# Stack Docker + +[Versao em ingles](../en-US/docker-stack.md) + +O Docker Compose sobe o ambiente completo do CoreCraft: Bitcoin Core em `regtest`, inicializacao de wallets, tres backends, frontends e Caddy. + +## Inicio Rapido + +```bash +cp .env.example .env +docker compose up --build +``` + +## Servicos + +| Servico | Funcao | Porta | +|---------|--------|-------| +| `bitcoind` | no Bitcoin Core em regtest | 18443, 28332, 28333 | +| `bitcoin-init` | cria wallets e minera saldo inicial | interno | +| `atividade-1` | mempool snapshot | 8001 | +| `atividade-2` | eventos ZMQ | 8002 | +| `atividade-3` | wallets, PSBT e transacoes | 8003 | +| `caddy` | proxy reverso | 80 | + +## Acesso + +```text +http://localhost:8001 +http://localhost:8002 +http://localhost:8003 +http://localhost/atividade-1/ +http://localhost/atividade-2/ +http://localhost/atividade-3/ +``` + +## Comandos Uteis + +```bash +make up +make down +make logs +make ps +make mine +make mine-10 +make smoke +make clean +``` + +## Variaveis + +O arquivo `.env` deve manter credenciais consistentes com o Bitcoin Core: + +```env +BTC_RPC_USER=user +BTC_RPC_PASSWORD=password +``` + +Para detalhes de diagnostico, veja [`docker-troubleshooting.md`](docker-troubleshooting.md). + diff --git a/docs/pt-BR/docker-troubleshooting.md b/docs/pt-BR/docker-troubleshooting.md new file mode 100644 index 0000000..cbdfa1c --- /dev/null +++ b/docs/pt-BR/docker-troubleshooting.md @@ -0,0 +1,73 @@ +# Troubleshooting Docker + +[Versao em ingles](../en-US/docker-troubleshooting.md) + +## Diagnostico Rapido + +```bash +docker compose ps +docker compose logs --tail=50 bitcoind +docker compose logs --tail=50 atividade-1 +curl -s http://localhost:8001/health +curl -s http://localhost:8002/health +curl -s http://localhost:8003/health +``` + +## Problemas Comuns + +### RPC authentication failed + +Confirme se `.env` e `bitcoin.conf` usam as mesmas credenciais. + +```bash +docker compose exec bitcoind bitcoin-cli -regtest getblockchaininfo +``` + +### `bitcoind` unhealthy + +Na primeira execucao, aguarde alguns minutos. Depois verifique: + +```bash +docker compose logs -f bitcoind +docker compose exec bitcoind bitcoin-cli -regtest getblockchaininfo +``` + +### Backend unhealthy + +```bash +docker compose logs atividade-1 +docker compose restart atividade-1 +``` + +Troque `atividade-1` por `atividade-2` ou `atividade-3` conforme necessario. + +### ZMQ sem eventos + +Confirme se ZMQ esta ativo: + +```bash +docker compose exec bitcoind bitcoin-cli -regtest getzmqnotifications +``` + +Depois mine um bloco: + +```bash +make mine +``` + +### Porta em uso + +```bash +ss -tuln | grep -E ':(80|8001|8002|8003|18443|28332|28333)' +``` + +Pare o processo conflitante ou altere as portas em `docker-compose.yml`. + +### Reset completo + +```bash +docker compose down -v +docker system prune -a --volumes +docker compose up --build +``` + diff --git a/docs/pt-BR/getting-started.md b/docs/pt-BR/getting-started.md new file mode 100644 index 0000000..a894362 --- /dev/null +++ b/docs/pt-BR/getting-started.md @@ -0,0 +1,81 @@ +# Guia de Inicio Rapido — CoreCraft + +[Versao em ingles](../en-US/getting-started.md) + +Este guia leva o projeto do zero ate as tres atividades em execucao com Bitcoin Core em `regtest`. + +## Caminho A — Docker + +Use este caminho para validar o projeto rapidamente. + +```bash +git clone https://github.com/btcneves/CoreCraft.git +cd CoreCraft +./scripts/quickstart.sh +docker compose up --build +``` + +No Windows, use: + +```cmd +scripts\setup-windows.bat +docker compose up --build +``` + +Ao final, acesse: + +| Atividade | URL | +|-----------|-----| +| Atividade 1 | `http://localhost:8001` | +| Atividade 2 | `http://localhost:8002` | +| Atividade 3 | `http://localhost:8003` | +| Caddy | `http://localhost/atividade-1/`, `/atividade-2/`, `/atividade-3/` | + +Execute os smoke tests: + +```bash +./scripts/smoke-test.sh +``` + +Resultado esperado: `7/7 endpoints OK`. + +## Caminho B — Manual + +Use este caminho para desenvolvimento local, depuracao ou ambientes sem Docker. + +1. Instale Bitcoin Core 26+. +2. Configure `~/.bitcoin/bitcoin.conf` com `regtest=1`, RPC e ZMQ. +3. Inicie o daemon: + +```bash +bitcoind -regtest -daemon +``` + +4. Crie wallets e gere saldo: + +```bash +bitcoin-cli -regtest createwallet wallet1 +bitcoin-cli -regtest createwallet wallet2 +ADDR=$(bitcoin-cli -regtest -rpcwallet=wallet1 getnewaddress) +bitcoin-cli -regtest generatetoaddress 101 $ADDR +``` + +5. Inicie cada backend em um terminal: + +```bash +cd atividade-1/backend +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +uvicorn app.main:app --host 0.0.0.0 --port 8001 --reload +``` + +Repita para `atividade-2/backend` na porta `8002` e `atividade-3/backend` na porta `8003`. + +## Proximos Passos + +- Arquitetura: [`architecture.md`](architecture.md) +- Setup Bitcoin Core: [`setup-bitcoin-core.md`](setup-bitcoin-core.md) +- Stack Docker: [`docker-stack.md`](docker-stack.md) +- Smoke tests: [`smoke-tests.md`](smoke-tests.md) + diff --git a/docs/pt-BR/live-validation.md b/docs/pt-BR/live-validation.md new file mode 100644 index 0000000..180d2ce --- /dev/null +++ b/docs/pt-BR/live-validation.md @@ -0,0 +1,42 @@ +# Validacao ao Vivo — CoreCraft + +[Versao em ingles](../en-US/live-validation.md) + +Esta pagina resume a validacao real executada contra `bitcoind -regtest` com Bitcoin Core v31.0. + +## Ambiente + +| Campo | Valor | +|-------|-------| +| Data | 2026-05-02 | +| Bitcoin Core | v31.0.0 | +| Rede | `regtest` | +| RPC | `127.0.0.1:18443` | +| ZMQ rawblock | `tcp://127.0.0.1:28332` | +| ZMQ rawtx | `tcp://127.0.0.1:28333` | +| Backends | 8001, 8002, 8003 | + +## Checklist + +- [x] Bitcoin Core em execucao. +- [x] RPC respondendo. +- [x] ZMQ configurado. +- [x] Wallets criadas e carregadas. +- [x] Atividade 1 validada. +- [x] Atividade 2 validada. +- [x] Atividade 3 validada. +- [x] Ciclo PSBT validado: broadcast, mempool e confirmado. +- [x] Caminho de erro HTTP 503 validado com o no offline. + +## Endpoints Validados + +| Atividade | Endpoints | +|-----------|-----------| +| 1 | `/api/mempool/summary`, `/api/blockchain/lag` | +| 2 | `/api/events/summary`, `/api/events/latest`, `/api/events/state-comparison` | +| 3 | `/wallets`, `/wallet/select`, `/wallet/status`, `/tx/send`, `/tx/{txid}` | + +## Conclusao + +Todos os endpoints obrigatorios foram exercitados em uma sessao linear de validacao. A evidencia completa em ingles, incluindo respostas JSON longas capturadas da execucao real, esta em [`../en-US/live-validation.md`](../en-US/live-validation.md). + diff --git a/docs/pt-BR/public-demo.md b/docs/pt-BR/public-demo.md new file mode 100644 index 0000000..1f742d3 --- /dev/null +++ b/docs/pt-BR/public-demo.md @@ -0,0 +1,33 @@ +# Demo Publica — CoreCraft + +[Versao em ingles](../en-US/public-demo.md) + +Demonstracao dos tres backends locais expostos via Cloudflare Tunnel. + +## Ambiente + +| Campo | Valor | +|-------|-------| +| Data | 2026-05-03 | +| Bitcoin Core | v31.0.0 | +| Rede | `regtest` | +| Blocos / Headers | 215 / 215 | +| Wallets | wallet1, wallet2, smoke_test_wallet, corecraft | + +## URLs Publicas + +| Atividade | URL | +|-----------|-----| +| 1 | `https://administrators-humanitarian-define-author.trycloudflare.com` | +| 2 | `https://dice-garcia-hub-particular.trycloudflare.com` | +| 3 | `https://move-after-salaries-kde.trycloudflare.com` | + +## Resultado + +- Atividade 1 respondeu `/api/blockchain/lag` com `lag = 0`. +- Atividade 2 respondeu `/api/events/summary` com eventos ZMQ observados. +- Atividade 3 respondeu `/wallets` e `/wallet/status`. +- As tres interfaces foram servidas por HTTPS via tunnel temporario. + +As URLs eram temporarias e validas enquanto os processos `cloudflared` estavam ativos. + diff --git a/docs/pt-BR/rpc-zmq.md b/docs/pt-BR/rpc-zmq.md new file mode 100644 index 0000000..a37d13c --- /dev/null +++ b/docs/pt-BR/rpc-zmq.md @@ -0,0 +1,48 @@ +# RPC vs ZMQ + +[Versao em ingles](../en-US/rpc-zmq.md) + +## JSON-RPC + +JSON-RPC e o modelo de requisicao e resposta do Bitcoin Core. A aplicacao pergunta, o no responde. + +Usos no CoreCraft: + +- consultar mempool; +- consultar altura da blockchain; +- listar wallets e UTXOs; +- criar, assinar e transmitir transacoes. + +Exemplo: + +```python +rpc.call("getmempoolinfo") +rpc.call("sendrawtransaction", raw_tx) +``` + +## ZMQ + +ZMQ e o modelo de eventos. O Bitcoin Core publica mensagens, e a aplicacao se inscreve nos topicos desejados. + +Topicos usados: + +| Topico | Conteudo | +|--------|----------| +| `rawblock` | bloco serializado | +| `rawtx` | transacao serializada | + +Exemplo: + +```python +sock.setsockopt(zmq.SUBSCRIBE, b"rawblock") +sock.setsockopt(zmq.SUBSCRIBE, b"rawtx") +``` + +## Decisao por Atividade + +| Atividade | Tecnologia | Motivo | +|-----------|------------|--------| +| 1 | RPC | snapshot pontual | +| 2 | RPC + ZMQ | eventos em tempo real com verificacao de estado | +| 3 | RPC | operacoes de wallet sao sincronas e stateful | + diff --git a/docs/pt-BR/setup-bitcoin-core.md b/docs/pt-BR/setup-bitcoin-core.md new file mode 100644 index 0000000..1f63a6a --- /dev/null +++ b/docs/pt-BR/setup-bitcoin-core.md @@ -0,0 +1,75 @@ +# Setup do Bitcoin Core em Regtest + +[Versao em ingles](../en-US/setup-bitcoin-core.md) + +## Instalacao + +### Linux + +```bash +sudo apt-get update +sudo apt-get install -y bitcoind bitcoin-qt +``` + +Ou use o pacote oficial em [bitcoincore.org/en/download](https://bitcoincore.org/en/download/). + +### macOS + +```bash +brew install bitcoin +``` + +### Windows + +Baixe o instalador em [bitcoincore.org/en/download](https://bitcoincore.org/en/download/) e adicione `C:\Program Files\Bitcoin\daemon` ao PATH. + +Para desenvolvimento, WSL 2 com Ubuntu costuma ser a opcao mais simples. + +## Configuracao + +Crie `bitcoin.conf`. + +Linux/macOS/WSL: + +```bash +mkdir -p ~/.bitcoin +nano ~/.bitcoin/bitcoin.conf +``` + +Conteudo recomendado: + +```ini +regtest=1 +server=1 +txindex=1 +fallbackfee=0.0001 + +[regtest] +rpcuser=user +rpcpassword=password +rpcbind=127.0.0.1 +rpcallowip=127.0.0.1 +zmqpubrawblock=tcp://127.0.0.1:28332 +zmqpubrawtx=tcp://127.0.0.1:28333 +``` + +## Inicializacao + +```bash +bitcoind -regtest -daemon +bitcoin-cli -regtest getblockchaininfo +bitcoin-cli -regtest getzmqnotifications +``` + +## Wallets e Saldo + +```bash +bitcoin-cli -regtest createwallet wallet1 +bitcoin-cli -regtest createwallet wallet2 +ADDR=$(bitcoin-cli -regtest -rpcwallet=wallet1 getnewaddress) +bitcoin-cli -regtest generatetoaddress 101 $ADDR +bitcoin-cli -regtest -rpcwallet=wallet1 getbalances +``` + +Em regtest, 101 blocos tornam o primeiro coinbase gastavel. + diff --git a/docs/pt-BR/smoke-tests.md b/docs/pt-BR/smoke-tests.md new file mode 100644 index 0000000..513f1f1 --- /dev/null +++ b/docs/pt-BR/smoke-tests.md @@ -0,0 +1,55 @@ +# Smoke Tests + +[Versao em ingles](../en-US/smoke-tests.md) + +Os smoke tests validam os endpoints principais das tres atividades contra um Bitcoin Core em `regtest`. + +## Pre-requisitos + +```bash +bitcoind -regtest -daemon +bitcoin-cli -regtest createwallet wallet1 +bitcoin-cli -regtest createwallet wallet2 +ADDR=$(bitcoin-cli -regtest -rpcwallet=wallet1 getnewaddress) +bitcoin-cli -regtest generatetoaddress 101 $ADDR +``` + +Inicie os tres backends ou use Docker Compose. + +## Execucao Automatizada + +```bash +./scripts/smoke-test.sh +``` + +Resultado esperado: + +```text +RESULT: 7/7 endpoints OK +``` + +## Testes Manuais + +Atividade 1: + +```bash +curl -s http://127.0.0.1:8001/api/mempool/summary | python3 -m json.tool +curl -s http://127.0.0.1:8001/api/blockchain/lag | python3 -m json.tool +``` + +Atividade 2: + +```bash +curl -s http://127.0.0.1:8002/api/events/summary | python3 -m json.tool +curl -s http://127.0.0.1:8002/api/events/latest | python3 -m json.tool +curl -s http://127.0.0.1:8002/api/events/state-comparison | python3 -m json.tool +``` + +Atividade 3: + +```bash +curl -s http://127.0.0.1:8003/wallets | python3 -m json.tool +curl -s http://127.0.0.1:8003/wallet/status | python3 -m json.tool +``` + +Para validar confirmacao, envie uma transacao pela Atividade 3 e mine um bloco. diff --git a/scripts/capture-dashboard-screenshots.py b/scripts/capture-dashboard-screenshots.py index fbdcebf..76ee8a9 100755 --- a/scripts/capture-dashboard-screenshots.py +++ b/scripts/capture-dashboard-screenshots.py @@ -9,9 +9,9 @@ ASSETS_DIR = ROOT_DIR / "docs" / "assets" VIEWPORT = {"width": 1440, "height": 900} DASHBOARDS = [ - ("http://localhost/atividade-1/", "atividade-1-dashboard.png"), - ("http://localhost/atividade-2/", "atividade-2-events.png"), - ("http://localhost/atividade-3/", "atividade-3-wallet.png"), + ("http://localhost/atividade-1/", "activity-1-dashboard.png"), + ("http://localhost/atividade-2/", "activity-2-events.png"), + ("http://localhost/atividade-3/", "activity-3-wallet.png"), ] diff --git a/scripts/quickstart.sh b/scripts/quickstart.sh index c3d66b5..e788701 100755 --- a/scripts/quickstart.sh +++ b/scripts/quickstart.sh @@ -55,7 +55,7 @@ else echo "" echo -e " ${BOLD}./scripts/quickstart.sh${NC}" echo "" - echo " Guia completo: docs/getting-started.md" + echo " Guia completo: docs/README.md" echo "" exit 1 fi diff --git a/scripts/setup-linux.sh b/scripts/setup-linux.sh index 0a5de13..6b76933 100755 --- a/scripts/setup-linux.sh +++ b/scripts/setup-linux.sh @@ -228,5 +228,5 @@ echo " make ps # Check service status" echo " make down # Stop all services" echo " make clean # Stop and remove volumes" echo "" -info "Documentation: docs/docker-stack.md" +info "Documentation: docs/README.md" echo "" \ No newline at end of file diff --git a/scripts/setup-mac.sh b/scripts/setup-mac.sh index 0f45ca5..021bb76 100755 --- a/scripts/setup-mac.sh +++ b/scripts/setup-mac.sh @@ -264,5 +264,5 @@ echo " make ps # Check service status" echo " make down # Stop all services" echo " make clean # Stop and remove volumes" echo "" -info "Documentation: docs/docker-stack.md" +info "Documentation: docs/README.md" echo "" \ No newline at end of file diff --git a/scripts/setup-windows.bat b/scripts/setup-windows.bat index f224b4f..a6bbf4c 100644 --- a/scripts/setup-windows.bat +++ b/scripts/setup-windows.bat @@ -217,7 +217,7 @@ echo docker compose logs -f # View logs echo docker compose ps # Check service status echo docker compose down # Stop all services echo. -echo [INFO] Documentation: docs/docker-stack.md +echo [INFO] Documentation: docs/README.md echo. echo [INFO] Notas para uso manual (sem Docker): echo - Para usar bitcoin-cli no Windows nativo, adicione ao PATH: