Nidus is a state-of-the-art modular, highly scalable application and microservice framework for Delphi, deeply inspired by the modern architectural patterns of NestJS. It provides Delphi developers with an enterprise-ready architecture that brings advanced Dependency Injection (DI), modular structural organization, request validation pipes (utilizing class RTTI decorators), security guards, high-concurrency object pooling, caching adapters, and native socket-based RPC microservices. Nidus makes it simple to build modern, testable, and highly maintainable enterprise backend applications in Object Pascal.
- Modular Organization: Decouple codebase domains into logical boundaries (Modules, Providers, Services) matching NestJS design paradigms.
- Dependency Injection (DI) Engine: Highly performant, automated binding engine that registers, resolves, and manages class lifecycles transparently.
- Validation Pipes (Decorators): Validate request parameters and object fields out of the box using descriptive RTTI attributes (
[IsEmail],[IsUUID],[IsStrongPassword],[IsNotEmpty]). - Security Guards: Implement clean, reusable authorization and access control logic with Guards (
UseGuard). - Allocation & Component Pooling: Integrated object and
TComponentpooling (UsePools) to maximize throughput under extreme concurrent workloads. - Module Caching: Native caching provider support (
UseCache) with customizable eviction policies to boost API performance. - RPC Microservices: Publish and invoke backend microservices natively over RPC using Indy or Synapse socket adapters.
| Environment / IDE | Platform / Compiler | Dependency Injection | RPC Microservices |
|---|---|---|---|
| Delphi XE or superior | VCL, FMX, Console (Win/Linux/macOS/iOS/Android) | ✅ Yes | ✅ Yes |
To install using the package manager Boss:
boss install "https://github.com/ModernDelphiWorks/Nidus"Note
Since this package does not have a static registry on Boss, it must be installed using its direct Git repository HTTPS URL.
type
[Module]
TUserModule = class(TModule)
public
procedure Configure(const ABuilder: IModuleBuilder); override;
end;type
TCreateUserDto = class
private
FName: string;
FEmail: string;
FPassword: string;
public
[IsNotEmpty('Name is required!')]
property Name: string read FName write FName;
[IsEmail('Invalid email address!')]
property Email: string read FEmail write FEmail;
[IsStrongPassword('Password is too weak!')]
property Password: string read FPassword write FPassword;
end;var
LApp: TNidus;
begin
LApp := GetNidus;
try
LApp
.UseListener(TMyLogger.Log)
.UsePipes(TValidationPipe.Create) // Global RTTI validation
.UseCache(TMemoryCache.Create) // Enable memory caching
.UsePools<TMyHeavyResource>(128) // Pool heavy resources
.Start(TAppModule.Create); // Bootstrap main application module
// Resolve services dynamically
var LUserService := LApp.Get<TUserService>;
LUserService.Register('Isaque Pinheiro', 'isaquesp@gmail.com');
finally
LApp.Finalize;
end;
end;Nidus é um framework moderno de arquitetura modular, altamente escalável e focado em microsserviços para Delphi, profundamente inspirado nos padrões consagrados do NestJS. Ele fornece aos desenvolvedores Delphi uma arquitetura robusta e corporativa que integra Injeção de Dependências (DI), organização estrutural modular, pipes de validação de requisição (baseados em decorators RTTI), guards de segurança, pool de alocação de objetos/componentes, adaptadores de cache de dados e microsserviços RPC nativos baseados em sockets. O Nidus foi feito sob medida para criar backends testáveis, performáticos e extremamente legíveis em Object Pascal.
- Organização Modular: Divida os domínios do seu código em fronteiras lógicas desacopladas e organizadas (Módulos, Provedores, Serviços) herdadas do NestJS.
- Motor de Injeção de Dependências (DI): Registro automático e resolução ágil de dependências que gerencia de forma transparente o ciclo de vida de classes e instâncias.
- Pipes de Validação (Decorators): Validação rica de dados de entrada usando atributos RTTI intuitivos diretamente nas propriedades (
[IsEmail],[IsUUID],[IsStrongPassword],[IsNotEmpty]). - Guards de Segurança: Implemente controles de acesso, políticas e regras de autorização centralizadas e reutilizáveis (
UseGuard). - Pool de Alocação de Objetos: Pools nativos de alocação de objetos e componentes (
UsePools) para maximizar a vazão do servidor sob cenários de concorrência extrema. - Cache de Módulos: Suporte a cache integrado (
UseCache) com políticas configuráveis de descarte para otimizar endpoints e chamadas pesadas. - Microsserviços RPC: Publique, disponibilize e consuma microsserviços distribuídos via RPC usando adaptadores de socket Indy ou Synapse.
| Ambiente / IDE | Plataforma / Compilador | Injeção de Dependências | Microsserviços RPC |
|---|---|---|---|
| Delphi XE ou superior | VCL, FMX, Console (Win/Linux/macOS/iOS/Android) | ✅ Sim | ✅ Sim |
Para instalar usando o gerenciador de pacotes Boss:
boss install "https://github.com/ModernDelphiWorks/Nidus"Note
Como esta biblioteca não está pré-registrada com apelido no indexador global do Boss, ela é instalada informando-se o link HTTPS direto de seu repositório Git.
type
[Module]
TUserModule = class(TModule)
public
procedure Configure(const ABuilder: IModuleBuilder); override;
end;type
TCreateUserDto = class
private
FNome: string;
FEmail: string;
FSenha: string;
public
[IsNotEmpty('O nome é obrigatório!')]
property Nome: string read FNome write FNome;
[IsEmail('Endereço de e-mail inválido!')]
property Email: string read FEmail write FEmail;
[IsStrongPassword('A senha informada é muito fraca!')]
property Senha: string read FSenha write FSenha;
end;var
LApp: TNidus;
begin
LApp := GetNidus;
try
LApp
.UseListener(TMyLogger.Log)
.UsePipes(TValidationPipe.Create) // Validação RTTI global
.UseCache(TMemoryCache.Create) // Ativa cache em memória
.UsePools<TMyHeavyResource>(128) // Pool de recursos pesados
.Start(TAppModule.Create); // Inicializa o módulo principal
// Resolve serviços dinamicamente
var LUserService := LApp.Get<TUserService>;
LUserService.Register('Isaque Pinheiro', 'isaquesp@gmail.com');
finally
LApp.Finalize;
end;
end;Copyright © 2025-2026 Isaque Pinheiro. Licensed under MIT License.