IngitDB - git versioned & branchable JSON DB hosted at GitHub
IngitDB is a dynamic (e.g. writable) but statically hosted database driven by IngitDB GuitHub Action.
IngitDB is somewhat like static site CMS (GitHub Pages, Hugo, Jekyll, etc.) but a database.
This means:
- you do not need an application layer to:
- query data (HTTP endpoints are provided by GitHub)
- edit data - you have 3 options:
- there is no out of box access rights separation on per user/data - you either have access to the whole DB or you don’t
- You can create your own GitHub action to restrict editing of data
- In future IngitDB might offer such functionality out of the box
- users can have either
readonly
or readwrite
permissions for a database
- response times for reads are very low
- it is very scalable for read operations
Also it is hosted at GitHub so you basically can run it for free.
It supports:
- multi-versioning
- mergin of branches
- comparison between branches & versions
- restore to any point in a time as a new branch
- cherry-picking of specific changes from older version or another branch
- schema definition
- check constraints
- foreign keys & lookup
- triggers
- on insert
- on update
- on delete
- views
- filters
- limited number of fields
- operators (
+
, -
, /
, *
, etc.)
- formulas (
IIF
, LEN
, SUBSTR
, etc.)
group by
operation
having
condition
- aggregation formulas (
SUM
, COUNT
, etc.)
- transactions
- webhooks
- REST endpoints for views and individual records
- REST API for editing
When use and when not to use IngitDB
While IngitDB can act as a operational database it was not desined for this purpose as it would not be quick and would not scale.
It also would not be a good choice for a DB with 100s of thouthands of records. 10th of thouthands might be OK though.
IngitDB was designed and is good for:
- Keeping & providing reference data
- Settings & metadata storage
- Data entry & data collection with integrity constraints and data validation
Example database
There is a publicly available IngitDB demo database - https://github.com/ingitdb/ingitdb-demo-db
You can alsow view & edit IngitDB data in a web app.
The demo database has few sample datasets:
It’s free to use and is Open Source under MIT License
Below repositories contains source codes of IngitDB components:
Contributors wanted
- Have you found this project useful?
- Do you have ideas how it can be improved?
Please don’t be shy and join as a contributor - pull requests are welcome!