Sobre o SynthKernel
SynthKernel é uma arquitetura TypeScript que ajuda você a escrever código eficiente, limpo e modular.
A prática típica do SynthKernel consiste em uma classe carregadora de módulos e classes de módulos:
- A classe carregadora de módulos gerencia ciclos de vida dos módulos, orquestra tipos e atua como uma fachada na superfície da lógica da sua aplicação.
- Todas as classes de módulo estendem uma classe
BaseModule, definem APIs, executam a lógica real, aumentam a classe carregadora e se conectam via injeção de dependência. - Os tipos são resolvidos por meio de orquestração de genéricos.
- Os módulos são compostos ao carregador para formar um APP. Um carregador de módulos também pode ser um módulo de um carregador pai.
- É aplicável a quase todos os casos de uso, incluindo, mas não se limitando a: serviço backend, automação complexa, aplicação CLI e motor de renderização canvas.
Convenções do Sistema de Arquivos
O SynthKernel deve ser estruturado em um padrão de árvore.
Um carregador, juntamente com o módulo base e todos os seus módulos diretos, devem ser colocados de forma plana em uma única pasta:
- o arquivo que acomoda o carregador deve ser nomeado
index.ts - o módulo base nomeado
BaseModule.ts - tipos nomeados
types.ts - todos os módulos são nomeados
(nome do módulo em PascalCase).ts - sem restrição para o nome de outros arquivos
É uma prática padrão transformar um módulo muito inchado em uma nova estrutura carregador-módulo, e então simplesmente transformar o módulo em uma pasta com os mesmos requisitos acima.
Quando Usar
- No estágio inicial do desenvolvimento, quando você tem pistas da lógica mas ainda não escreveu nenhum código.
- Você não tem uma convenção de arquitetura clara.
- Durante refatorações quando você pretende dividir alguns módulos grandes ou tornar o projeto modular.
- Você está adicionando novas funcionalidades e considerando criar um novo módulo, querendo entender o SynthKernel.
Quando Não Usar
- Você não deve criar ou alterar a arquitetura.
- Você está desenvolvendo interface web que tem suas próprias convenções.
- Você está servindo um projeto simples (loc < 200) onde um monolito clássico é mais conveniente.
Ações
- Se você está implementando SynthKernel do zero ou refatorando código existente para adotar SynthKernel, vá para início.
- Se você está adicionando um novo módulo ou dividindo módulos, vá para manutenção.
- Você pode encontrar um exemplo de prática padrão em ./exemplo.