| Crates.io | oats-framework |
| lib.rs | oats-framework |
| version | 0.1.0 |
| created_at | 2025-08-04 22:39:13.986621+00 |
| updated_at | 2025-08-04 22:39:13.986621+00 |
| description | Universal architecture pattern for infinite scale across any domain - Objects • Actions • Traits • Systems |
| homepage | https://github.com/TheNexusGroup/OATS-rs |
| repository | https://github.com/TheNexusGroup/OATS-rs |
| max_upload_size | |
| id | 1781293 |
| size | 129,151 |
Universal architecture pattern for infinite scale across any domain.
OATS is domain-agnostic operational intelligence. Whether you're building enterprise software, game engines, distributed systems, or operating systems - this pattern eliminates architectural complexity that kills scale at growth inflection points.
OATS (Objects • Actions • Traits • Systems) is a universal architecture pattern for infinite scale across any domain.
graph TB
subgraph "OATS Core Components"
O[Objects] --> T[Traits]
A[Actions] --> O
S[Systems] --> A
S --> O
end
subgraph "Object Composition"
O1[Object: Player] --> T1[Trait: Health]
O1 --> T2[Trait: Position]
O1 --> T3[Trait: Inventory]
O2[Object: Enemy] --> T4[Trait: Health]
O2 --> T5[Trait: AI State]
end
subgraph "Action Processing"
A1[Action: Heal] --> C1[Context]
A1 --> R1[Result: Health +25]
A2[Action: Move] --> C2[Context]
A2 --> R2[Result: Position Updated]
end
subgraph "System Orchestration"
S1[Health System] --> A1
S2[Movement System] --> A2
S3[Combat System] --> A3[Action: Attack]
end
subgraph "Data Flow"
T1 --> A1
T2 --> A2
T4 --> A3
end
This repository contains a complete Rust implementation of the OATS architecture pattern, providing:
Add OATS Framework to your Cargo.toml:
[dependencies]
oats-framework = "0.1.0"
Or use the latest from this repository:
[dependencies]
oats-framework = { git = "https://github.com/TheNexusGroup/oats-framework" }
Pure composition. Zero behavior pollution. Maximum modularity.
use oats_framework::{Object, Trait, TraitData};
// Create an object
let mut player = Object::new("player_1", "character");
// Add traits to the object
let health_trait = Trait::new("health", TraitData::Number(100.0));
let position_trait = Trait::new("position", TraitData::Object(HashMap::new()));
player.add_trait(health_trait);
player.add_trait(position_trait);
// Access traits
if let Some(health) = player.get_trait("health") {
println!("Health: {:?}", health.data());
}
Immutable data structures. Single source of truth. Auditable state management.
use oats_framework::{Trait, TraitData};
// Create traits with different data types
let string_trait = Trait::new("name", TraitData::String("Hero".to_string()));
let number_trait = Trait::new("level", TraitData::Number(5.0));
let bool_trait = Trait::new("active", TraitData::Boolean(true));
// Complex structured data
let mut position_data = HashMap::new();
position_data.insert("x".to_string(), serde_json::json!(10.0));
position_data.insert("y".to_string(), serde_json::json!(20.0));
let position_trait = Trait::new("position", TraitData::Object(position_data));
Stateless operations. Horizontally scalable. Domain-independent processing.
use oats_framework::{Action, ActionContext, ActionResult};
// Create a custom action
struct HealAction;
#[async_trait::async_trait]
impl Action for HealAction {
fn name(&self) -> &str { "heal" }
fn description(&self) -> &str { "Restores health to target" }
async fn execute(&self, context: ActionContext) -> Result<ActionResult, oats_framework::OatsError> {
let target = context.get_object("target").unwrap();
let current_health = target.get_trait("health")
.and_then(|t| t.data().as_number())
.unwrap_or(0.0);
let new_health = (current_health + 25.0).min(100.0);
let health_trait = Trait::new("health", TraitData::Number(new_health));
let mut result = ActionResult::success();
result.add_trait_update(health_trait);
result.add_message(format!("Healed {} to {:.1} health", target.name(), new_health));
Ok(result)
}
}
// Execute the action
let mut context = ActionContext::new();
context.add_object("target", player.clone());
let result = heal_action.execute(context).await?;
Resource allocation. Priority management. Cross-domain coordination.
use oats_framework::{System, SystemManager, Priority};
// Create a system
struct HealthSystem {
stats: oats_framework::systems::SystemStats,
}
#[async_trait::async_trait]
impl System for HealthSystem {
fn name(&self) -> &str { "health_system" }
fn description(&self) -> &str { "Manages health-related operations" }
async fn process(&mut self, objects: Vec<Object>, priority: Priority) -> Result<Vec<ActionResult>, oats_framework::OatsError> {
// Your custom processing logic here
Ok(vec![])
}
}
// Create a system manager
let mut manager = SystemManager::new();
manager.add_system(Box::new(HealthSystem::new()));
// Register objects
manager.register_object(player).await;
// Process all objects through all systems
let results = manager.process_all(Priority::Normal).await?;
The repository includes comprehensive examples demonstrating OATS in different domains:
# Run from project root
./run_examples.sh basic
# Or run directly
cd examples/basic && cargo run
Demonstrates core OATS concepts with simple objects, actions, and systems.
# Run from project root
./run_examples.sh game
# Or run directly
cd examples/game && cargo run
Shows OATS in a game development context with combat, movement, and character management systems.
# Run from project root
./run_examples.sh business
# Or run directly
cd examples/business && cargo run
Illustrates OATS in an e-commerce scenario with inventory, pricing, and order management systems.
Run the test suite:
# Run all tests
./run_examples.sh test
# Or run directly
cargo test
Run the test example:
# Run test example
./run_examples.sh test-example
# Or run directly
cargo run --bin test_example
Run benchmarks:
# Run benchmarks
./run_examples.sh bench
# Or run directly
cargo bench
Run all examples and tests:
./run_examples.sh all
The OATS implementation is designed for high performance:
Our comprehensive benchmarking suite demonstrates exceptional performance:
The library includes several performance optimizations:
Hardware: Linux 6.15.8-arch1-1
Compiler: Rust 1.75+
Optimization: Release mode with full optimizations
Runtime: Tokio async runtime
Benchmark Tool: Criterion.rs with 100 samples
Benchmark results show:
use oats_framework::{Action, ActionContext, ActionResult};
struct CustomAction {
parameter: String,
}
#[async_trait::async_trait]
impl Action for CustomAction {
fn name(&self) -> &str { "custom_action" }
fn description(&self) -> &str { "A custom action" }
async fn execute(&self, context: ActionContext) -> Result<ActionResult, oats_framework::OatsError> {
// Your custom logic here
let mut result = ActionResult::success();
result.add_message("Custom action executed");
Ok(result)
}
}
use oats_framework::{System, Priority};
struct CustomSystem {
name: String,
stats: oats_framework::systems::SystemStats,
}
#[async_trait::async_trait]
impl System for CustomSystem {
fn name(&self) -> &str { &self.name }
fn description(&self) -> &str { "A custom system" }
async fn process(&mut self, objects: Vec<Object>, priority: Priority) -> Result<Vec<ActionResult>, oats_framework::OatsError> {
// Your custom processing logic here
Ok(vec![])
}
}
use oats_framework::{Result, OatsError};
fn handle_oats_operation() -> Result<()> {
// OATS operations return Result<T, OatsError>
let object = Object::new("test", "type");
// Handle specific error types
match some_operation() {
Ok(result) => Ok(result),
Err(OatsError::ObjectNotFound { id }) => {
println!("Object not found: {}", id);
Err(OatsError::object_not_found("new_id"))
}
Err(e) => Err(e),
}
}
Resource Optimization: Systems prioritize compute allocation based on domain-specific business value. Critical operations get premium resources. Background processes fill remaining capacity.
Infinite Horizontal Scale: Stateless actions distribute across any infrastructure topology. Add processing power without architectural changes.
Technical Debt Prevention: Pure separation eliminates circular dependencies across all domains. New capabilities deploy without touching existing operational logic.
Operational Intelligence: Architecture maps directly to measurable business outcomes regardless of industry vertical.
This pattern runs the foundational infrastructure behind every platform that achieved global scale without architectural rewrites. From AWS to Unity, from Kubernetes to financial trading systems - OATS abstractions create operational superiority that compounds across any domain.
OATS transforms complexity into competitive advantage.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
Clone the repository:
git clone https://github.com/your-org/OATS-rs.git
cd OATS-rs
Run the basic example:
./run_examples.sh basic
Explore the examples:
./run_examples.sh game
./run_examples.sh business
Run tests and benchmarks:
./run_examples.sh test
./run_examples.sh bench
Start building with OATS Framework:
use oats_framework::{Object, Trait, TraitData, SystemManager};
fn main() {
// Your OATS-powered application here
}
OATS: Universal architecture pattern for infinite scale across any domain.