O DEX BLOG é uma plataforma de conteúdo 100% descentralizada. A missão é construir o futuro da mídia: uma plataforma justa, transparente e imparável, hospedada inteiramente no Internet Computer (ICP).
Este projeto abandona servidores centralizados, bancos de dados e APIs, em favor de uma arquitetura Web3 pura, onde tanto o frontend quanto o backend rodam on-chain.
Este dApp é construído usando a arquitetura padrão e "sem gambiarra" do Internet Computer, dividida em dois canisters principais:
- Frontend Canister: Serve a interface do usuário, construída como um aplicativo React (usando Vite como ferramenta de build).
- Backend Canister: Contém toda a lógica de negócios (criação de posts, gerenciamento de usuários, etc.), escrita em Rust e compilada para WebAssembly (Wasm).
| Componente | Tecnologia | Hospedagem |
|---|---|---|
| Frontend | React (com Vite) | Canister de Frontend (ICP) |
| Backend | Rust | Canister de Backend (ICP) |
| Rede | Internet Computer (ICP) | Internet Computer |
| SDK | dfx |
N/A |
Para contribuir com este projeto, seu ambiente de desenvolvimento deve ser compatível com as seguintes ferramentas e versões (ou superiores). Estas são as versões que foram validadas durante a configuração inicial do projeto.
| Tecnologia | Finalidade | Versão Verificada |
|---|---|---|
| dfx (ICP SDK) | SDK principal do Internet Computer | 0.29.2 |
| rustc | Compilador Rust | 1.91.0 |
| rustup | Gerenciador de Toolchain do Rust | 1.28.2 |
| React | Biblioteca de UI do Frontend | 18.2.0 |
| Vite | Ferramenta de Build do Frontend | ^4.0.1 |
| Node.js | Runtime para build do frontend | 20.x (Recomendado) |
| npm | Gerenciador de Pacotes do Node | 10.x (Recomendado) |
Siga este guia passo a passo para configurar sua máquina local (Linux/macOS/WSL) para construir e rodar o projeto.
dfx é a ferramenta de linha de comando essencial para o desenvolvimento no ICP.
-
Execute o script de instalação oficial:
sh -ci "$(curl -fsSL [https://internetcomputer.org/install.sh](https://internetcomputer.org/install.sh))" -
Após a instalação, recarregue seu shell (ou feche e reabra o terminal) e execute o comando
sourcesugerido:source "$HOME/.local/share/dfx/env"
-
Validação: Verifique se a versão correta (
0.29.2ou superior) está instalada.dfx --version
(Solução de Problemas: Se o comando acima falhar com
error: dfx 0.29.2 is not installed, executedfxvm install 0.29.2para corrigir.)
O Rust é usado para construir o canister de backend.
-
Instale
rustup(o gerenciador de toolchain do Rust):curl --proto '=https' --tlsv1.2 -sSf [https://sh.rustup.rs](https://sh.rustup.rs) | sh
-
Feche e reabra seu terminal para que o
rustupesteja no seuPATH. -
Adicione o "alvo" de compilação WebAssembly (Wasm). Isso permite que o Rust compile para o formato que o ICP entende.
rustup target add wasm32-unknown-unknown
-
Validação: Verifique suas instalações.
rustc --version rustup --version
O Node.js é necessário para construir o frontend (React/Vite) e instalar as dependências do npm.
-
Recomendamos usar o
nvm(Node Version Manager) para gerenciar suas versões do Node.curl -o- [https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh](https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh) | bash -
Instale e use uma versão LTS recente (ex: 20.x):
nvm install 20 nvm use 20
-
Validação:
node --version npm --version
-
Para Criar um Novo Projeto (Recomendado): Use o
dfxpara criar o "esqueleto" do projeto com a base correta (Rust + React).dfx new dex_blog --type=rust --frontend=react cd dex_blog -
Para Clonar (se já existir no Git):
git clone [https://github.com/seu-usuario/dex_blog.git](https://github.com/seu-usuario/dex_blog.git) cd dex_blog
Após configurar seu ambiente e criar/clonar o projeto, siga estes passos para confirmar que seu ambiente está 100% funcional.
-
Inicie a Rede Local: Abra uma nova janela de terminal, navegue até a pasta
dex_bloge execute:dfx start --clean --background
(Isso inicia sua própria "blockchain" local. Deixe este terminal rodando.)
-
Instale Dependências: No seu terminal original (dentro da pasta
dex_blog), instale os pacotesnpmnecessários para o frontend React:npm install
-
Compile e Implante (Deploy): Este é o comando principal. Ele irá compilar seu backend Rust e construir seu frontend React, implantando ambos na sua rede local.
dfx deploy
-
Teste no Navegador: Após o deploy ser concluído, o terminal fornecerá uma URL para o seu frontend. Abra-a no seu navegador (use a URL recomendada, que termina com
.localhost):URLs: Frontend canister via browser: dex_blog_frontend: - http://[ID_DO_CANISTER].localhost:4943/(Nota: Seu ID de canister será diferente).
Você deverá ver uma página de exemplo com o logo do React girando, confirmando que sua base Rust + React está 100% funcional.
/src/dex_blog_backend/: Contém todo o código-fonte do backend em Rust. O ponto de entrada principal ésrc/lib.rs./src/dex_blog_frontend/: Contém o código-fonte do frontend em React (com Vite). Esta é a nossa base de desenvolvimento. O ponto de entrada principal ésrc/main.tsx.dfx.json: O "cérebro" do projeto. Este arquivo de manifesto define seus canisters, como construí-los e como eles se relacionam.
. ├── Cargo.lock ├── Cargo.toml ├── dfx.json ├── README.md └── src ├── declarations │ ├── dex_blog_backend │ └── dex_blog_frontend ├── dex_blog_backend │ ├── Cargo.toml │ ├── dex_blog_backend.did │ └── src └── dex_blog_frontend ├── app ├── eslint.config.mjs ├── next.config.ts ├── next-env.d.ts ├── out ├── package.json ├── package-lock.json ├── postcss.config.mjs ├── public ├── README.md └── tsconfig.json