Admin Invite Gate — three layouts
Asked for by Leong Sen Fong, 2026-09-22 06:38: "the current design feels unorganized… the widgets are not properly categorized… cluttered and difficult to navigate." Three structurally different directions below — not three skins of the same screen. Each says what changed, why, and what it costs. Drawn by Tora Master.

What is actually wrong

One card is carrying three different kinds of thing, drawn identically and stacked in one column:

KindWhich rowsWhat you do with it
SettingsInvite-only gate switch · Invites per user · Daily limitChange — rarely
NumbersThe Codes row · the WHERE FROM table · "0 became accounts · 0 still waiting"Read — every time
ActionsMint codes · Revoke · WaitlistPress — the decision moment
The test: the clutter is not colour or corner radius — nothing tells your eye which kind a row is, so all three compete for the same attention. All three directions start from the same move: separate the three kinds first, style second.
🔴 One number to fix whichever layout wins — it is in your own screenshot: "Codes — 0 unused of 0 minted" sits directly above a table reading 4 out / 4 unused. Both are correct (that row counts official codes only; the table counts every source), but on one screen they read as a contradiction — and this is the number someone uses to decide "do we mint another batch". These two must stop arguing: either that row counts everything, or its scope goes in its label ("Official codes").
Two small fixes present in all three: ① "From their own quota" and "Emailed to waiting list" currently wrap mid-phrase and the icons fall out of line with the text — all three re-align rows and icons; ② the 2+1 button arrangement at the bottom is unbalanced — each option handles it differently.

The three, side by side

A · Grouped cards
Gate
🔒
Invite-only gate
OFF — anyone can sign up
Rules
🎁
Invites per user
Each member can send 3
Change
Daily limit
0 of 1000 used today · resets 00:00
Change
Anyone holding an invite always gets in. This limit only applies to people arriving without one.
Codes · 4 out / 4 unused
WHERE FROMOUTUNUSED
Shared by users
From their own quota44
Official — from HOOP
Minted by you00
Emailed to waiting list00
0 became accounts · 0 still waiting
Mint
Revoke
Waiting list

Three cards, each with a kind label

What changed

One card becomes three, each with a kind label (Gate / Rules / Codes). Nothing is removed — things are only grouped. The three-line Daily-limit explanation moves to the foot of its card instead of swelling a settings row into a paragraph.

Why

Smallest change, easiest to ship. Everything you have today stays exactly where it is — the eye can finally tell a setting from a number.

What it costs

Still one long column; the scroll barely shortens. It tidies the mess but never answers "what did I open this screen to find out".

B · Status first
Gate is OFF
Anyone can sign up right now
4Out
4Unused
0Joined
0Waiting
Rules
🎁
Invites per user
3 each
Change
Daily limit
0 of 1000 today · people without an invite only
Change
Where the codes came from
Users 4 · Official 0 · Waiting list 0
Mint codes
Revoke
Waiting list

One status line, one row of numbers, detail folded away

What changed

"Is the gate open" becomes the first sentence on the screen — it is why you opened it. The four numbers that matter collapse into one strip. The WHERE FROM table folds away behind a one-line summary. Buttons get a rank: Mint is the solid primary, the other two are secondary.

Why

Highest density: one screen answers "is the gate on / how many codes are out there / how many are waiting". The breakdown is not something you read every visit, so it should not permanently own half the screen.

What it costs

One extra tap for the breakdown. The four numbers need their scope pinned down first (see the red note above) — four numbers side by side invite comparison even harder than a table does.

C · Summary + doorways
Gate is OFF
Anyone can sign up right now
Rules
🎁
Invites per user
3 each
Change
Daily limit
0 of 1000 today
Change
Codes
4
Out
4
Unused
0
Joined
Users 4 · Official 0 — manage, mint and revoke inside
Waiting list
0
Waiting
0
Invited
0
Joined
Invite the next batch from inside

This screen answers "how are things"; doing happens on the pages that own it

What changed

This screen stops doing things: the gate switch, two rules, and two "summary + go in" doorways. Mint / Revoke move into the AdminCodesScreen that already exists (added in v2.431); waiting-list actions move into the AdminWaitlistScreen that has existed for weeks.

Why

Those two pages already exist — this card duplicates them: same numbers, same actions, each place doing half the job. When one thing lives in one place, this screen can never be overloaded again — and being overloaded is exactly how it got here.

What it costs

One hop further to act. Biggest change: the buttons and their dialogs have to move, and those two pages must be checked for gaps first — Revoke currently exists only on this card.

Which I would pick, and why

C, with B as second choice. Not on looks: this card is cluttered because it is trying to be a dashboard and a control panel at once — v2.431 gave codes their own page, the waiting list has had one for weeks, and this card still keeps a second copy of both the numbers and the buttons. A tidies what is in front of you today, but in six months it will fill up the same way again.

Want it quickly and safely → A (about a day, very low risk).
Want this screen to be genuinely good without touching other pages → B.
Want it to stop going cluttered → C (largest change; the two pages must be audited for gaps first).

⚠️ All three are layout drafts, not final visuals: sizes and spacing follow the app's current dark-card language, but real colours, radii and icons must be checked against DESIGN_SYSTEM at build time. The numbers shown are the real ones from your screenshot (4 / 4 / 0 / 0).