---
title: "Projetos Práticos em Rust para Portfólio e Vagas"
url: "https://rustlang.com.br/carreira/projetos-praticos-rust/"
markdown_url: "https://rustlang.com.br/carreira/projetos-praticos-rust.MD"
description: "Lista guiada de projetos práticos em Rust para júnior, pleno e sênior: CLI, API Axum, WebAssembly, sistemas, DevOps, testes, README e como usar no portfólio."
date: ""
author: ""
---

# Projetos Práticos em Rust para Portfólio e Vagas

Lista guiada de projetos práticos em Rust para júnior, pleno e sênior: CLI, API Axum, WebAssembly, sistemas, DevOps, testes, README e como usar no portfólio.


# Projetos Práticos em Rust para Portfólio e Vagas

Aprender Rust só lendo sobre ownership, borrowing e lifetimes é lento. O salto acontece quando você constrói projetos pequenos o suficiente para terminar, mas realistas o bastante para mostrar como você pensa. Para quem busca [vagas Rust](/vagas/), um portfólio com três ou quatro projetos bem documentados costuma valer mais do que uma lista longa de crates que nunca saíram do `cargo new`.

Este guia organiza ideias de projetos por nível e por sinal de carreira. A meta não é impressionar com complexidade artificial. A meta é provar que você sabe transformar Rust em software operável: código limpo, testes, README, tratamento de erro, CI, releases e decisões técnicas explicadas.

Se você ainda está começando, leia também o [plano de estudos júnior](/carreira/plano-estudos-junior/) e o guia de [primeiro emprego em Rust](/carreira/primeiro-emprego-rust/). Se já tem alguns repositórios, use este roteiro junto com o guia de [portfólio no GitHub](/carreira/portfolio-github/).

## O que faz um projeto Rust ser bom para portfólio

Um projeto de portfólio não precisa ser grande. Ele precisa ser avaliável. Um recrutador técnico deve conseguir abrir o repositório e entender rapidamente:

1. **Qual problema o projeto resolve**.
2. **Como rodar localmente** sem adivinhar comandos.
3. **Como os erros são tratados** sem `unwrap()` espalhado em caminho crítico.
4. **Quais testes existem** e o que eles cobrem.
5. **Quais trade-offs você escolheu** e por quê.
6. **Como o projeto seria operado** em um cenário real.

Em Rust, isso é ainda mais importante porque muita gente aprende a sintaxe, mas pouca gente mostra maturidade de produção. Um projeto simples com `Result`, logs, testes, documentação e release vale mais do que uma arquitetura enorme sem acabamento.

## Projeto 1: CLI de produtividade com Clap

**Nível:** júnior a pleno  
**Sinal de carreira:** fundamentos, I/O, ergonomia, tratamento de erros  
**Tempo realista:** 1 a 2 semanas

Crie uma ferramenta de linha de comando que resolve um problema cotidiano. Exemplos:

- organizador de downloads por extensão e data;
- buscador de texto com filtros simples, inspirado em `grep`;
- conversor de CSV para JSON, Markdown ou SQLite;
- auditor de links em arquivos Markdown;
- resumidor de logs por nível, serviço e janela de tempo.

Use [Clap](/artigos/clap-vs-structopt/) para argumentos, `thiserror` ou `anyhow` para erros, `serde` quando houver formatos estruturados e testes de integração com arquivos de exemplo.

O README deve mostrar:

```bash
cargo install --path .
minha-cli --input exemplos/dados.csv --format json
cargo test
cargo clippy -- -D warnings
```

O diferencial é tratar casos ruins: arquivo ausente, formato inválido, permissão negada, diretório vazio e argumento contraditório. Isso mostra maturidade muito rápido.

## Projeto 2: API Axum com PostgreSQL e SQLx

**Nível:** júnior avançado a pleno  
**Sinal de carreira:** backend, async Rust, banco, deploy  
**Tempo realista:** 2 a 4 semanas

Construa uma API pequena, mas completa. Não precisa ser uma rede social. Escolha um domínio simples:

- catálogo de livros técnicos;
- tracker de hábitos para estudos;
- API de vagas favoritas;
- controle de inventário pessoal;
- agenda de eventos de comunidade.

O importante é cobrir o ciclo de backend real:

