@anku-protocol/core
v0.0.2
Published
core package to build a anku network source
Readme
🧠 Core Module - Núcleo Agnóstico da Rede Anku
Este módulo contém as regras de negócio fundamentais da rede, totalmente agnósticas de tecnologia.
📁 Estrutura
core/
types/ # Tipos fundamentais (Post, Host, Profile)
contracts/ # Interfaces/contratos abstratos
services/ # Serviços de negócio (lógica pura)
adapters/ # Adaptadores para frameworks específicos
nestjs/ # Adaptadores para NestJS🎯 Princípios
- Agnóstico: Não depende de nenhum framework
- Portável: Pode ser usado com qualquer tecnologia
- Testável: Lógica de negócio isolada e fácil de testar
- Extensível: Fácil adicionar novos adapters
📋 Ações Mínimas da Rede
O core define as operações essenciais para a rede funcionar:
Posts
publishPost()- Publicar novo postgetPost()- Buscar post por IDgetPosts()- Listar todos os posts
Seguir
followHost()- Seguir um host/autorgetFollowedHosts()- Listar hosts seguidos
Perfil
getLocalProfile()- Perfil do autor localgetRemoteProfile()- Perfil de autor remotogetLocalConfig()- Configuração localgetRemoteConfig()- Configuração remota
Sincronização
syncWithFollowedHosts()- Sincronizar com hosts seguidos
🔌 Contratos
O core define contratos (interfaces) que qualquer implementação deve seguir:
INetworkNode- Contrato principal do nóIPostRepository- Contrato para repositório de postsIHostRepository- Contrato para repositório de hosts
🔄 Como Usar
Com NestJS (atual)
import { NestNetworkNodeAdapter } from './core/adapters/nestjs';
// No seu módulo
@Module({
providers: [
NestNetworkNodeAdapter,
// ... outros providers
],
})
export class AppModule {}
// No seu serviço
constructor(
private readonly networkNodeAdapter: NestNetworkNodeAdapter,
) {
this.node = networkNodeAdapter.createNetworkNode(
'http://localhost:3000',
'user'
);
}
// Usar
await this.node.publishPost({ content: 'Hello!' });Com Outro Framework
Crie um adapter similar ao NestJS adapter, implementando os contratos:
import { NetworkNodeService } from '@anku/core';
import { IPostRepository, IHostRepository } from '@anku/core';
class MyPostRepository implements IPostRepository {
// Implementar métodos...
}
class MyHostRepository implements IHostRepository {
// Implementar métodos...
}
const node = new NetworkNodeService(
new MyPostRepository(),
new MyHostRepository(),
// ... providers
);🚀 Benefícios
- Reutilização: O mesmo core pode ser usado em diferentes projetos
- Testabilidade: Fácil testar lógica de negócio isoladamente
- Flexibilidade: Trocar de framework sem reescrever lógica
- Clareza: Separação clara entre regras de negócio e infraestrutura
