<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Duc Vu</title>
    <description>The latest articles on DEV Community by Duc Vu (@dukevu98).</description>
    <link>https://dev.to/dukevu98</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190724%2F3cb75332-c933-47e6-82f3-9c9412a3a91f.png</url>
      <title>DEV Community: Duc Vu</title>
      <link>https://dev.to/dukevu98</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dukevu98"/>
    <language>en</language>
    <item>
      <title>I'm building an open-source platform for your database, API, auth and apps</title>
      <dc:creator>Duc Vu</dc:creator>
      <pubDate>Sat, 17 Oct 2026 16:30:23 +0000</pubDate>
      <link>https://dev.to/dukevu98/im-building-an-open-source-platform-for-your-database-api-auth-and-apps-432</link>
      <guid>https://dev.to/dukevu98/im-building-an-open-source-platform-for-your-database-api-auth-and-apps-432</guid>
      <description>&lt;p&gt;I'm Duc. Since May 2025 I've been building &lt;a href="https://excalibase.io" rel="noopener noreferrer"&gt;Excalibase&lt;/a&gt; on nights and weekends, next to my day job.&lt;/p&gt;

&lt;p&gt;It started as a GraphQL engine for Postgres, because I like SQL. It's now an open-source platform as a service: one place for the database, the API on top of it, auth, and the apps that use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;When you create a project, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A database.&lt;/strong&gt; Postgres, or MySQL from this week's release. Backups and point-in-time restore are built in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A GraphQL and REST API&lt;/strong&gt; generated from your schema. Add a table and it's in the API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissions per row and per column&lt;/strong&gt;, written per role. "Users can only read their own notes" is one rule, and it applies to GraphQL, REST and realtime alike.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth&lt;/strong&gt; for your app's own users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realtime&lt;/strong&gt; subscriptions and &lt;strong&gt;functions&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App hosting&lt;/strong&gt;: your containers run next to the database, so there's no network hop to a database in another region.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MCP server&lt;/strong&gt;, so your AI coding tool can create tables, set permissions and deploy your app. It only gets your token's permissions, and secrets don't show up in the chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the API works
&lt;/h2&gt;

&lt;p&gt;A GraphQL query, nested relations and the permission rules all compile into &lt;strong&gt;one SQL statement&lt;/strong&gt;. One request means one query to the database, whatever the nesting depth, and no N+1.&lt;/p&gt;

&lt;p&gt;The permission filter is part of that same SQL, so the database never returns a row the user isn't allowed to see, and the app never has to filter afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it anywhere
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hosted&lt;/strong&gt;: free beta at &lt;a href="https://excalibase.io" rel="noopener noreferrer"&gt;excalibase.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One box&lt;/strong&gt;: Docker or Podman on a single VPS, same features as the hosted version (&lt;a href="https://excalibase.io/docs/self-hosting" rel="noopener noreferrer"&gt;self-hosting guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes&lt;/strong&gt;: what the hosted version runs on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engine is open source under Apache 2.0: &lt;a href="https://github.com/excalibase/excalibase-graphql" rel="noopener noreferrer"&gt;github.com/excalibase/excalibase-graphql&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Hosting for static frontends on Cloudflare's network is in testing now: React, Vue, Astro, anything that builds to files, with your own domain. After that I'm choosing between ClickHouse, Redis/Valkey and AI agent workflows. There's a &lt;a href="https://x.com/dukevu2506/status/2111466154283954313" rel="noopener noreferrer"&gt;poll on X&lt;/a&gt; if you want a say.&lt;/p&gt;

&lt;p&gt;I post what ships and what breaks every day on X as &lt;a href="https://x.com/dukevu2506" rel="noopener noreferrer"&gt;@dukevu2506&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you try it, tell me what's confusing or broken. I read every piece of feedback.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
