ERP para prestadores de serviço autônomos — orçamento, agenda, execução e cobrança em um fluxo só, feito para uso em campo.
Nome de agere (agir/operar) + gestio (gestão). Antes chamado "Micro-ERP Auto".
A maioria dos ERPs é feita para média/grande empresa — cara e complexa. O prestador de serviço autônomo (técnico de ar-condicionado, instalador, eletricista) acaba gerindo o negócio no papel ou em planilhas. O Agesto entrega o essencial, pensado para quem trabalha em campo, muitas vezes sem internet.
A espinha é o ciclo de vida do serviço:
Orçamento → Agendamento → Atendimento (execução) → Cobrança
Venda de produtos existe como recurso secundário ("plus"), habilitado conforme o modo de operação da empresa (Serviço, Venda ou Híbrido).
- Multi-tenant — isolamento por
EmpresaIdderivado do JWT (nunca do body); toda query filtra por empresa. - Offline-first — o app de campo opera sem rede; sincronização por Carga/Descarga com resolução last-write-wins.
- Camada de métricas determinística — números (receita, margem, estoque) são agregados no banco; a IA nativa apenas interpreta esses números, nunca os calcula.
- Margem por atendimento — custo preenchível pelo prestador;
Margem = ValorTotal − CustoTotal. - Conversão transacional de orçamento em atendimento (baixa de estoque só na conversão).
- Soft delete em todo o domínio (
DeletedAt), nunca DELETE físico.
Controller → Service (interface) → Repository (interface) → AppDbContext (EF Core)
- Camadas
sealed, injeção por interface (AddScoped). - Envelope de resposta padronizado
ApiResponse { Success, Message, Data, Errors }. - Enums persistidos como string (
HasConversion<string>()).
| Camada | Tecnologia |
|---|---|
| Backend | C# ASP.NET Core .NET 8 + Entity Framework Core 8 |
| Banco | PostgreSQL (Npgsql) |
| IA | Integração nativa planejada no backend C#; ainda não implementada |
| Web (dono) | React 19 + TypeScript + Vite + Tailwind + TanStack Query |
| Mobile (agente de campo) | React Native + Expo + SQLite, offline-first |
| Auth | JWT multi-tenant (claims empresaId, sub, perfil) |
| Testes | xUnit + Moq + EF Core InMemory/Sqlite |
| Área | Estado |
|---|---|
| Backend (domínio do prestador) | 🟡 MVP avançado — 90 testes passando; migrations aguardam banco novo |
| Camada de métricas + rentabilidade | 🟢 Implementada |
| Orçamento / Agendamento / Margem | 🟢 Implementados |
| IA nativa (insights) | ⚪ Planejada |
| Frontend Web | 🟡 MVP funcional com mocks — 21 testes |
| Mobile | 🟡 MVP offline-first funcional — 29 testes |
O fluxo da equipe é feature/* → develop → main. Alterações entram por pull request e main recebe apenas marcos revisados com as verificações relevantes verdes.
Pré-requisitos: .NET 8 SDK e um PostgreSQL acessível.
git clone https://github.com/Agesto-Platform/Agesto.git
cd Agesto/MicroERP.Api
# configurar segredos locais (NÃO versionados)
cp appsettings.Development.json.example appsettings.Development.json
# editar: connection string do Postgres + uma chave JWT (mín. 32 bytes)
dotnet ef database update # cria o schema
dotnet run # Swagger em http://localhost:5xxx/swaggerRodar os testes:
dotnet test MicroERP.slnPolyForm Noncommercial 1.0.0 — o código pode ser lido, estudado e usado para fins não comerciais (estudo, pesquisa, avaliação). O uso comercial é reservado ao autor. Veja LICENSE.
Os identificadores internos ainda usam o namespace
MicroERP.*(nome anterior do projeto); a renomeação paraAgesto.*é um refactor mecânico adiado de propósito.
O projeto começou como um trabalho acadêmico e evoluiu para um produto em desenvolvimento pela equipe fundadora: Davi Gomes Rocha (Founder e Product Owner), Depowo (Cofounder, foco inicial em infraestrutura) e ghzpro034 (Cofounder, atuação generalista). A governança técnica usa a organização Agesto-Platform e o time Core.