Domain layer for s-private application, following Clean Architecture and Domain-Driven Design principles.
This package contains the core domain logic for the s-private content management system, including:
npm install @s-hirano-ist/s-core
# or
pnpm add @s-hirano-ist/s-core
# or
yarn add @s-hirano-ist/s-core
import { Articles, Books, Notes, Images, Common, Errors } from "@s-hirano-ist/s-core";
// Usage
const article = new Articles.ArticleEntity(...);
const book = new Books.BooksEntity(...);
const note = new Notes.NoteEntity(...);
const image = new Images.ImageEntity(...);
// Articles domain
import { ArticleEntity, ArticlesDomainService } from "@s-hirano-ist/s-core/articles";
// Books domain
import { BooksEntity, BooksDomainService } from "@s-hirano-ist/s-core/books";
// Notes domain
import { NoteEntity, NotesDomainService } from "@s-hirano-ist/s-core/notes";
// Images domain
import { ImageEntity, ImagesDomainService } from "@s-hirano-ist/s-core/images";
// Common utilities
import { CommonEntity, IdGenerator } from "@s-hirano-ist/s-core/common";
// Error classes
import { DomainError } from "@s-hirano-ist/s-core/errors";
// Direct import from domain module
import * as Articles from "@s-hirano-ist/s-core/articles";
// Use the exports
const service = new Articles.ArticlesDomainService();
const entity = new Articles.ArticleEntity(...);
@s-hirano-ist/s-core/
├── articles/ # Article domain (news/link management)
├── books/ # Book domain (ISBN-based tracking)
├── common/ # Shared domain utilities
├── errors/ # Domain error classes
├── images/ # Image domain (file metadata)
└── notes/ # Note domain (markdown content)
Each domain module contains:
entities/ - Domain entitiesevents/ - Domain eventsrepositories/ - Repository interfacesservices/ - Domain servicestypes/ - Domain-specific typesThis package follows Clean Architecture principles:
zod - Runtime validationuuid - ID generationsharp - Image processing types# Build the package
pnpm build
# Clean build artifacts
pnpm clean
# Run tests (from workspace root)
pnpm test:domains
AGPL-3.0