otaku / atomic
This is an Atomic Repository template based on the OTAKU Manifesto.
v1.0.2
2026-01-22 18:57 UTC
Requires
- php: ^8.4
Requires (Dev)
- phpunit/phpunit: ^12.5
- vimeo/psalm: ^6.14
README
The Atomic Repository is the smallest possible unit of granularity. It enforces a strict architectural boundary through the following rules:
- No Subdirectories: Only one level of directory inside src/.
- Maximum 10 Files: Only 10 files per package.
- Strict Typing: Mandatory
declare(strict_types=1)and full type hinting for all properties and methods. - Object Calisthenics: Maximum of 50 lines per class and 2 instance variables to ensure extreme cohesion.
- Value Objects: All primitives must be wrapped. Raw strings or integers are not permitted in domain logic.
- First Class Collections: Arrays are forbidden for data transport; use dedicated Collection objects.
- Tell, Don't Ask: Getters and setters are prohibited. Objects must expose behavior, not state.
- Infrastructure Ignorance: The domain core is decoupled from persistence, frameworks, and external tools.
- Logic Flow: The
elsekeyword is banned. Use guard clauses and early returns to minimize indentation.
Installation
To create a new Atomic Repository using this template:
composer create-project otaku/atomic <project-name>
Usage
[Describe here the usage]
Philosophy
We follow The OTAKU Manifesto: Fluid Structure Design.
- O - Own your Discipline (Be strict with yourself)
- T - Tools for Composition (Compose like Unix)
- A - Armor the Core (Protect the heart of the business)
- K - Keep Infrastructure Silent (Infrastructure is just a detail)
- U - Universal Language & Contracts (Speak the user's language via clear contracts)
Please read more about it in PHILOSOPHY.md.
License
MIT License
Free to use, modify, and distribute.