This-RS 🦀
A generic entity and relationship management framework for building RESTful APIs in Rust with zero boilerplate.
✨ Highlights
- 🔌 Generic Entity System - Add entities without modifying framework code
- 🤖 Auto-Generated Routes - Declare a module, routes are created automatically
- 🔗 Flexible Relationships - Multiple link types between same entities
- ↔️ Bidirectional Navigation - Query relationships from both directions
- ✨ Auto-Enriched Links - Full entities in responses, no N+1 queries
- 📝 Auto-Pluralization - Smart plural forms (company → companies)
- ⚙️ YAML Configuration - Declarative entity and link definitions
- 🏢 Multi-Tenant - Built-in tenant isolation
- 🔒 Type-Safe - Full Rust compile-time guarantees
🎯 The Vision
Traditional Framework (❌)
// Add new entity = Modify 10+ files
// - Update routing module (30+ lines)
// - Modify link handlers
// - Update entity registry
// - Write CRUD boilerplate
// - Maintain consistency manually
This-RS (✅)
// Add new entity = 4 files, routes auto-generated
// 1. model.rs - Data structure
// 2. store.rs - Persistence
// 3. handlers.rs - Business logic
// 4. descriptor.rs - Route registration
// Main.rs stays unchanged!
let app = new
.register_module? // ← Everything auto-generated
.build?;
Result: Zero boilerplate, maximum productivity.
🚀 Quick Example
1. Define Your Entity
use *;
2. Create Entity Descriptor
3. Register in Module
4. Launch Server (Auto-Generated Routes!)
async
That's it! Routes are auto-generated:
- ✅
GET /products- List all - ✅
POST /products- Create - ✅
GET /products/:id- Get by ID - ✅
GET /products/:id/links- Introspection - ✅ Link routes (if configured in YAML)
📚 Examples
Microservice Example
Complete billing microservice with auto-generated routes:
Output:
🚀 Starting billing-service v1.0.0
📦 Entities: ["order", "invoice", "payment"]
🌐 Server running on http://127.0.0.1:3000
📚 All routes auto-generated:
- GET /orders, /invoices, /payments
- POST /orders, /invoices, /payments
- GET /orders/:id, /invoices/:id, /payments/:id
- Link routes for relationships
See examples/microservice/README.md for full details.
🏗️ Architecture
Core Concepts
- ServerBuilder - Fluent API for building HTTP servers
- EntityDescriptor - Describes how to generate routes for an entity
- EntityRegistry - Collects and builds all entity routes
- Module - Groups related entities with configuration
- LinkService - Generic relationship management
Key Features
Auto-Generated CRUD Routes
// Just register your entities
module.register_entities;
// Framework generates:
// GET /{plural}
// POST /{plural}
// GET /{plural}/:id
Auto-Generated Link Routes
# config/links.yaml
links:
- link_type: has_invoice
source_type: order
target_type: invoice
forward_route_name: invoices
reverse_route_name: order
Framework generates:
GET /orders/:id/invoices- Forward navigationGET /invoices/:id/order- Reverse navigationPOST /orders/:id/has_invoice/invoices/:invoice_id- Create linkDELETE /orders/:id/has_invoice/invoices/:invoice_id- Delete link
📖 Documentation
- Getting Started - Step-by-step tutorial
- Quick Start - Fast introduction
- Enriched Links - Auto-enrichment & performance
- Architecture - Technical deep dive
- ServerBuilder - Auto-routing details
- Full Documentation - Complete documentation index
🎁 Key Benefits
For Developers
✅ -88% less boilerplate (340 → 40 lines in main.rs)
✅ Add entity in minutes - No routing changes needed
✅ Consistent patterns - Same structure for all entities
✅ Type-safe - Full Rust compile-time checks
✅ Scalable - 3 or 300 entities = same simplicity
For Teams
✅ Faster development - Less code to write and maintain
✅ Easier onboarding - Clear patterns and conventions
✅ Reduced errors - Less manual work = fewer mistakes
✅ Better consistency - Framework enforces best practices
For Production
✅ Multi-tenant - Built-in tenant isolation
✅ Authorization - Declarative auth policies
✅ Configurable - YAML-based configuration
✅ Extensible - Plugin architecture via modules
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE-MIT file for details.
🌟 Why This-RS?
"The best code is the code you don't have to write."
This-RS eliminates boilerplate while maintaining type safety and flexibility. Perfect for:
- 🏢 Microservices architectures
- 🔌 REST APIs with complex relationships
- 🚀 Rapid prototyping
- 📊 Multi-tenant SaaS applications
Built with Rust. Designed for productivity. Ready for production. 🦀✨