Domainic
Important
We're running an experiment with Domainic::Type! Help us explore flexible type validation in Ruby by trying our alpha release. Your feedback is invaluable for shaping the future of domain-driven design in Ruby.
A suite of Ruby libraries crafted to arm engineers with the magic of domain-driven design.
Warning
The Domainic gem is currently in pre-release. Until v0.1.0, components must be installed individually.
About
Domainic is an ecosystem of Ruby gems designed to provide a comprehensive toolkit for domain-driven design. The v0.1.0 release will include:
- domainic-attributer - Type-safe, self-documenting class attributes
- domainic-boundary - Clean interfaces between domain boundaries
- domainic-command - First-class command objects for business operations
- domainic-type - Sophisticated type constraints and validation
Current Status
The domainic
gem itself will bundle all components starting with v0.1.0. Until then:
- Components are being released individually
- You must install each component separately
- Only domainic-attributer is currently available
Installation
Current Pre-release Usage
Install components individually:
# Gemfile
gem 'domainic-attributer'
gem 'domainic-command'
gem 'domainic-type' # Currently in pre-release alpha
Future v0.1.0 Usage
Once v0.1.0 is released, you'll be able to install everything at once:
# Gemfile
gem 'domainic' # Will include all components
Available Components
- domainic-attributer - A library for defining type-safe self-documenting class attributes
- domainic-command - An implementation of the command pattern for Ruby
- domainic-type - Stupidly granular type validations for Ruby (currently in pre-release alpha)
Development
Quick Start
- Clone the repository
- Run
bin/setup
to install dependencies - Run
bin/dev ci
to ensure everything is set up correctly
Development CLI
Domainic uses a development CLI to manage the monorepo and ensure consistent development practices. View available
commands with bin/dev help
. See domainic-dev
for more information.
Key commands:
bin/dev ci # Run the full CI pipeline - REQUIRED before submitting PRs
bin/dev test # Run tests for specific gems
bin/dev lint # Run linters
Project Structure
Domainic is organized as a monorepo containing multiple gems:
-
domainic-attributer/
- Type-safe class attributes -
domainic-boundary/
- Clean domain boundaries -
domainic-command/
- Command objects -
domainic-type/
- Type constraints and validation
Contributing
We welcome contributions! Please see our Contributing Guidelines for:
- Development setup and workflow
- Code style and documentation standards
- Testing requirements
- Pull request process
Before contributing, please review our Code of Conduct.
License
The gem is available as open source under the terms of the MIT License.