@giansandoval/screaming-arch
v0.1.0
Published
CLI tool to generate feature-first project structures inspired by Screaming Architecture.
Maintainers
Readme
@giansandoval/screaming-arch
A TypeScript CLI to generate feature-first project structures inspired by Screaming Architecture and Clean Architecture.
The goal is simple: your project structure should scream the business domain first, not the framework.
Links
- GitHub: GianSandoval5/screaming-arch
- Issues: Report a bug or request a feature
- Author: Gian Sandoval on LinkedIn
- License: MIT License
Installation
Run it directly with npm:
npx @giansandoval/screaming-arch create authOr install it globally:
npm install -g @giansandoval/screaming-arch
screaming-arch create productsUsage
screaming-arch create <feature-name>Examples:
screaming-arch create auth
screaming-arch create products
screaming-arch create orders
screaming-arch create paymentsGenerated structure
src/
features/
auth/
domain/
entities/
Auth.ts
repositories/
AuthRepository.ts
usecases/
GetAuthUseCase.ts
application/
dtos/
AuthDTO.ts
services/
AuthService.ts
infrastructure/
datasources/
repositories/
AuthRepositoryImpl.ts
presentation/
components/
hooks/
useAuth.ts
screens/
index.tsExample
npx @giansandoval/screaming-arch create authGenerates:
src/features/authwith domain, application, infrastructure, and presentation boundaries already separated.
Why Screaming Architecture?
Screaming Architecture makes the business capability visible from the top-level structure. Instead of organizing code around tools, frameworks, or delivery mechanisms, each feature owns its domain model, use cases, adapters, and presentation pieces.
This keeps the feature easy to scan, test, replace, and evolve as the project grows.
Commands
screaming-arch --help
screaming-arch -h
screaming-arch create <feature-name>Feature names are normalized to kebab-case:
screaming-arch create user-profile
screaming-arch create "user profile"
screaming-arch create UserProfilePublishing
Build and test before publishing:
npm run build
npm testPublish the package publicly under the @giansandoval scope:
npm login
npm publish --access publicLicense
This project is released under the MIT License.
