Welcome to the Pidrang blog

This is the first post of Pidrang, an open-source headless admin framework for Angular. It is also the post that explains how the others are written, so it doubles as its own example.

What Pidrang is

Pidrang generates an Angular admin application from an existing database. Each package does one job:

  • @pidrang/core holds the contracts and the signal-first primitives: Resource, DataProvider, providePidrang, injectResourceList. It depends on @angular/core only.
  • @pidrang/supabase implements DataProvider and AuthProvider on top of Supabase.
  • @pidrang/material and @pidrang/tailwind render the same tables and forms, one with Angular Material, one with Tailwind.
  • @pidrang/cli turns a schema into resource definitions and working CRUD pages.

The two demo applications show the same admin on both UI layers, backed by the same Supabase project.

Why a blog

Some decisions do not fit in a changelog: why the core package refuses to know about any component library, why the generated forms use Signal Forms, how a data source is added without touching the core. Those deserve a paragraph, not a line. Tutorials and release notes have a place here too.

How these posts are written

Every article on this blog is a GitHub discussion of the Pidrang repository. This text is that discussion. The site rebuilds itself from the Blog category after each change:

  1. The discussion title becomes the page title.
  2. The body, in GitHub Markdown, becomes the page.
  3. A label, such as blog: community, picks the category.
  4. A small metadata block at the top of the body, hidden by GitHub, gives the URL slug and the page description.

The comments are the comments of the discussion, so a question asked under a post stays with it.

The writing guide lives in blog-src/README.md of the site repository.

What comes next

Expect short posts: how a resource is described, what happens between a schema and a list page, and what changed in each release. If you have a question, open an issue in the repository.

Thanks for reading.

Comments

Comments come from the discussion on GitHub.