Friday Ice A Password-Free Directory for an Invite-Only Community
A private community directory for an invite-only Hebrew-speaking network members discover each other by profession, admins curate with AI, and nobody has a password.
TypeScriptNext.js 15React 19SupabaseTailwind CSSshadcn/uiOpenAIIron Session
The problem
Running a curated community with a spreadsheet is painful. The organizers needed a place where approved members could discover each other by name, profession, or domain without handing out logins, managing passwords, or paying for a SaaS platform that doesn't fit their specific invite model.
The existing flow was manual: WhatsApp threads, Google Sheets, and a lot of copy-paste.
What it does
Friday Ice is a private directory that models the full lifecycle of community membership:
- Invite admins generate magic links with configurable uses and expiry; each member has an invitation quota they can share with people they vouch for
- Evaluate new member profiles can be auto-scored by GPT before an admin makes an approval decision; bulk evaluation runs on the entire backlog in one click
- Discover approved members search the directory by name, domain, or free text; the homepage surfaces different members on every load
- Profile — each member controls their own card: photo
(with HEIC, iPhone images format, support),
bio, profession, social links; the app can generate a stylized AI portrait
for each member — designed to look good as a WhatsApp share card
No passwords anywhere. Authentication is magic links or passkeys both feel natural on mobile, which is where most of the user base lives.
Technical highlights
- Invite-aware auth — each link carries a use limit and expiry; one token
can onboard a group or be locked to a single person - Member status machine — invitation, evaluation, approval, and decline are explicit states; the UI gates at every stage without scattered conditionals
- AI evaluation pipeline — profiles are scored against a prompt editable from the admin UI at runtime; no redeploy needed to tune the criteria
- Privilege separation — admin operations run under a server-only elevated client; nothing with write-through access ever reaches the browser
What I learned
The community already had a culture and a vibe before the app existed. The design had to match that dark, warm, a bit exclusive not feel like a generic SaaS admin panel dropped on top of people's social graph.
Hebrew RTL isn't just direction: rtl in one place. It touches form layouts,
table columns, toast position, icon mirroring, and every string in the app.
Getting that right from day one (not as a retrofit) saved a lot of pain.
The hardest design decision was the ghost-user state: someone who authenticates successfully but isn't approved yet. They need feedback without seeing member data. That one edge case touched the auth context, the directory page, the profile form, and the admin dashboard more surface area than it looks.