# RelSpec [](https://git.warky.dev/wdevs/relspecgo/releases/latest) [](https://git.warky.dev/wdevs/relspecgo/actions/workflows/ci.yml) [](https://git.warky.dev/wdevs/relspecgo/actions/workflows/integration-tests.yml) [](https://go.dev/dl/) [](LICENSE) > Database Relations Specification Tool for Go RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs. ## Overview RelSpec provides bidirectional conversion, comparison, and validation of database specification formats, allowing you to: - Inspect live databases and extract their structure - Validate schemas against configurable rules and naming conventions - Convert between different ORM models (GORM, Bun, etc.) - Transform legacy schema definitions (Clarion DCTX, XML, JSON, etc.) - Generate standardized specification files (JSON, YAML, etc.) - Compare database schemas and track changes  ## Features ### Readers (Input Formats) RelSpec can read database schemas from multiple sources: #### ORM Models - [GORM](pkg/readers/gorm/README.md) - Go GORM model definitions - [Bun](pkg/readers/bun/README.md) - Go Bun model definitions - [Drizzle](pkg/readers/drizzle/README.md) - TypeScript Drizzle ORM schemas - [Prisma](pkg/readers/prisma/README.md) - Prisma schema language - [TypeORM](pkg/readers/typeorm/README.md) - TypeScript TypeORM entities #### Database Inspection - [PostgreSQL](pkg/readers/pgsql/README.md) - Direct PostgreSQL database introspection #### Schema Formats - [DBML](pkg/readers/dbml/README.md) - Database Markup Language (dbdiagram.io) - [DCTX](pkg/readers/dctx/README.md) - Clarion database dictionary format - [DrawDB](pkg/readers/drawdb/README.md) - DrawDB JSON format - [GraphQL](pkg/readers/graphql/README.md) - GraphQL Schema Definition Language (SDL) - [JSON](pkg/readers/json/README.md) - RelSpec canonical JSON format - [YAML](pkg/readers/yaml/README.md) - RelSpec canonical YAML format ### Writers (Output Formats) RelSpec can write database schemas to multiple formats: #### ORM Models - [GORM](pkg/writers/gorm/README.md) - Generate GORM-compatible Go structs - [Bun](pkg/writers/bun/README.md) - Generate Bun-compatible Go structs - [Drizzle](pkg/writers/drizzle/README.md) - Generate Drizzle ORM TypeScript schemas - [Prisma](pkg/writers/prisma/README.md) - Generate Prisma schema files - [TypeORM](pkg/writers/typeorm/README.md) - Generate TypeORM TypeScript entities #### Database DDL - [PostgreSQL](pkg/writers/pgsql/README.md) - PostgreSQL DDL (CREATE TABLE, etc.) #### Schema Formats - [DBML](pkg/writers/dbml/README.md) - Database Markup Language - [DCTX](pkg/writers/dctx/README.md) - Clarion database dictionary format - [DrawDB](pkg/writers/drawdb/README.md) - DrawDB JSON format - [GraphQL](pkg/writers/graphql/README.md) - GraphQL Schema Definition Language (SDL) - [JSON](pkg/writers/json/README.md) - RelSpec canonical JSON format - [YAML](pkg/writers/yaml/README.md) - RelSpec canonical YAML format ### Inspector (Schema Validation) RelSpec includes a powerful schema validation and linting tool: - [Inspector](pkg/inspector/README.md) - Validate database schemas against configurable rules - Enforce naming conventions (snake_case, camelCase, custom patterns) - Check primary key and foreign key standards - Detect missing indexes on foreign keys - Prevent use of SQL reserved keywords - Ensure schema integrity (missing PKs, orphaned FKs, circular dependencies) - Support for custom validation rules - Multiple output formats (Markdown with colors, JSON) - CI/CD integration ready ## Use of AI [Rules and use of AI](./AI_USE.md) ## User Interface RelSpec provides an interactive terminal-based user interface for managing and editing database schemas. The UI allows you to: - **Browse Databases** - Navigate through your database structure with an intuitive menu system - **Edit Schemas** - Create, modify, and organize database schemas - **Manage Tables** - Add, update, or delete tables with full control over structure - **Configure Columns** - Define column properties, data types, constraints, and relationships - **Interactive Editing** - Real-time validation and feedback as you make changes The interface supports multiple input formats, making it easy to load, edit, and save your database definitions in various formats.