MonexUp é uma plataforma de marketing multinível (MMN) com gerenciamento de doações/assinaturas, processamento de pagamentos via Stripe e rastreamento de comissões multi-nível. Construída com ASP.NET Core 8.0 no backend e React 18 + TypeScript no frontend, seguindo o padrão Domain-Driven Design (DDD) com arquitetura em camadas.
O projeto é um monorepo que inclui dois submodules: NAuth (serviço de autenticação) e zTools (microserviço utilitário para emails, IA e upload de arquivos).
- 🔐 Autenticação JWT - Autenticação segura via NAuth com esquema customizado
- 💳 Pagamentos Stripe - Processamento de pagamentos com checkout embarcado
- 🌐 Multi-idioma - Suporte a Português, Inglês, Espanhol e Francês (i18next)
- 📱 Mobile-ready - Build Android via Capacitor 7
- 🏗️ Templates dinâmicos - Sistema de templates customizáveis para redes
- 📊 Gestão de redes - Gerenciamento de redes, produtos, pedidos e faturas
- 💰 Comissões multi-nível - Rastreamento e cálculo de comissões em cascata
- 📧 Envio de emails - Integração com MailerSend via zTools
- 🤖 Integração com IA - ChatGPT e DALL-E via zTools
- ☁️ Upload de arquivos - Armazenamento S3-compatible (DigitalOcean Spaces)
- ⏰ Tarefas agendadas - Background service com NCrontab
- ASP.NET Core 8.0 - Web API com controllers REST
- Entity Framework Core 9.x - ORM com PostgreSQL (Npgsql)
- NAuth - Autenticação JWT customizada
- Stripe.NET - Processamento de pagamentos
- Swashbuckle - Documentação Swagger/OpenAPI
- React 18 - Biblioteca de UI
- TypeScript 5.3 - Tipagem estática
- Bootstrap 5 + Material-UI 6 - Framework CSS e componentes
- React Router 6 - Roteamento SPA
- i18next - Internacionalização (pt, en, es, fr)
- Axios - Cliente HTTP
- Stripe.js - Checkout embarcado
- Capacitor 7 - Build mobile (Android)
- Quill - Editor de texto rich
- PostgreSQL 16 - Banco de dados relacional
- Docker + Docker Compose - Containerização
- GitHub Actions - CI/CD (versionamento e releases automáticas)
- GitVersion - Versionamento semântico automático
- Nginx - Servidor web do frontend (produção)
MonexUp/
├── MonexUp.API/ # ASP.NET Core Web API (controllers, auth)
├── MonexUp.Application/ # DI/IoC setup, configurações
├── MonexUp.Domain/ # Lógica de negócio: serviços, modelos, factories
│ └── Core/ # Utilitários compartilhados, interfaces de repositório
├── MonexUp.DTO/ # Data Transfer Objects, enums
├── MonexUp.Infra/ # EF Core DbContext, repositórios
├── MonexUp.Infra.Interfaces/ # Interfaces de infraestrutura
├── MonexUp.BackgroundService/ # Serviço de tarefas agendadas (NCrontab)
├── monexup-app/ # React 18 + TypeScript (CRA)
│ ├── src/
│ │ ├── Business/ # Lógica de negócio frontend
│ │ ├── Components/ # Componentes reutilizáveis
│ │ ├── Contexts/ # React Contexts
│ │ ├── DTO/ # Tipos TypeScript
│ │ ├── Infra/ # Infraestrutura (HTTP, etc.)
│ │ ├── Pages/ # Páginas da aplicação
│ │ └── Services/ # Serviços de comunicação com API
│ └── public/locales/ # Arquivos de tradução (pt, en, es, fr)
├── submodules/
│ ├── NAuth/ # Serviço de autenticação (submodule)
│ └── zTools/ # Microserviço utilitário (submodule)
├── docker/ # Scripts de inicialização do Docker
├── .github/workflows/ # GitHub Actions (version-tag, create-release)
├── docker-compose.yml # Orquestração de todos os serviços
├── MonexUp.sln # Solution .NET
└── GitVersion.yml # Configuração de versionamento semântico
Esta é a forma mais rápida de subir todo o ambiente (banco de dados, APIs e frontend).
- Docker instalado
- Docker Compose instalado
- Git (com suporte a submodules)
git clone --recurse-submodules https://github.com/emaginebr/MonexUp.git
cd MonexUpSe já clonou sem submodules:
git submodule update --init --recursivecp .env.example .envEdite o arquivo .env e preencha as variáveis obrigatórias:
# --- PostgreSQL ---
POSTGRES_PASSWORD=sua_senha_segura_aqui
# --- NAuth ---
NAUTH_JWT_SECRET=seu_jwt_secret_aqui
# --- Stripe ---
STRIPE_SECRET_KEY=sk_test_...
# --- Frontend ---
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_...Consulte o arquivo
.env.examplepara a lista completa de variáveis.
docker-compose up -d --buildEste comando irá criar e iniciar os seguintes containers:
| Container | Descrição | Porta |
|---|---|---|
monexup-postgres |
PostgreSQL 16 (bancos monexup_db e nauth_db) |
5432 |
nauth-api |
API de autenticação | 5004 |
ztools-api |
Microserviço utilitário (email, IA, upload) | 5001 |
monexup-api |
API principal MonexUp | 5000 |
monexup-bg |
Background service (tarefas agendadas) | — |
monexup-app |
Frontend React (Nginx) | 3000 |
# Ver status dos containers
docker-compose ps
# Acompanhar logs em tempo real
docker-compose logs -f
# Logs de um serviço específico
docker-compose logs -f monexup-api| Serviço | URL |
|---|---|
| Frontend | http://localhost:3000 |
| API Principal | http://localhost:5000 |
| NAuth API | http://localhost:5004 |
| zTools API | http://localhost:5001 |
| Ação | Comando |
|---|---|
| Iniciar serviços | docker-compose up -d |
| Iniciar com rebuild | docker-compose up -d --build |
| Parar serviços | docker-compose stop |
| Ver status | docker-compose ps |
| Ver logs | docker-compose logs -f |
| Remover containers | docker-compose down |
| Remover containers e volumes ( |
docker-compose down -v |
Crie dois bancos PostgreSQL: monexup_db e nauth_db.
cp .env.example .env
# Edite o .env com suas credenciais# Restaurar e compilar
dotnet restore MonexUp.sln
dotnet build MonexUp.sln
# Aplicar migrations MonexUp
dotnet ef database update --project MonexUp.Infra --startup-project MonexUp.API
# Aplicar migrations NAuth
ConnectionStrings__NAuthContext="Host=localhost;Port=5432;Database=nauth_db;Username=monexup_user;Password=SUA_SENHA" \
dotnet ef database update --project submodules/NAuth/NAuth.Infra --startup-project submodules/NAuth/NAuth.APIdotnet run --project MonexUp.API/MonexUp.API.csprojcd monexup-app
npm install
npm startCopie .env.example para .env e preencha os valores:
cp .env.example .env| Variável | Descrição | Obrigatória |
|---|---|---|
POSTGRES_PASSWORD |
Senha do PostgreSQL | ✅ |
POSTGRES_DB |
Nome do banco (padrão: monexup_db) |
— |
POSTGRES_USER |
Usuário do banco (padrão: monexup_user) |
— |
NAUTH_JWT_SECRET |
Secret para tokens JWT | ✅ |
STRIPE_SECRET_KEY |
Chave secreta Stripe (backend) | ✅ |
REACT_APP_STRIPE_PUBLISHABLE_KEY |
Chave pública Stripe (frontend) | ✅ |
MAILERSEND_API_TOKEN |
Token API MailerSend | — |
MAILERSEND_SENDER |
Email remetente MailerSend | — |
S3_ACCESS_KEY |
Access key DigitalOcean Spaces | — |
S3_SECRET_KEY |
Secret key DigitalOcean Spaces | — |
S3_ENDPOINT |
Endpoint do S3 | — |
CHATGPT_APIKEY |
API key OpenAI (usado por zTools) | — |
.env com credenciais reais. Apenas o .env.example deve estar no controle de versão.
cd monexup-app
npm testO projeto utiliza dois workflows automatizados:
Version and Tag (version-tag.yml)
- Trigger: Push na branch
main - Calcula a versão semântica via GitVersion
- Cria e pusha tags
v{version}automaticamente
Create Release (create-release.yml)
- Trigger: Após o workflow "Version and Tag" completar
- Cria GitHub Releases para mudanças de major/minor
- Pula releases para mudanças patch-only
O versionamento é controlado por prefixos nos commits:
| Prefixo | Tipo de Bump | Exemplo |
|---|---|---|
major: ou breaking: |
Major | major: nova arquitetura de pagamentos |
feat: ou feature: |
Minor | feat: adicionado suporte a PIX |
fix: ou patch: |
Patch | fix: correção no cálculo de comissões |
| Projeto | Tipo | Descrição |
|---|---|---|
| MonexUp | Monorepo | Aplicação principal (API + Frontend) |
| NAuth | Submodule | Serviço de autenticação JWT |
| zTools | Submodule | Microserviço utilitário (email, IA, S3) |
monexup-app (React) ──→ monexup-api ──→ PostgreSQL
│
├──→ nauth-api ──→ PostgreSQL (nauth_db)
│ │
│ └──→ ztools-api
│
└──→ ztools-api (email, IA, upload)
docker exec monexup-postgres pg_dumpall -U monexup_user > backup_$(date +%Y%m%d).sqlcat backup.sql | docker exec -i monexup-postgres psql -U monexup_user -d monexup_dbVerificar:
docker-compose logs postgresCausas comuns:
POSTGRES_PASSWORDnão definida no.env- Porta 5432 já em uso por outra instância do PostgreSQL
Solução:
- Preencha a variável
POSTGRES_PASSWORDno.env - Pare outros serviços PostgreSQL:
sudo systemctl stop postgresql
Verificar:
docker-compose logs monexup-apiCausas comuns:
- Container do PostgreSQL ainda não está healthy
- Connection string incorreta
Solução:
- Aguarde o healthcheck do PostgreSQL completar
- Verifique se o
POSTGRES_PASSWORDno.envestá correto
Causas comuns:
REACT_APP_API_URLincorreto- API ainda não iniciou
Solução:
- Verifique se
REACT_APP_API_URL=http://localhost:5000no.env - Rebuild o frontend:
docker-compose up -d --build monexup-app
docker-compose up -d --build# Backend
dotnet publish MonexUp.API/MonexUp.API.csproj -c Release
# Frontend
cd monexup-app && npm run buildContribuições são bem-vindas! Sinta-se à vontade para abrir um Pull Request.
- Fork o repositório
- Clone com submodules:
git clone --recurse-submodules <seu-fork> - Crie uma branch de feature (
git checkout -b feature/MinhaFeature) - Faça suas alterações
- Commit suas mudanças (
git commit -m 'feat: minha nova feature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
- Backend: DDD com Factory/Repository pattern
- Frontend: Componentes funcionais React com TypeScript
- Commits: Prefixos semânticos (
feat:,fix:,major:)
Desenvolvido por Rodrigo Landim Carneiro
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
⭐ Se este projeto foi útil para você, considere dar uma estrela!