Dashboard
A quick overview of members, content, and pending reviews at a glance. Every number is counted live so nothing goes stale between refreshes.

Admin Console
A clean, ready-to-use control panel for your team. Manage members, review submitted content, and keep an eye on the numbers — all without leaving the browser, and all reading live from your own database.
Everything you need
This starter ships with the four screens most internal tools need on day one. The structure is already wired to your database — swap the placeholder wording for your own and you're ready to hand it to the team.
A quick overview of members, content, and pending reviews at a glance. Every number is counted live so nothing goes stale between refreshes.
Create, edit, and remove members from one table. Change roles, suspend accounts, and search the list without a page reload.
Review submitted content, approve what belongs, and reject the rest. Filter by status so the queue stays focused on what needs a decision.
Adjust workspace name, support email, and notification defaults from a single page. Toggle rules like auto-approval on or off in seconds.
Members, active accounts, content items, and pending reviews are read straight from the database, so the figures always match reality.
Row-level security is enabled on every table from the very first migration, so access rules ship with the schema instead of as an afterthought.
How it fits together
The admin screens read and write through a single typed data layer, so the numbers you see on the dashboard are the exact numbers sitting in your database — no separate reporting job to keep in sync.
The database ships seeded with example members and content, so you can click through every screen the moment it goes live — no empty tables, no guesswork about how it should look with real data in it.
Roles and statuses are baked into the user table, so you can model editors, admins, and members right away. Suspend an account or promote a colleague straight from the users screen.
All copy is neutral placeholder text you can replace. Swap the words, keep the structure, adjust the brand color once, and every screen follows along without more edits.
A closer look

Four stat cards up top and two live lists below — recent members and the review queue — so the state of your product is clear the second you open the console.

A searchable table with inline edit and delete, plus a dialog for adding new members. Roles and statuses are dropdowns, so there's nothing to memorize.

Each submission shows its title, author, category, and body, with approve and reject buttons right there. Filter the queue by status to work through it fast.

Workspace details, support contact, and notification toggles are grouped into calm cards, so preferences stay easy to find and quick to change.
What's inside
The parts you'd otherwise build by hand are already here, wired the way a production tool expects them to be.
Reads and writes go through a shared helper that returns typed rows, so a stray field name won't slip past the build.
The users table filters as you type across names and emails — no submit button, no round trip to the server.
Moderation splits into pending, approved, rejected, and all, so a growing backlog never turns into a wall of noise.
Welcome emails and review alerts are marked in the code, ready to connect to the messaging service when it's available.
Loading, empty, and error states are handled on every data screen, so nothing ever shows a blank white box.
Each table's access rules live in the same migration that creates it, so security travels with the structure.
Good to know
Not in this starter. Login and permissions aren't wired yet, so the screens are open for anyone who has the link. Connect authentication when you're ready to restrict access, then tighten the table policies to match.
Jump into the dashboard and see your whole workspace at a glance.