Projeto full stack de e-commerce desenvolvido para praticar front-end, back-end, banco de dados e fluxo de compra. A aplicacao tem area de usuario, catalogo de produtos, carrinho, finalizacao de pedido e um painel administrativo para gerenciar produtos e acompanhar pedidos.
- React 19
- Vite
- React Router
- Zustand para gerenciamento de estado
- Chakra UI
- Tailwind CSS
- React Hook Form
- Zod
- ASP.NET Core
- .NET 10
- Entity Framework Core
- PostgreSQL
- Npgsql
- Migrations do EF Core
xablauProject/
|-- xablauBack/
| |-- xablauBack.API/ # API ASP.NET Core, controllers e Program.cs
| |-- xablauBack.Application/ # contratos e servicos da aplicacao
| |-- xablauBack.Domain/ # entidades do dominio
| `-- xablauBack.Infrastructure/ # DbContext, migrations e seed do banco
|-- xablauFront/
| |-- src/
| | |-- components/ # componentes reutilizaveis
| | |-- layouts/ # layouts de usuario e admin
| | |-- pages/ # telas da aplicacao
| | |-- routes/ # rotas do React Router
| | |-- services/ # chamadas para API
| | `-- store/ # stores Zustand
| `-- package.json
`-- README.md
- Cadastro e login de usuarios.
- Listagem de produtos.
- Pagina de detalhes do produto.
- Favoritos.
- Carrinho integrado com o back-end.
- Validacao de estoque ao adicionar ou finalizar compra.
- Finalizacao de pedido com frete, pagamento, cupom e parcelas.
- Historico de pedidos do usuario.
- Painel admin para cadastrar, editar e remover produtos.
- Painel admin para consultar pedidos e atualizar status.
- Cupons e secoes da home salvos no
localStoragedo navegador.
- Node.js instalado.
- npm instalado.
- .NET SDK 10 instalado.
- PostgreSQL local ou banco PostgreSQL hospedado, como Neon.
Crie o arquivo xablauBack/xablauBack.API/appsettings.json com a connection string do seu banco. Esse arquivo fica no .gitignore porque contem dados sensiveis.
Exemplo:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=xablau;Username=postgres;Password=sua_senha;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}Depois rode a API:
cd xablauBack
dotnet restore
dotnet run --project xablauBack.APIPor padrao, a API sobe em:
http://localhost:5002
https://localhost:7070
Ao iniciar, a API executa as migrations e popula o banco com produtos iniciais caso a tabela esteja vazia.
Em outro terminal:
cd xablauFront
npm install
npm run devO Vite deve abrir a aplicacao em:
http://localhost:5173
O front-end esta configurado para chamar a API em:
http://localhost:5002/api
- Inicie o back-end com
dotnet run --project xablauBack.API. - Inicie o front-end com
npm run dev. - Acesse
http://localhost:5173. - Cadastre um usuario pela tela de registro.
- Faca login com o usuario cadastrado.
- Abra um produto e adicione ao carrinho.
- Altere quantidades, remova itens ou finalize a compra.
- Acesse a pagina de pedidos para verificar o historico.
- Acesse o painel admin para testar cadastro, edicao e remocao de produtos.
No estado atual do projeto, o login do admin e uma autenticacao de demonstracao feita no front-end, dentro de xablauFront/src/store/useAdminAuthStore.js. Antes de usar em producao, essa autenticacao deve ser movida para o back-end.
POST /api/auth/register
POST /api/auth/login
GET /api/produtos
GET /api/produtos/{id}
POST /api/produtos
PATCH /api/produtos/{id}
PATCH /api/produtos/{id}/estoque
DELETE /api/produtos/{id}
GET /api/carrinho/{usuarioId}
POST /api/carrinho/{usuarioId}/itens
PUT /api/carrinho/{usuarioId}/itens/{produtoId}
DELETE /api/carrinho/{usuarioId}/itens/{produtoId}
DELETE /api/carrinho/{usuarioId}/itens
POST /api/carrinho/{usuarioId}/finalizar
GET /api/pedidos
GET /api/pedidos/usuario/{usuarioId}
PATCH /api/pedidos/{pedidoId}/status
npm run dev # inicia o ambiente de desenvolvimento
npm run build # gera build de producao
npm run preview # pre-visualiza a build
npm run lint # roda o ESLint- Nao publique
appsettings.jsoncom connection string real. - Se uma senha de banco ja foi commitada alguma vez, troque essa senha no provedor do banco antes de publicar o repositorio.
- O login admin atual e apenas para estudo/demonstracao. Em um projeto real, ele deve ser validado pelo back-end, com senha criptografada e sessao/token seguro.
- Evite salvar tokens, senhas ou chaves de API diretamente no front-end ou no repositorio.
Projeto em desenvolvimento para fins de estudo e pratica. Algumas regras e validacoes ja estao no back-end, enquanto algumas funcionalidades administrativas auxiliares ainda usam estado local no navegador.