{"id":34226348,"url":"https://github.com/elysiandb/elysiandb","last_synced_at":"2026-03-11T07:33:22.380Z","repository":{"id":313319055,"uuid":"1049860102","full_name":"elysiandb/elysiandb","owner":"elysiandb","description":"Turn raw JSON into a full backend instantly. ElysianDB provides a zero-config REST API, automatic CRUD endpoints, nested relations, schema inference, and an embedded high-performance datastore, all in one binary","archived":false,"fork":false,"pushed_at":"2025-12-22T13:45:05.000Z","size":18504,"stargazers_count":24,"open_issues_count":10,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-22T16:02:50.767Z","etag":null,"topics":["auto-generated","cache","database","docker","go","golang","http","instant-backend","json","key-value","lightweight","persistence","rest-api","tcp","ttl","wildcard","zero-config"],"latest_commit_sha":null,"homepage":"https://elysiandb.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elysiandb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["taymour"]}},"created_at":"2025-09-03T15:44:41.000Z","updated_at":"2025-12-22T13:44:06.000Z","dependencies_parsed_at":"2025-09-05T09:34:50.756Z","dependency_job_id":"ab91344d-05f6-48a2-829e-5686b6cba2c1","html_url":"https://github.com/elysiandb/elysiandb","commit_stats":null,"previous_names":["taymour/elysiandb","elysiandb/elysiandb"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/elysiandb/elysiandb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elysiandb%2Felysiandb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elysiandb%2Felysiandb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elysiandb%2Felysiandb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elysiandb%2Felysiandb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elysiandb","download_url":"https://codeload.github.com/elysiandb/elysiandb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elysiandb%2Felysiandb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30374335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-generated","cache","database","docker","go","golang","http","instant-backend","json","key-value","lightweight","persistence","rest-api","tcp","ttl","wildcard","zero-config"],"created_at":"2025-12-16T00:23:39.659Z","updated_at":"2026-03-11T07:33:22.363Z","avatar_url":"https://github.com/elysiandb.png","language":"Go","funding_links":["https://github.com/sponsors/taymour"],"categories":[],"sub_categories":[],"readme":"# ElysianDB — Turn Raw JSON into a Full Backend Instantly\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/taymour/elysiandb.svg)](https://hub.docker.com/r/taymour/elysiandb)\n[![Tests](https://img.shields.io/github/actions/workflow/status/taymour/elysiandb/ci.yaml?branch=main\\\u0026label=tests)](https://github.com/taymour/elysiandb/actions/workflows/ci.yaml)\n[![Coverage](https://codecov.io/gh/elysiandb/elysiandb/branch/main/graph/badge.svg)](https://codecov.io/gh/taymour/elysiandb)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![JS Client](https://img.shields.io/badge/JS%20Client-available-brightgreen)](https://github.com/elysiandb/client-js)\n\nElysianDB is a self-contained backend engine that turns raw JSON into a usable, queryable API in seconds.\n\nIt combines automatic REST API generation, advanced querying and indexing, authentication, ACLs, hooks, and optional KV and TCP interfaces into a single fast Go binary, while supporting multiple storage backends through a pluggable engine system.\n\nThe goal is simple: remove backend boilerplate so you can focus on shipping features instead of infrastructure.\n\n## Why ElysianDB\n\nMost projects start the same way: define models, write CRUD endpoints, add filters, pagination, authentication, indexing, caching, migrations, and admin tooling.\n\nElysianDB removes this entire layer.\n\nYou send JSON. You get a fully functional backend.\n\nNo ORM. No controllers to scaffold. No migrations to write. No schema to maintain unless you explicitly want one.\n\nHere is a related and explicative article https://dev.to/taymour/why-i-built-elysiandb-2f5i\n\n## Storage Engine\n\nElysianDB uses a **pluggable storage engine abstraction** that cleanly separates API logic from the underlying persistence layer.\n\nThe same REST API, Query API, ACLs, hooks, transactions, and Admin UI work identically regardless of the selected engine.\n\nThe storage engine is selected at startup via configuration:\n\n```yaml\nengine:\n  name: internal\n```\n\n### Available Engines\n\n**internal (default)**\n\nThe `internal` engine is the original storage engine shipped with ElysianDB. It provides:\n\n* Sharded in-memory storage\n* Periodic disk persistence\n* Crash recovery via write-ahead logs\n* Lazy index creation\n* Very high throughput and low latency\n* Full compatibility with all ElysianDB features\n\nThis engine is production-ready and optimized for speed, prototyping, and controlled workloads.\n\n**mongodb**\n\nThe `mongodb` engine allows ElysianDB to run on top of MongoDB while keeping the same API surface and behavior.\n\nIt provides:\n\n* Persistence backed by MongoDB\n* Better durability guarantees for long-lived datasets\n* Horizontal scalability through MongoDB deployments\n* Identical REST API, Query API, ACLs, hooks, and Admin UI behavior\n\nExample configuration:\n\n```yaml\nengine:\n  name: mongodb\n  uri: mongodb://elysian:elysian@localhost:27017/elysiandb\n```\n\nThe MongoDB engine is designed for users who want ElysianDB’s API and query model while relying on an external database for storage, replication, or operational constraints.\n\n### Future Engines\n\nThe engine abstraction is designed to support additional backends in the future, such as:\n\n* Alternative persistence models\n* Embedded databases\n* Specialized engines optimized for specific workloads\n* Experimental or in-memory–only backends\n\nAll engines are selected using the same configuration mechanism, without impacting application code or API usage.\n\n## What You Get Out of the Box\n\nInstant REST API with CRUD operations, pagination, sorting, filtering, projections, and includes\n\nAdvanced query system with logical operators, nested filters, array traversal, and deterministic caching\n\nHigh-performance datastore with lazy indexing and predictable execution\n\nOptional strict schema validation with manual overrides\n\nNested entity creation and linking using simple JSON conventions\n\nBuilt-in authentication with token, basic, or user-based modes\n\nAccess control lists enforced at the API level\n\nConfigurable JavaScript hooks to enrich or filter data at read time\n\nOptional Admin UI served directly by the binary\n\nHTTP REST API, Redis-style TCP protocol, and key–value endpoints\n\nAll of this ships as a single binary or Docker image.\n\n## Quick Example\n\n```js\nawait fetch(\"http://localhost:8089/api/articles\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application/json\" },\n  body: JSON.stringify({ title: \"Hello\", tags: [\"go\", \"kv\"], published: true })\n});\n\nconst res = await fetch(\"http://localhost:8089/api/articles?limit=20\u0026offset=0\u0026sort[title]=asc\");\nconst articles = await res.json();\n```\n\nNo model definition. No migration. No configuration.\n\n## Querying Without SQL\n\nElysianDB includes a dedicated Query API that lets you express complex conditions in a single request.\n\nYou can combine filters, logical operators, sorting, pagination, projections, and counts without writing SQL or custom endpoints.\n\nQueries are deterministic, type-aware, and executed predictably, making them easy to debug and safe to cache.\n\n## Performance\n\nElysianDB is designed for low latency and high throughput.\n\nWith the internal engine, the system relies on sharded in-memory storage, minimal allocations, and cache-friendly data structures.\n\nOn a MacBook Pro M4, mixed workloads with CRUD, filtering, sorting, nested writes, and includes reach tens of thousands of requests per second with sub-millisecond latencies under moderate load.\n\nWith the MongoDB engine, performance is naturally bounded by MongoDB and network latency, but remains stable and predictable while enabling durability and scalability.\n\nThese are real API scenarios, not synthetic microbenchmarks.\n\n## When to Use ElysianDB\n\nRapid prototyping and MVPs\n\nFrontend-first development where the backend should not block progress\n\nInternal tools and admin backends\n\nMocking APIs and datasets\n\nSimple services that do not justify a full ORM or framework-heavy backend\n\nHigh-performance read-heavy APIs with predictable access patterns\n\n## When Not to Use It\n\nElysianDB is not a relational database replacement.\n\nIt is not designed for complex cross-entity joins or heavy transactional workloads.\n\nIf you need strong relational guarantees, complex SQL queries, or decades of ecosystem tooling, a traditional relational database may be a better fit.\n\n## Official Clients\n\nJavaScript and TypeScript client available at:\n[https://github.com/elysiandb/client-js](https://github.com/elysiandb/client-js)\n\n## Run with Docker\n\n```bash\ndocker run --rm -p 8089:8089 -p 8088:8088 taymour/elysiandb:latest\n```\n\n## Build and Run Locally\n\n```bash\ngo build \u0026\u0026 ./elysiandb server\n```\n\nOr:\n\n```bash\ngo run elysiandb.go server\n```\n\n## Philosophy\n\nElysianDB favors clarity over magic and determinism over flexibility.\n\nEvery query produces the same result for the same input.\n\nThere are no hidden joins, no implicit behavior, and no background mutations.\n\nWhat you send is what you get.\n\n## Status\n\nElysianDB is actively developed and evolving.\n\nThe MongoDB engine expands its applicability to more persistent and scalable workloads, while the internal engine remains ideal for speed and simplicity.\n\nFeedback, issues, and contributions are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felysiandb%2Felysiandb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felysiandb%2Felysiandb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felysiandb%2Felysiandb/lists"}