Skip to content

Fork to maintain Structures codebase as a standalone project

License

Notifications You must be signed in to change notification settings

MindsIgnited/structures

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,522 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI

Structures

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.

✨ Why Structures?

  • 🔄 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

🚀 Quick Start

Get Structures running in under 5 minutes:

1. Start the Development Server

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 -d

For other platforms:

git clone https://github.com/kinotic-ai/kinotic.git
cd structures/docker-compose
docker-compose up -d

2. Access the GUI

Visit http://localhost:9090 and login with:

  • Username: admin
  • Password: structures

3. Create Your First Project

# 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-api

4. Define an Entity

Create 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 = ''
}

5. Sync and Use

# Sync with the server (generates services automatically)
structures sync -p --server http://localhost:9090

# Your PersonEntityService is now ready to use!

💡 What Makes Structures Different?

Schema Evolution Without Pain

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
}

TypeScript-First Development

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

Enterprise-Ready Features

  • Multi-tenancy: Built-in tenant isolation with @TenantId decorator
  • 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

🏗️ Architecture

Structures consists of several key components:

📚 Documentation

Ready to dive deeper? Our comprehensive documentation covers everything:

📖 Full Documentation →

Quick Links

🔧 Development Setup

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 -d

See the Docker Compose documentation for all available configurations.

🤝 Contributing

We welcome contributions! Please see our contribution guidelines for details.

📄 License

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!

About

Fork to maintain Structures codebase as a standalone project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 43.2%
  • TypeScript 36.1%
  • Vue 15.5%
  • Shell 4.1%
  • HTML 0.3%
  • CSS 0.3%
  • Other 0.5%