- rotas HTTP com Axum;
- modelos com Serde;
- persistência com PostgreSQL e SQLx;
- migrations versionadas;
- configuração por variáveis de ambiente;
- health check;
- logs com `tracing`;
- testes de handlers ou camada de serviço;
- Docker Compose para rodar API e banco.

Conecte o projeto aos guias do próprio site: [deploy Axum com Docker Compose e PostgreSQL](/blog/deploy-axum-docker-compose-postgresql-2026/), [serviços resilientes com Tower e Axum](/blog/rust-servicos-resilientes-tower-axum-2026/) e [OpenTelemetry em produção](/blog/rust-opentelemetry-producao-2026/). Para [carreira em web backend](/carreira/nicho-web-backend/), esse é um dos sinais mais fortes.

## Projeto 3: Worker assíncrono com filas e retries

**Nível:** pleno  
**Sinal de carreira:** sistemas distribuídos, confiabilidade, operação  
**Tempo realista:** 2 a 4 semanas

Muita vaga Rust não é para criar páginas web. É para construir peças de infraestrutura: workers, consumidores de fila, processadores de eventos, indexadores e ferramentas internas. Um worker bem feito comunica isso melhor que um CRUD genérico.

Ideias:

- consumidor que lê eventos de uma fila e grava em PostgreSQL;
- indexador de feeds RSS com deduplicação;
- processador de imagens ou arquivos com fila de tarefas;
- coletor de métricas que agrega dados por janela de tempo.

Inclua timeout, retry com backoff, dead letter simples, logs estruturados e métricas básicas. Se usar broker real, comece com NATS ou RabbitMQ via Docker Compose. Se quiser simplificar, implemente uma fila em banco e explique a limitação.

Esse projeto conversa com [Rust para mensageria com Kafka, RabbitMQ e NATS](/blog/rust-mensageria-kafka-rabbitmq-nats-2026/) e com nichos de [DevOps e infraestrutura](/carreira/nicho-devops-infra/).

## Projeto 4: WebAssembly com Rust e TypeScript

**Nível:** pleno  
**Sinal de carreira:** interoperabilidade, performance, produto  
**Tempo realista:** 2 a 3 semanas

WebAssembly é uma das portas de entrada mais claras para Rust em produto. Escolha uma tarefa em que performance ou segurança de tipos faça sentido:

- parser de Markdown simplificado;
- validador de CPF/CNPJ em lote;
- compressão ou transformação de imagem;
- simulação visual pequena;
- motor de regras para formulário complexo.

Compile com `wasm-pack`, exponha uma API pequena para TypeScript e crie uma página demonstrando o uso. O projeto fica mais forte quando inclui benchmark simples comparando a versão Rust/WASM com uma implementação JavaScript ingênua.

Evite prometer que Rust sempre será mais rápido. Explique custo de serialização, tamanho do bundle e quando WASM vale a pena. Essa honestidade técnica ajuda em entrevistas.

## Projeto 5: Crate pequena publicada ou pronta para publicar

**Nível:** pleno a sênior  
**Sinal de carreira:** design de API, documentação, manutenção  
**Tempo realista:** 2 a 6 semanas

Uma crate pequena e bem cuidada demonstra uma habilidade diferente: pensar em usuários. Pode ser:

- parser de um formato simples;
- biblioteca de validação de dados brasileiros;
- wrapper tipado para uma API pública;
- utilitário para normalização de texto;
- estrutura de dados didática com documentação.

Inclua documentação com exemplos executáveis, `cargo test --doc`, changelog, licença, versionamento semântico e CI. Se publicar no crates.io, seja conservador: escolha um nome claro, mantenha compatibilidade e responda issues. Se não publicar, escreva no README o que faltaria para publicar.

Para avançar, conecte com [CI/CD para projetos Rust](/artigos/ci-cd-rust/) e [boas práticas de error handling](/artigos/boas-praticas-error-handling/).

## Projeto 6: Ferramenta de segurança para supply chain

**Nível:** pleno a sênior  
**Sinal de carreira:** segurança, DevSecOps, maturidade corporativa  
**Tempo realista:** 2 a 4 semanas

Empresas que adotam Rust em produção se preocupam com dependências, licenças, SBOM e vulnerabilidades. Um projeto nessa linha se destaca para vagas de plataforma, segurança e fintech.

