Skip to content

ingitdb/ingitdb

Repository files navigation

inGitDB

inGitDB Logo

The main repository for inGitDB — an open-source versioned database that stores data in text files (JSON, YAML, columnar storage) with Git-based version control.

This repo is the central hub for project planning, issue tracking, architecture documentation, and AI agent prompts across the entire inGitDB ecosystem.


🔗 Quick Navigation

Section Description
📋 Project Overview What inGitDB is and why it exists
🏗️ Architecture System components and how they connect
📦 Repositories All repos in the inGitDB organization
📄 Documentation Architecture specs, API reference, dev plan
🤖 AI Prompts 10 ready-to-use prompts for AI coding agents
📐 Development Plan Execution plan, skills matrix, agent roles
🔌 OpenAPI Spec REST API contract (OpenAPI 3.0, 24 endpoints)
🧩 TypeScript Client Architecture Client design, fluent API, query builder
⚙️ GitHub Actions Integration CI/CD workflows and custom validation actions
📐 Schemas JSON Schema definitions for inGitDB files

What is inGitDB?

inGitDB is a Git-backed versioned database designed for teams who want to manage structured data with the same workflows they use for code.

Key Principles

  • 🔀 Version Control — full history, branching, and merging of data changes
  • 👥 Collaboration — multiple users work on data using Git-native workflows (PRs, reviews, branches)
  • 📝 Text-Based Storage — JSON, YAML, and columnar formats that are human-readable and Git-diffable
  • ✅ Validation — schema validation and referential integrity checks via CLI and GitHub Actions
  • 📊 Reference Data — ideal for configuration, reference tables, and slowly-changing data

Architecture

┌─────────────────────────────────────────────────────┐
│                   GitHub Actions                     │
│              (Validation & CI/CD)                    │
└─────────────────────────────────────────────────────┘
                         ▲
                         │ Uses
                         │
┌────────────────┐   ┌───▼──────────────┐   ┌─────────────────┐
│  ingitdb-ts    │◄──┤  ingitdb-server  │───┤   ingitdb-go    │
│  (TS Client)   │   │   (REST API)     │   │   (Go CLI/Lib)  │
└────────────────┘   └──────────────────┘   └─────────────────┘
                              │
                              ▼
                     ┌────────────────┐
                     │   Git Storage  │
                     │ (JSON/YAML/CSV)│
                     └────────────────┘

Key Concepts

Concept Description
Database A named set of collections stored as a Git repository or subdirectory
Collection A set of items validated against a JSON Schema
Item An individual data entry with auto-generated _id, _version, and timestamps
Branch A Git branch for isolating data changes
Commit A Git commit representing a point-in-time snapshot of database state

💡 Collections vs Tables: Unlike traditional database tables where records are flat rows, a collection item can itself contain sub-collections — enabling naturally hierarchical data structures without joins or foreign keys.


Ecosystem Repositories

Core

Repository Description Status
ingitdb (this repo) Main hub — planning, issues, AI prompts, documentation Active
ingitdb-go Go CLI & library — core validation, data management, server (serve command) Build
ingitdb-ts TypeScript client library for inGitDB Active
ingitdb-schema JSON Schema definitions for inGitDB databases Active

GitHub Actions & CI/CD

Repository Description
ingitdb-action Lightweight GitHub Action for running inGitDB validation
ingitdb-github-action Full-featured GitHub Action (TypeScript) for CI/CD integration

Demo & Test Databases

Repository Description
demo-ingitdb Demo database with countries, tasks, and sample collections
ingitdb-demo-db Additional demo database
ingitdb-test-db Test database used for automated testing

What's in This Repo

This repository doesn't contain application source code. Instead, it serves as the project hub:

ingitdb/
├── README.md                              ← You are here
├── AGENTS.md                              ← AI agent guidelines (all agents)
├── CLAUDE.md                              ← Claude Code configuration
├── LICENSE                                ← CC0 1.0 Universal
├── docs/                                  ← Planning & architecture documents
│   ├── dev-plan/                          ←   Skills matrix, agents, execution plan
│   ├── open-api/                          ←   OpenAPI spec & REST API reference
│   ├── ingitdb-ts-architecture.md         ←   TypeScript client architecture
│   ├── github-actions-integration.md      ←   CI/CD workflows & actions
│   └── summary.md                         ←   Deliverable status & next steps
└── ai/
    └── prompts/                           ← 10 AI development task prompts

Schemas

JSON Schema definitions for inGitDB configuration and collection files are available in the ingitdb-schema repository:

Schema File Validates Description
ingitdb-collection.schema.json .ingitdb-collection.yaml files Collection structure — columns, record file format, ordering, and localized titles
ingitdb-root-config.schema.json .ingitdb.yaml files Root configuration mapping collection IDs to directory paths

These schemas are derived from the Go struct definitions in ingitdb-go. See the ingitdb-schema README for full property documentation.


Quick Start

For Project Managers

  1. Review the Execution Plan — timeline and milestones
  2. Check the Skills Matrix — team requirements
  3. Skim Risk Management — known risks and mitigations
  4. Track progress via Summary

For Developers

  1. Browse the Architecture Documentation
  2. Reference the OpenAPI Spec for the REST API contract
  3. Follow Technology Stack recommendations
  4. Use AI Prompts for guided development tasks

For AI Agents

  1. Start with AGENTS.md for complete guidelines
  2. Find your role and deliverables
  3. Pick your prompt and follow acceptance criteria

Generate Server from OpenAPI

npx @openapitools/openapi-generator-cli generate \
  -i docs/openapi-spec.yaml \
  -g nodejs-express-server \
  -o ./ingitdb-server

Generate TypeScript Client

npx @openapitools/openapi-generator-cli generate \
  -i docs/openapi-spec.yaml \
  -g typescript-axios \
  -o ./ingitdb-ts/src/generated

Development Phases

Phase Duration Focus Status
1 Weeks 1–2 API Design & OpenAPI Spec ✅ Done
2 Weeks 3–6 Server Implementation 🔄 In Progress
3 Weeks 5–7 TypeScript Client 🔄 In Progress
4 Weeks 7–8 GitHub Actions Integration Planned
5 Weeks 9–10 Documentation & Polish Planned
6 Weeks 11–12 Testing & Release Planned
7 Weeks 13–16 Extended Features & Integrations Planned

See the full Development Plan for details.


Contributing

Contributions are welcome! This repo is best for:

  • Planning proposals — open an issue or PR to discuss architecture changes
  • Documentation improvements — fix typos, add guides, improve clarity
  • Issue tracking — report bugs or request features across the ecosystem

For code contributions to implementations:

Component Repository
Go CLI & Server ingitdb/ingitdb-go
TypeScript Client ingitdb/ingitdb-ts
GitHub Actions ingitdb/ingitdb-github-action
Schema Definitions ingitdb/ingitdb-schema

Links

License

CC0 1.0 Universal — see LICENSE for details. Implementation repositories are licensed under MIT.

About

Open-source Git-backed versioned database — hub for planning, documentation, schemas, and AI prompts across the inGitDB ecosystem

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors