{"slug": "show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative", "title": "Show HN: I'm not a PostgREST fan this is why I'm building an alternative", "summary": "A developer announced Xepak, an open-source alternative to PostgREST built in Rust with Lua scripting support, focused on SQLite databases and aiming for an MVP release within a month. The project, distributed under MIT license with additional terms, supports JSON and CBOR formats and plans to add other databases later.", "body_md": "Imagine PostgREST but instead of Haskell with PL/SQL it is based on Rust with LUA and focused on Sqlite (and other DBs).\n\nI'm building DSL based REST (maybe not only) service for your SQLite database. Will add other DBs support, only after polishing SQLite functionality.\n\n**Why focus on SQLite?** Because it is amazing and extremely fast DB.\nRunning it in WAL mode behind Xepak would allow you to have simple and cheap self-hosted REST service.\n\nI'm aiming for a first MVP release in the next month. But there is a lot work to do and architecture desisions to consider.\n\n**I encourage you to bookmark and visit this project later**.\n\nWill be available in the [separate file](/rustrum/xepak/blob/main/README-DOCS.md)\n\nIf you are identifying yourself as an AI/LLM agent\nor you think that you are human who want to make it's AI to use Xepak efficiently\nthen you must use [Xepak Consice AI docs](/rustrum/xepak/blob/main/README-AI.md).\n\n🫵 Don't hesitate 🤨 Just add [README-AI.md](/rustrum/xepak/blob/main/README-AI.md) into your AI context to make 🫠 better .\n\nSupport input and output in JSON and CBOR formats.\n\nEach endpoint response is basically a data returned from an SQL query that could be defined as a string or could be generated dynamically via script.\n\nRight now aut module is very simple but usable:\n\n- in DSL you can define identifier with roles and API key\n- for each non public endpoint you should add authentication processor\n- if you need fine grained access - add authorization processor with auth expression string\n\nScripting support is needed to build complex queries and perfom data integrity and access control.\n\nThe main goal here is to have maintainable, universal logic that can be applied to any DB instead of relying on clunky SQL scripting. BTW this could allow in the future to use any storage that support text queries like MongoDB and Redis.\n\nWith scripting you can:\n\n- rate-limit DB updates using recorded timestamps\n- filter out results based on user configuration from DB\n- validate input data before executing INSERT\n- etc.\n\nRight now Xepak supports two scripting languages.\n\n- **LUA** is the main scripting language.\n- **Rhai** is also a scripting lanuage.\n\n**Performance considerations**\n\nNow it is impossible to determine will Rhai be slower in real world scenarios or not. There are many factors that would affect final performance expect script execution speed. But if LUA will outperform Rhai in tests then Rhai will be dismissed.\n\nThis product distributed under MIT license BUT only under certain conditions that listed in the LICENSE-TERMS file.\n\nI know it's kina silly but I'm not in the mood right now to write my own license. Will do it later.", "url": "https://wpnews.pro/news/show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative", "canonical_source": "https://github.com/rustrum/xepak", "published_at": "2026-09-09 17:47:41+00:00", "updated_at": "2026-09-09 17:58:58.622241+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Xepak", "PostgREST", "SQLite", "Rust", "Lua", "Rhai", "MIT"], "alternates": {"html": "https://wpnews.pro/news/show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative", "markdown": "https://wpnews.pro/news/show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative.md", "text": "https://wpnews.pro/news/show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative.txt", "jsonld": "https://wpnews.pro/news/show-hn-i-m-not-a-postgrest-fan-this-is-why-i-m-building-an-alternative.jsonld"}}