Projeto esqueleto pronto para uso. Contém autenticação completa (login/registro/JWT), rota protegida e integração full-stack.
react-ef-skeleton/
├── backend/ # .NET 8 Web API + Entity Framework + JWT
├── frontend/ # React 18 + TypeScript + Vite
├── docker-compose.yml
└── README.md
| Ferramenta | Versão mínima | Download |
|---|---|---|
| .NET SDK | 8.0 | https://dotnet.microsoft.com/download |
| Node.js | 18 LTS | https://nodejs.org |
| Docker Desktop | qualquer | https://www.docker.com/products/docker-desktop |
# Na raiz do projeto
docker-compose up -dIsso sobe um container PostgreSQL na porta 5432 com:
- Banco:
skeleton_db - Usuário:
postgres - Senha:
postgres
Para parar: docker-compose down
Para parar e apagar os dados: docker-compose down -v
dotnet tool install --global dotnet-efcd backend
dotnet restoredotnet ef migrations add InitialCreatedotnet ef database updateDica: Toda vez que você mudar um Model (ex: adicionar campo), rode:
dotnet ef migrations add NomeDaAlteracao dotnet ef database update
dotnet runO backend fica em http://localhost:5000.
Swagger disponível em http://localhost:5000/swagger.
cd frontend
npm install
npm run devO frontend fica em http://localhost:5173.
- Acesse
http://localhost:5173 - Clique em Criar conta para registrar um usuário
- Faça login e você será redirecionado para o Dashboard
- O token JWT é salvo no
localStorageautomaticamente
| Método | Rota | Auth | Descrição |
|---|---|---|---|
| POST | /api/auth/login |
Não | Login, retorna JWT |
| POST | /api/auth/register |
Não | Registro, retorna JWT |
| GET | /api/auth/me |
Sim | Dados do usuário logado |
Tudo fica em backend/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=skeleton_db;Username=postgres;Password=postgres"
},
"Jwt": {
"Key": "TROQUE_ESTA_CHAVE_POR_UMA_SEGURA_COM_32_CARACTERES_MINIMO",
"Issuer": "SkeletonApp",
"Audience": "SkeletonApp",
"ExpiresInMinutes": 60
}
}Importante: Troque o valor de
Jwt:Keypor uma string aleatória de pelo menos 32 caracteres antes de colocar em produção.
- Crie o Model em
backend/Models/ - Adicione o
DbSet<SuaEntidade>noAppDbContext.cs - Rode
dotnet ef migrations add AdicionarSuaEntidade - Rode
dotnet ef database update - Crie o Controller em
backend/Controllers/
Backend:
cd backend
dotnet publish -c Release -o ./publishFrontend:
cd frontend
npm run build
# Arquivos gerados em frontend/dist/