Hati Rails API
Migration-driven Rails API development for the AI era.
Hati Rails API revolutionizes Rails API development by treating your entire API structure as versioned, repeatable, and rollbackable code. Built specifically for AI-assisted development, it enables developers and AI agents to collaborate on building robust, scalable Rails APIs with confidence.
Migration-Driven Architecture
- API as Code — Your entire API structure lives in versioned migration files
- Instant Rollback — Safely experiment knowing you can revert any change
- Pattern Consistency — Enforce architectural patterns across your entire API
AI-Native Design
- Machine-Readable — Every pattern is explicit and declarative for optimal AI collaboration
- Predictable Structure — AI tools understand and generate consistent code
- Safe Experimentation — AI can try new patterns with instant rollback capability
Rails-Native Integration
- Rails Conventions — Follows Rails patterns throughout
- ActiveRecord Integration — Seamless database layer integration
- Familiar Generators — Uses Rails generator patterns you already know
Table of Contents
- Quick Start
- 1. Install
- 2. Initialize
- 3. Create Migration
- 4. Generate Code
- Architecture Overview
- Core Concepts
- Migration Files
- Generated Structure
- Rollback System
- Framework Components
- AI-Powered Bootstrapping
- Intelligent Project Initialization
- Context-Aware Feature Addition
- Automated Testing Strategy Generation
- Deployment Configuration Generation
- AI Agent Tool Integration
- Examples
- Basic User API
- E-commerce API with AI Features
- Advanced Patterns
- Use Cases
- Testing
- Authors
- Development
- Contributing
- License
- Code of Conduct
Quick Start
1. Install
# Gemfile
gem 'hati-rails-api'
bundle install
2. Initialize
rails generate hati_rails_api:context init
3. Create Migration
rails generate hati_rails_api:context user --operations=create,update,delete
4. Generate Code
rails generate hati_rails_api:context run --force
Architecture Overview
Hati Rails API introduces a migration-driven approach where your entire API structure is defined in versioned migration files that generate complete, consistent code structures.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ Hati Rails API Architecture │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ Migration Files (config/contexts/) Generated API Structure │
│ ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ │
│ │ │ │ │ │
│ │ 20250121001327_user_api.rb │ │ Controllers │ │
│ │ ┌─────────────────────────────┐│ │ ├─ Api::UserController │ │
│ │ │ domain :user do |domain| ││ ───▶ │ ├─ Api::OrderController │ │
│ │ │ domain.operation [...] ││ │ └─ Api::ProductController │ │
│ │ │ domain.endpoint true ││ │ │ │
│ │ │ domain.model true ││ │ Operations │ │
│ │ │ end ││ │ ├─ User::Create │ │
│ │ └─────────────────────────────┘│ │ ├─ User::Update │ │
│ │ │ │ └─ User::Delete │ │
│ │ 20250121001328_order_api.rb │ │ │ │
│ │ ┌─────────────────────────────┐│ │ Models │ │
│ │ │ domain :order do |domain| ││ │ ├─ User │ │
│ │ │ domain.operation [...] ││ │ ├─ Order │ │
│ │ │ domain.service [...] ││ │ └─ Product │ │
│ │ │ end ││ │ │ │
│ │ └─────────────────────────────┘│ │ Services │ │
│ └─────────────────────────────────┘ │ ├─ PaymentService │ │
│ │ ├─ NotificationService │ │
│ Rollback System │ └─ InventoryService │ │
│ ┌─────────────────────────────────┐ │ │ │
│ │ Migration Tracking │ │ Validations │ │
│ │ ├─ Timestamp: 20250121001327 │ │ ├─ UserValidator │ │
│ │ ├─ Files Generated: 15 │ │ ├─ OrderValidator │ │
│ │ ├─ Rollback Command Available │ │ └─ PaymentValidator │ │
│ │ └─ Status: Applied │ │ │ │
│ └─────────────────────────────────┘ └─────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────────────┤
│ Key Features │
│ • Migration-Driven Architecture • AI-Native Design │
│ • Instant Rollback Capabilities • Rails Convention Compliance │
│ • Pattern Consistency Enforcement • Comprehensive Test Generation │
└─────────────────────────────────────────────────────────────────────────────────┘
Core Concepts
Migration Files
Define your API structure in timestamped migration files:
# config/contexts/20250121001327_create_user_api.rb
class CreateUserApi < HatiRailsApi::Context::Migration
def change
domain :user do |domain|
domain.operation do |operation|
operation.component [:create, :update, :delete]
end
domain.endpoint true
domain.model true
domain.validation
domain.service
end
end
end
Generated Structure
This creates a complete API structure:
app/
├── contexts/user/
│ ├── operation/
│ │ ├── create_operation.rb
│ │ ├── update_operation.rb
│ │ └── delete_operation.rb
│ ├── validation/
│ └── service/
├── controllers/api/
│ └── user_controller.rb
└── models/
└── user.rb
Rollback System
Every migration is tracked and can be safely rolled back:
rails generate hati_rails_api:context rollback --timestamp=20250121001327
Framework Components
Component | Purpose | Key Features | Benefits |
---|---|---|---|
Context System | Domain organization and structure definition |
• Domain-driven organization • Migration-based definitions • Custom layer support • Extensible architecture |
• Centralized domain logic • Clear boundaries • Scalable structure • Easy customization |
Migration Engine | Version control for API structure |
• Timestamped migrations • Class-based definitions • Rollback support • Change tracking |
• Repeatable deployments • Safe evolution • Version history • Team collaboration |
Layer System | Modular architecture components |
• Operations (business logic) • Services (integrations) • Validations (input rules) • Queries (data retrieval) • Serializers (formatting) |
• Clean separation • Modular design • Easy testing • Reusable components |
Response Handler | Consistent API responses |
• JSON:API compliance • Standardized formatting • Error handling • Type safety |
• Consistent interfaces • Clean error messages • Predictable responses • Better debugging |
Rollback Manager | Safe change management |
• File tracking • Safe removal • Directory cleanup • State management |
• Risk-free experimentation • Clean rollbacks • No orphaned files • Reliable state |
AI-Powered Bootstrapping
Intelligent Project Initialization
Hati Rails API enables AI agents to bootstrap entire projects based on high-level requirements:
# AI can generate this from: "Create an e-commerce API with user management,
# product catalog, and order processing"
class BootstrapEcommerceApi < HatiRailsApi::Context::Migration
def change
# User management domain
domain :user do |domain|
domain.operation do |operation|
operation.component [:register, :authenticate, :update_profile]
end
domain.endpoint true
domain.model true
domain.validation { |v| v.component [:email_validator, :password_validator] }
domain.service { |s| s.component [:auth_service, :profile_service] }
end
# Product catalog domain
domain :product do |domain|
domain.operation do |operation|
operation.component [:create, :update, :search, :categorize]
end
domain.endpoint true
domain.model true
domain.query { |q| q.component [:product_finder, :category_filter] }
domain.service { |s| s.component [:inventory_service, :pricing_service] }
end
# Order processing domain
domain :order do |domain|
domain.operation do |operation|
operation.component [:create, :process_payment, :fulfill, :cancel]
operation.step true, granular: true
end
domain.endpoint true
domain.model true
domain.validation { |v| v.component [:payment_validator, :inventory_validator] }
domain.service { |s| s.component [:payment_gateway, :shipping_service] }
end
# Additional models and endpoints
model [:cart, :payment, :shipping_address, :order_item]
endpoint [:order_status, :payment_webhook, :inventory_alert]
end
end
Context-Aware Feature Addition
AI agents can analyze existing migrations and add complementary features:
# AI analyzes existing user and product domains, then adds:
class AddRecommendationSystem < HatiRailsApi::Context::Migration
def change
domain :recommendation do |domain|
domain.operation do |operation|
operation.component [:generate_recommendations, :track_interactions, :update_preferences]
end
domain.service do |service|
service.component [:ml_engine, :preference_analyzer, :collaborative_filter]
end
domain.query { |q| q.component [:recommendation_finder, :interaction_tracker] }
end
# Extend existing domains with recommendation capabilities
extend_domain :user do |domain|
domain.service { |s| s.add_component :recommendation_service }
end
extend_domain :product do |domain|
domain.query { |q| q.add_component :recommendation_query }
end
end
end
Automated Testing Strategy Generation
AI can generate comprehensive testing strategies based on the migration structure:
# AI generates test migrations alongside feature migrations
class GenerateTestingInfrastructure < HatiRailsApi::Context::Migration
def change
testing_domain :api_integration do |domain|
domain.test_suite do |suite|
suite.component [:endpoint_tests, :authentication_tests, :authorization_tests]
suite.coverage :comprehensive
suite.mock_external_services true
end
end
testing_domain :performance do |domain|
domain.benchmark do |benchmark|
benchmark.component [:response_time, :throughput, :memory_usage]
benchmark.scenarios [:normal_load, :peak_load, :stress_test]
end
end
end
end
Deployment Configuration Generation
AI can create deployment configurations based on the API structure:
class GenerateDeploymentConfig < HatiRailsApi::Context::Migration
def change
deployment_domain :infrastructure do |domain|
domain.container do |container|
container.component [:api_service, :background_jobs, :database]
container.scaling :auto
container.health_checks true
end
domain.monitoring do |monitoring|
monitoring.component [:metrics, :logging, :alerting]
monitoring.dashboards [:api_performance, :business_metrics, :error_tracking]
end
end
end
end
AI Agent Tool Integration
Enable AI agents to modify and extend APIs autonomously:
class CreateAgentToolsApi < HatiRailsApi::Context::Migration
def change
domain :agent_tools do |domain|
# Safe database operations for AI agents
domain.operation do |operation|
operation.component [:safe_query, :safe_update, :analyze_data]
operation.safety_checks true
operation.audit_logging true
end
# AI agent capabilities
domain.service do |service|
service.component [:query_builder, :data_analyzer, :report_generator]
service.rate_limiting true
service.permission_checking true
end
domain.validation { |v| v.component [:query_validator, :safety_checker] }
end
# Audit trail for AI operations
model [:agent_operation_log, :safety_check_result, :permission_audit]
end
end
Examples
Basic User API
class CreateUserApi < HatiRailsApi::Context::Migration
def change
domain :user do |domain|
domain.operation do |operation|
operation.component [:create, :authenticate, :update_profile]
end
domain.endpoint true
domain.model true
domain.validation
domain.serializer
end
end
end
E-commerce API with AI Features
class CreateEcommerceApi < HatiRailsApi::Context::Migration
def change
domain :ecommerce do |domain|
# Core business operations
domain.operation do |operation|
operation.component [:checkout, :refund, :inventory_check]
operation.step true, granular: true
end
# AI-powered services
domain.service do |service|
service.component [:recommendation_engine, :fraud_detector]
end
domain.endpoint true
domain.model true
domain.validation { |v| v.component [:payment_validator] }
end
model [:product, :order, :payment]
endpoint [:order_status, :payment_webhook]
end
end
Advanced Patterns
# Custom layers
domain.analytics do |analytics|
analytics.component [:event_tracker, :report_generator]
end
# Explicit steps
domain.operation do |operation|
operation.component [:register]
operation.step :validate, :persist, :notify
end
# Granular steps (uses all domain layers as steps)
domain.operation do |operation|
operation.step true, granular: true
end
Use Cases
Use Case | Perfect For | Key Benefits |
---|---|---|
✅ Enterprise API Development | Fortune 500 companies, large dev teams, complex business domains | • Enforced architectural patterns • Version control for API structure • Safe production rollbacks • Consistent testing patterns |
✅ Rapid Prototyping | Startups, MVPs, proof-of-concepts, hackathons | • Generate complete APIs in minutes • Safe architectural experimentation • Instant rollback of failed experiments • Focus on business logic over boilerplate |
✅ AI-Assisted Development | Teams using Cursor, Copilot, or custom AI agents | • Machine-readable API definitions • Safe AI experimentation environment • Consistent patterns AI can learn • Version control for AI changes |
✅ Microservices Architecture | Distributed systems, cloud-native apps, service mesh architectures | • Standardized service structure • Consistent inter-service communication • Unified testing strategies • Easy pattern replication |
✅ Legacy System Modernization | Enterprise modernization, technical debt reduction, gradual refactoring | • Incremental migration safety • Modern patterns alongside legacy code • Safe architectural experimentation • Clear old/new system separation |
Testing
Comprehensive test suites are generated for all components:
# Generated operation test
RSpec.describe User::Operation::Create do
describe "#call" do
it "creates user with valid params" do
result = described_class.call(valid_user_params)
expect(result).to be_success
expect(result.value).to be_a(User)
end
end
end
# Generated controller test
RSpec.describe Api::UserController do
describe "POST /api/users" do
it "creates user and returns JSON response" do
post "/api/users", params: valid_params
expect(response).to have_http_status(:created)
expect(json_response["data"]["type"]).to eq("user")
end
end
end
Authors
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/hackico-ai/hati-command. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the HatCommand project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.