The open-source framework for flexible data management.
Structures streamlines your data management with powerful tools for schema evolution, real-time data manipulation, and seamless API generation. Build robust applications faster with TypeScript-first development and enterprise-grade features.
- 🔄 Schema Evolution: Modify data schemas over time without breaking changes or complex migrations
- 🚀 TypeScript-First: Define entities in TypeScript and automatically generate services and APIs
- ⚡ Real-time: Built on Continuum for live data synchronization across clients
- 🔍 Multiple APIs: Auto-generated GraphQL, REST, and OpenAPI interfaces
- 🏢 Multi-tenant: Built-in tenant isolation and management
- 🎨 Modern GUI: User-friendly web interface for data management and exploration
- 🔧 CLI Tools: Powerful command-line tools for project setup and synchronization
Get Structures running in under 5 minutes:
For Mac users (Apple Silicon):
git clone https://github.com/kintoic-ai/kinotic.git
cd structures/docker-compose
docker-compose -f compose.yml -f compose.ek-m4.override.yml up -dFor other platforms:
git clone https://github.com/kinotic-ai/kinotic.git
cd structures/docker-compose
docker-compose up -dVisit http://localhost:9090 and login with:
- Username: admin
- Password: structures
# Install the CLI
pnpm install -g @kinotic/structures-cli
# Create a new React project
pnpm create vite@latest my-app --template react-ts
cd my-app
# Initialize Structures
structures init --application my.app --entities src/entities --generated src/generated
pnpm install @kinotic/structures-apiCreate src/entities/Person.ts:
import { Entity, AutoGeneratedId, MultiTenancyType } from '@kinotic/structures-api'
@Entity(MultiTenancyType.SHARED)
export class Person {
@AutoGeneratedId
public id: string | null = null
public firstName: string = ''
public lastName: string = ''
public email: string = ''
}# Sync with the server (generates services automatically)
structures sync -p --server http://localhost:9090
# Your PersonEntityService is now ready to use!Traditional databases require complex migrations when schemas change. Structures handles schema evolution automatically:
// Version 1
@Entity(MultiTenancyType.SHARED)
export class User {
@AutoGeneratedId
public id: string | null = null
public name: string = ''
}
// Version 2 - Just add fields, no migration needed!
@Entity(MultiTenancyType.SHARED)
export class User {
@AutoGeneratedId
public id: string | null = null
public name: string = ''
public email: string = '' // ✅ New field
public createdAt: Date = new Date() // ✅ Another new field
}Define your data model once in TypeScript, get everything else automatically:
- ✅ Type-safe service classes
- ✅ GraphQL schema and resolvers
- ✅ REST API endpoints
- ✅ OpenAPI documentation
- ✅ Real-time subscriptions
- Multi-tenancy: Built-in tenant isolation with
@TenantIddecorator - Security: Role-based access control and policy decorators
- Audit Trail: Complete audit logging for compliance
- Search: Full-text search powered by Elasticsearch
- Observability: OpenTelemetry integration for monitoring
Structures consists of several key components:
- structures-core: Core data management engine
- structures-server: REST API and web interface
- structures-auth: Authentication with OIDC support
- structures-cli: Command-line tools
- structures-frontend-next: Modern Vue 3 GUI
Ready to dive deeper? Our comprehensive documentation covers everything:
- Getting Started Guide - Complete setup and first project
- Decorators Reference - All available decorators
- Multi-tenant Guide - Multi-tenancy setup
- Docker Compose Setup - Development environment configuration
For detailed development setup including authentication, monitoring, and advanced features:
# Full development environment with Keycloak, monitoring, and schema generation
cd docker-compose
docker-compose -f compose.yml -f compose.ek-m4.override.yml -f compose.keycloak.yml -f compose.gen-schemas.yml up -dSee the Docker Compose documentation for all available configurations.
We welcome contributions! Please see our contribution guidelines for details.
Structures is released under the Elastic License 2.0.
Ready to get started? Check out our Getting Started Guide or try the quick start above!