<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pidrang]]></title><description><![CDATA[Pidrang]]></description><link>https://pidrang.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6af4768ea7d27e37379b638c/966e5f48-131d-4933-b04e-82b8c173fb60.png</url><title>Pidrang</title><link>https://pidrang.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 12 Nov 2026 08:11:55 GMT</lastBuildDate><atom:link href="https://pidrang.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Pidrang 0.1.1: a working Angular admin from your Supabase schema]]></title><description><![CDATA[Pidrang 0.1.1 is now on npm. With the first version (0.1.0), pidrang init wrote the pages, but you still installed the packages, wired four files by hand…]]></description><link>https://pidrang.hashnode.dev/pidrang-0-1-1-angular-admin-from-supabase-schema</link><guid isPermaLink="true">https://pidrang.hashnode.dev/pidrang-0-1-1-angular-admin-from-supabase-schema</guid><category><![CDATA[Angular]]></category><category><![CDATA[supabase]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[framework]]></category><category><![CDATA[TypeScript]]></category><category><![CDATA[admin panel]]></category><dc:creator><![CDATA[Pidrang]]></dc:creator><pubDate>Wed, 11 Nov 2026 14:32:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6af4768ea7d27e37379b638c/adeb6b6e-7077-4227-aa9b-fdaeafdf0f0a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Pidrang <a href="https://www.npmjs.com/package/pidrang">0.1.1</a> is now on npm. With the first version (0.1.0), <code>pidrang init</code> wrote the pages, but you still installed the packages, wired four files by hand, and could not save anything without writing a sign-in page.</p>
<p>With this new version (0.1.1), a fresh Angular app gets a working admin from one command:</p>
<pre><code class="language-bash">ng new my-admin
cd my-admin
npx pidrang init
</code></pre>
<p>Answer the questions, put your Supabase publishable key in the two environment files, run <code>ng serve</code> and you get a list, create, show and edit page for each table you chose, a delete, a sign-in page and a menu of your tables.</p>
<h2>What <code>init</code> does now</h2>
<ul>
<li><strong>Installs what the pages need.</strong> It offers to install <code>@pidrang/core</code>, <code>@pidrang/supabase</code>, <code>@pidrang/material</code> and <code>@supabase/supabase-js</code>, and runs <code>ng add @angular/material</code>. Say no and it prints the exact commands.</li>
<li><strong>Wires the app.</strong> It registers Pidrang and the Supabase client in <code>app.config.ts</code>, adds the routes to <code>app.routes.ts</code> and writes both environment files. A file it cannot edit safely gets a comment with the change to make.</li>
<li><strong>Generates a sign-in page.</strong> When your Row Level Security policies only let signed-in users write, the app can now save. Signed out, the pages hide Create, Edit and Delete and the forms say "Sign in to make changes."</li>
<li><strong>Lands somewhere useful.</strong> On a new app, <code>/</code> opens the first list, and a layout shows a menu of your tables with a Sign in button.</li>
<li><strong>Reads your columns better.</strong> Readable labels, <code>created_at</code> and <code>updated_at</code> (also <code>createdAt</code> and <code>updatedAt</code>) read-only, lists newest first, and the "database default" hint on create only.</li>
<li><strong>Uses the current Supabase key names.</strong> Publishable and secret, as the dashboard shows them today. The secret key is only used to read your schema; it never goes into the app.</li>
<li><strong>Can run again.</strong> Run <code>init</code> later to add a table: it adds it to <code>resources.ts</code> and leaves the rest alone.</li>
</ul>
<p>All the changes are in the <a href="https://github.com/pidrang/pidrang/blob/main/CHANGELOG.md">changelog</a>.</p>
<h2>Known limits</h2>
<ul>
<li>The generated CRUD pages use Angular Material. The sign-in page and the layout follow Tailwind when your app uses <code>@pidrang/tailwind</code>; Tailwind CRUD pages are planned (<a href="https://github.com/pidrang/pidrang/issues/61">#61</a>).</li>
<li>A new app is over Angular's default 500 kB initial budget (<a href="https://github.com/pidrang/pidrang/issues/172">#172</a>).</li>
<li>Dates show as raw ISO text (<a href="https://github.com/pidrang/pidrang/issues/187">#187</a>).</li>
<li>If you run <code>init</code> again before setting the key, Next steps no longer reminds you to replace the placeholder (<a href="https://github.com/pidrang/pidrang/issues/192">#192</a>, planned for 0.1.2).</li>
</ul>
<h2>Try it, help shape it</h2>
<ul>
<li><a href="https://pidrang.dev/demos/?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=launch">Live demos</a>, on Angular Material and on Tailwind, built from 0.1.1.</li>
<li><a href="https://pidrang.dev/docs/getting-started?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=launch">Getting started</a>.</li>
<li>Seven <a href="https://github.com/pidrang/pidrang/labels/good%20first%20issue">good first issues</a> are open, each with the files to look at and what "done" means. A first pull request is welcome.</li>
<li>Tell us what you are building in <a href="https://github.com/pidrang/pidrang/discussions">Discussions</a>.</li>
</ul>
<p>Pidrang is MIT licensed and pre-1.0: the API may still change between minor versions.</p>
]]></content:encoded></item></channel></rss>