Este documento descreve a arquitetura, tecnologias, estrutura de pastas e estratégia de deploy para o projeto full-stack da NestFin:
- Frontend Web: Next.js
- Backend: C# com ASP.NET Core
- Banco de Dados: MySQL
- Infraestrutura: AWS (Amplify, RDS, Elastic Beanstalk/App Runner, etc.)
- Next.js → ASP.NET Core → MySQL (AWS RDS)
- Frontend hospedado no Amplify
- Backend no App Runner ou Elastic Beanstalk
| Componente | Tecnologia | Versão | Documentação |
|---|---|---|---|
| Frontend | Next.js | v14 | nextjs.org/docs |
| Backend | ASP.NET Core | 8.0 | learn.microsoft.com/aspnet/core |
| Banco | MySQL | 8.0+ | dev.mysql.com/doc |
| ORM | Entity Framework | 8.0 | learn.microsoft.com/ef/core |
| Infra | AWS | - | aws.amazon.com |
nestfin/ ├── web/ # Frontend Next.js ├── backend/ # Backend ASP.NET Core ├── README.md # Documentação
4. Backend em C# (ASP.NET Core)
Pacotes:
- Pomelo.EntityFrameworkCore.MySql
- Microsoft.EntityFrameworkCore.Design
Configuração: appsettings.json
"ConnectionStrings": {
"DefaultConnection": "server=localhost;port=3306;database=nestfin_db;user=root;password=suasenha"
}
Modelo:
public class User {
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}Controller:
[HttpGet]
public async Task<IActionResult> Get() => Ok(await _context.Users.ToListAsync());Next.js (exemplo de chamada à API):
useEffect(() => {
fetch("<https://api.seudominio.com/api/users>")
.then((res) => res.json())
.then(setUsers);
}, []);Frontend:
- AWS Amplify conectado ao GitHub
Backend:
- App Runner ou Elastic Beanstalk com Dockerfile
MySQL:
- Amazon RDS
- Porta 3306 liberada para backend
- AWS Secrets Manager
- HTTPS em todas as rotas
- JWT para autenticação
- Rate limiting
- AWS WAF
- GitHub Actions para deploy do frontend (Amplify)
- Docker + deploy no App Runner
- Migrations automáticas via EF Core