Um projeto fullstack simples para demonstrar a criação de uma aplicação CRUD (Create, Read, Update, Delete) utilizando Rust com o framework Axum no backend e HTML, CSS e JavaScript puros (Vanilla JS) no frontend.
- Criar (Create): Adicionar novos usuários ao banco de dados através de um formulário.
- Ler (Read): Listar todos os usuários cadastrados em tempo real.
- Atualizar (Update): Editar as informações de um usuário existente.
- Deletar (Delete): Remover um usuário da lista e do banco de dados.
Este projeto é dividido em duas partes principais:
- Rust: Linguagem de programação moderna e segura.
- Axum: Framework web ergonômico e modular, construído sobre o ecossistema Tokio.
- Tokio: Runtime assíncrono para aplicações em Rust.
- SQLx: Toolkit SQL assíncrono e seguro para Rust.
- SQLite: Banco de dados relacional embarcado, utilizado para simplicidade.
- Serde: Framework para serialização e desserialização de dados (JSON).
- HTML5: Estrutura da página web.
- CSS3: Estilização moderna e responsiva.
- JavaScript (Vanilla JS): Lógica do cliente para consumir a API RESTful e manipular o DOM.
Antes de começar, certifique-se de que você tem as seguintes ferramentas instaladas em seu sistema:
- Rust e Cargo: https://www.rust-lang.org/tools/install
- sqlx-cli: Ferramenta de linha de comando para gerenciar migrações do SQLx.
cargo install sqlx-cli
- Python 3: Utilizado para servir os arquivos estáticos do frontend com um servidor web simples.
Siga os passos abaixo para configurar e rodar o projeto localmente.
# Se estiver usando git
git clone https://exemplo.com/seu-repositorio.git
cd seu-repositorio
Todas as ações a seguir devem ser executadas dentro da pasta backend/
.
cd backend
a. Crie o arquivo de ambiente .env
:
Este arquivo conterá a URL de conexão com o banco de dados.
echo "DATABASE_URL=sqlite:database.db" > .env
b. Crie o arquivo do banco de dados SQLite:
O sqlx-cli
lerá o arquivo .env
para saber qual banco de dados criar.
sqlx database create
c. Rode as migrações:
Este comando criará a tabela users
no banco de dados com base nos arquivos da pasta migrations/
.
sqlx migrate run
Nenhuma configuração é necessária para o frontend, pois ele consiste apenas de arquivos estáticos.
Para rodar a aplicação, você precisará de dois terminais abertos simultaneamente.
Navegue até a pasta backend/
e inicie o servidor Rust.
cd backend
cargo run
O servidor estará rodando e escutando em http://127.0.0.1:3000
.
Navegue até a pasta frontend/
e inicie um servidor web simples com Python.
cd frontend
python -m http.server 8000
Agora, abra seu navegador e acesse a seguinte URL:
.
├── backend
│ ├── Cargo.toml
│ ├── .env # Configuração do banco (criado manualmente)
│ ├── database.db # Arquivo do banco (criado pelo sqlx)
│ ├── migrations/
│ │ └── ..._create_users_table.sql
│ └── src
│ └── main.rs # Lógica da API
│
└── frontend
├── index.html # Estrutura da página
├── script.js # Lógica do cliente
└── style.css # Estilos
O backend expõe os seguintes endpoints RESTful:
Método HTTP | Endpoint | Descrição |
---|---|---|
POST |
/users |
Cria um novo usuário. |
GET |
/users |
Retorna a lista de todos os usuários. |
GET |
/users/{id} |
Retorna um usuário específico. |
PUT |
/users/{id} |
Atualiza um usuário existente. |
DELETE |
/users/{id} |
Deleta um usuário específico. |
curl -X POST http://127.0.0.1:3000/users \
-H "Content-Type: application/json" \
-d '{"name": "João Silva", "email": "joao@example.com"}'
curl http://127.0.0.1:3000/users
curl -X PUT http://127.0.0.1:3000/users/1 \
-H "Content-Type: application/json" \
-d '{"name": "João Santos", "email": "joao.santos@example.com"}'
curl -X DELETE http://127.0.0.1:3000/users/1
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.