Ideias:

- auditor de `Cargo.toml` que detecta dependências sem versão fixada;
- wrapper que roda `cargo audit`, `cargo deny` e gera relatório Markdown;
- gerador de inventário de crates por workspace;
- verificador de licenças com política configurável.

O valor está em transformar a saída em decisão: aprovado, aviso ou bloqueado. Mostre exemplo de política, saída em CI e como um time usaria isso em pull requests. Leia também o guia de [supply chain com cargo-deny e SBOM](/blog/rust-seguranca-supply-chain-cargo-deny-sbom-2026/).

## Projeto 7: Sistema embarcado ou simulado

**Nível:** pleno a sênior  
**Sinal de carreira:** baixo nível, memória, hardware, sistemas críticos  
**Tempo realista:** variável

Se você quer seguir para [sistemas embarcados](/carreira/nicho-embedded/) ou programação de sistemas, um projeto nessa direção ajuda muito. Mesmo sem placa física, dá para começar com simulação:

- driver simples com traits para abstrair hardware;
- firmware para ESP32 ou Raspberry Pi Pico;
- parser de protocolo binário;
- ring buffer ou fila lock-free didática;
- telemetria de sensores simulados com serialização eficiente.

Documente o hardware usado, como reproduzir o ambiente e quais limitações existem. Se usar `no_std`, explique por que isso muda alocação, erros e dependências.

## Checklist de acabamento antes de divulgar

Antes de colocar o projeto no currículo ou LinkedIn, rode este checklist:

- `cargo fmt` aplicado;
- `cargo clippy -- -D warnings` sem avisos relevantes;
- `cargo test` passando;
- README com instalação, uso, exemplos e decisões técnicas;
- `.env.example` quando houver configuração;
- CI configurado;
- licença definida;
- issues ou roadmap pequeno para próximos passos;
- screenshots, GIF ou asciinema quando fizer sentido;
- release ou tag inicial para marcar estabilidade.

Se o projeto tem frontend, inclua link de demo. Se é CLI, inclua exemplos de entrada e saída. Se é backend, inclua OpenAPI, coleção HTTP ou comandos `curl`.

## Como escolher o projeto certo para sua vaga-alvo

A melhor escolha depende da vaga que você quer:

| Vaga-alvo | Projeto mais forte |
|-----------|--------------------|
| Backend Rust | API Axum + PostgreSQL, worker com fila |
| DevOps/Platform | CLI, auditor de supply chain, ferramenta de deploy |
| Segurança | auditor Cargo, parser seguro, ferramenta de análise |
| Embedded/IoT | driver, firmware, parser binário, simulação de sensor |
| WebAssembly | módulo WASM com demo TypeScript |
| Blockchain | indexador, parser de transações, smart contract didático |
| Júnior geral | CLI bem acabada + API simples + contribuição open source |

Não tente cobrir todos os nichos. Escolha dois ou três projetos coerentes com sua narrativa. Um perfil que diz "quero backend e plataforma" pode ter uma API Axum, uma CLI de operação e um worker. Um perfil que diz "quero segurança" pode ter auditor de dependências, parser binário e contribuições em crates relacionadas.

## Como falar desses projetos em entrevista

Prepare respostas curtas para estas perguntas:

- Qual foi o bug mais difícil?
- Onde você usou ownership a seu favor?
- Que decisão você mudaria hoje?
- Como o projeto se comporta com erro externo?
- Como você testou?
- O que aconteceria com dez vezes mais tráfego ou dados?
- O que você faria antes de colocar em produção?

Responder bem importa mais do que ter usado a crate da moda. Rust recompensa clareza. Mostre que você entende invariantes, custos, limites e operação.

## Próximo passo

Escolha um projeto pequeno e termine. Depois melhore o acabamento. Um repositório concluído, testado e explicado abre mais portas do que cinco ideias ambiciosas pela metade.

Se seu objetivo é emprego, conecte este guia com [currículo para Rust](/carreira/curriculo-rust/), [entrevistas técnicas](/carreira/entrevistas-tecnicas/) e a página de [vagas Rust](/vagas/). Se seu objetivo é crescer como autônomo, veja [freelancing com Rust](/carreira/freelancing-rust/) e transforme um desses projetos em estudo de caso.
