Este é um projeto pessoal de longo prazo, desenvolvido no meu tempo livre. Não está pronto para produção, nem mesmo em estágio alpha. O repositório está público para fins de demonstração, já que os meus outros trabalhos estão sob NDA
Plataforma full-stack multi-tenant para gestão de ordens de serviço em campo — construída para demonstrar arquitetura moderna com .NET e React Native.
- Backend: Clean Architecture, CQRS, DDD.
- Mobile: React Native com Expo, SignalR para atualizações em tempo real, compras in-app via RevenueCat.
- Infraestrutura: Docker, prontidão para CI/CD, monitoramento e logging via Sentry.
- Banco de dados: PostgreSQL acessado via EF Core.
| O que | Como |
|---|---|
| Arquitetura multi-tenant | Isolamento via header + filtros de consulta globais |
| Padrão CQRS | Commands/queries MediatR com FluentValidation |
| Eventos de domínio | Mudanças de status disparam notificações em tempo real |
| Autenticação | JWT Clerk com resolução de tenant por organização |
| Atualizações em tempo real | Hub SignalR com filtro por preferências do usuário |
| Tratamento de erros | Monad ErrorOr (sem exceções na lógica de negócio) |
| O que | Como |
|---|---|
| App cross-platform | React Native com Expo |
| Fluxo de auth | Clerk com cache de tokens via SecureStore |
| Estado do servidor | React Query com updates otimistas |
| Tempo real | Conexão SignalR com reconexão automática |
| Internacionalização | i18next (EN, PT, ES, ZH, RU) |
| Temas | Modo escuro/claro com design tokens |
| Monetização | Assinaturas RevenueCat + AdMob |
Por que Unit of Work?
Garantir consistência de dados. Previne falhas de sincronização de dados quando o app volta a ser usado online.
Por que ErrorOr em vez de exceções?
Tratamento consistente de erros. Todos os erros são tratados como valores de retorno, sem falhas silenciosas ou vazamento de informações em logs retornados ao cliente.
oClient.Api → Controllers, middleware, routing
oClient.Application → Features CQRS (Commands/Queries)
oClient.Domain → Entities, value objects, eventos de domínio
oClient.Infrastructure → EF Core, repos, auth, SignalR
oClient.Mobile → App mobile com React Native e Expo
- .NET 10 SDK
- Node.js 18+
- PostgreSQL (ou Docker)
# Clonar
git clone https://github.com/seu-usuario/oClient.git
cd oClient
# Backend
dotnet restore
docker compose up -d # Inicia PostgreSQL
dotnet run --project oClient.Api
# Mobile
cd oClient.Mobile
cp .env.example .env # Adicione suas chaves
npm install
npm startdotnet test