Sistema de Ponto de Venda (POS) com gestão financeira completa, desenvolvido com Clean Architecture e .NET 8.
- Clean Architecture - Arquitetura limpa e escalável
- API RESTful - Endpoints documentados com Swagger/OpenAPI
- Autenticação JWT - Segurança com tokens Bearer
- Testes Automatizados - Cobertura completa com xUnit
- CI/CD - Pipeline automático com GitHub Actions e Azure DevOps
- Monitoramento - Health checks e logs estruturados com Serilog
- Frontend React - Interface moderna e responsiva
- .NET 8 SDK
- Node.js 20+ (para o frontend)
- PostgreSQL 14+ ou SQLite (para desenvolvimento)
- Docker (opcional)
EmpresaX.POS.API/
├── src/
│ ├── Controllers/ # Endpoints da API
│ ├── Services/ # Lógica de negócio
│ ├── Models/ # Modelos e DTOs
│ ├── Data/ # Contexto do banco de dados
│ └── Program.cs # Configuração da aplicação
├── tests/
│ └── EmpresaX.POS.API.Tests/ # Testes unitários
├── empresax-frontend/ # Aplicação React
│ ├── src/
│ │ ├── pages/ # Páginas da aplicação
│ │ ├── components/ # Componentes reutilizáveis
│ │ └── config/ # Configurações
│ └── public/
└── README.md
- Clone o repositório
git clone <repository-url>
cd EmpresaX.POS.API- Configure a string de conexão
Edite
appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=empresax_pos;Username=postgres;Password=sua_senha"
}
}- Execute as migrações
dotnet ef database update- Rode a aplicação
cd src
dotnet runA API estará disponível em: https://localhost:5245
- Instale as dependências
cd empresax-frontend
npm install- Configure a URL da API
Edite
src/config/constants.ts:
export const API_CONFIG = {
baseURL: 'https://localhost:5245/api/v1',
// ...
};- Rode a aplicação
npm startO frontend estará disponível em: http://localhost:3000
Acesse a documentação interativa em: https://localhost:5245/swagger
POST /api/v1/auth/login- Login de usuárioPOST /api/v1/auth/register- Registro de usuário
GET /api/v1/contas- Lista todas as contasGET /api/v1/contas/{id}- Busca conta por IDPOST /api/v1/contas- Cria nova contaPUT /api/v1/contas/{id}- Atualiza contaDELETE /api/v1/contas/{id}- Remove conta
GET /api/v1/produtos- Lista todos os produtosGET /api/v1/produtos/{id}- Busca produto por IDPOST /api/v1/produtos- Cria novo produtoPUT /api/v1/produtos/{id}- Atualiza produtoDELETE /api/v1/produtos/{id}- Remove produto
GET /api/v1/categorias- Lista todas as categoriasGET /api/v1/categorias/{id}- Busca categoria por IDPOST /api/v1/categorias- Cria nova categoriaPUT /api/v1/categorias/{id}- Atualiza categoriaDELETE /api/v1/categorias/{id}- Remove categoria
POST /api/v1/caixa/{id}/fechar- Fecha o caixa
GET /health- Status da aplicação e dependências
PowerShell:
.\run-tests.ps1Bash/Linux:
dotnet testdotnet test --filter "FullyQualifiedName~ContasControllerTests"dotnet test --collect:"XPlat Code Coverage"O pipeline é executado automaticamente em:
- Push para branches
mainedevelop - Pull requests para
mainedevelop
Etapas:
- Build do backend
- Testes unitários
- Build do frontend
- Análise de qualidade de código
- Scan de segurança
- Cobertura de código
Configure o pipeline apontando para azure-pipelines.yml na raiz do projeto.
docker build -t empresax-pos-api .docker run -p 5245:5245 empresax-pos-apidocker-compose up- Autenticação JWT - Tokens com expiração configurável
- HTTPS - Comunicação segura
- CORS - Configuração restrita de origens permitidas
- Validação de entrada - Data Annotations e validações customizadas
- Scan de vulnerabilidades - Trivy no pipeline CI/CD
Endpoint: GET /health
Monitora:
- PostgreSQL connection
- Application status
- Dependencies
Logs estruturados com Serilog em:
- Console (desenvolvimento)
- Arquivos (produção)
- Application Insights (Azure)
- .NET 8
- ASP.NET Core
- Entity Framework Core
- PostgreSQL / SQLite
- Serilog
- Swagger/OpenAPI
- xUnit, FluentAssertions, Moq
- React 18
- TypeScript
- TailwindCSS
- Recharts
- Heroicons
- Axios
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Carol - Desenvolvimento inicial
- Jason Taylor - Clean Architecture template
- Comunidade .NET
- Comunidade React
Para reportar bugs ou solicitar features, abra uma issue no repositório.
Desenvolvido com ❤️ usando Clean Architecture