Pular para o conteúdo principal

Bem-vindo ao Archbase Framework

Archbase é um framework Java para facilitar o desenvolvimento de aplicações corporativas. Os módulos desenvolvidos permitem tanto o uso para aplicações simples com modelos anêmicos e CRUDs, como aplicações mais complexas usando os conceitos de DDD (Domain Driven Design) de forma ágil e bem estruturada.

Características Principais

Destaques
  • DDD First: Construído com padrões Domain-Driven Design desde o início
  • Multi-tenancy: Suporte nativo para aplicações multi-tenant
  • Segurança: Autenticação JWT com autorização baseada em permissões
  • Event-Driven: Arquitetura orientada a eventos com CQRS
  • Queries Dinâmicas: Suporte a RSQL para queries flexíveis
  • Auto-configuração: Integração transparente com Spring Boot

Arquitetura

O framework segue a Arquitetura Hexagonal (Ports & Adapters), também conhecida como Arquitetura Onion:

Arquitetura Hexagonal

Camadas da Arquitetura

CamadaDescrição
Domínio (Core)Entidades, Aggregates, Value Objects e regras de negócio
Aplicação (Ports)Use Cases, Commands, Queries e interfaces de ports
AdaptersREST Controllers, Repositories JPA, MQTT/JMS, External APIs

A arquitetura hexagonal permite que o domínio permaneça isolado de detalhes técnicos, facilitando testes e manutenção.

Módulos do Framework

MóduloDescrição
archbase-starterStarter completo com todos os módulos
archbase-domain-driven-designBase para entidades DDD
archbase-event-drivenCQRS com Command/Event/Query Bus
archbase-securityAutenticação JWT e autorização
archbase-multitenancySuporte multi-tenant
archbase-queryQueries com RSQL e filtros dinâmicos
archbase-validationValidação fluente de regras
archbase-test-utilsUtilitários para testes

Começando Rápido

1. Adicione a dependência

Maven:

<dependency>
<groupId>br.com.archbase</groupId>
<artifactId>archbase-starter</artifactId>
<version>${archbase.version}</version>
</dependency>

Gradle:

implementation 'br.com.archbase:archbase-starter:${archbase.version}'

2. Crie uma Entidade

@Entity
@DomainEntity
public class Cliente extends PersistenceEntityBase<Cliente, UUID> {

private String nome;
private String email;

// getters e setters
}

3. Crie um Repository

@DomainRepository
public interface ClienteRepository extends Repository<Cliente, UUID, Long> {
// Queries automáticas disponíveis
}

4. Configure a aplicação

archbase:
multitenancy:
enabled: true
security:
jwt:
secret: sua-chave-secreta
expiration: 86400000

Começando com Boilerplate

Para facilitar ainda mais o início de um projeto com Archbase, utilize o projeto archbase-java-boilerplate:

# Clone o boilerplate
git clone https://github.com/archbase-framework/archbase-java-boilerplate.git meu-projeto

# Entre na pasta
cd meu-projeto

# Configure suas propriedades
# Editar application.yml com suas configurações

# Execute!
mvn spring-boot:run

O boilerplate já vem com:

  • ✅ Estrutura de pastas organizada para DDD
  • ✅ Exemplos de Entidades, Repositories e Services
  • ✅ Configurações de segurança e multi-tenancy
  • ✅ Testes de exemplo
  • ✅ Docker Compose para banco de dados

Próximos Passos

Quando usar Archbase?

Use Archbase para
  • Aplicações corporativas com regras de negócio complexas
  • Sistemas que requerem multi-tenancy
  • Projetos que precisam de auditoria e segurança avançada
  • Equipes que praticam DDD
Considere alternativas para
  • APIs CRUD simples sem regras de negócio
  • Protótipos rápidos ou MVPs
  • Microserviços simples