fc-os
the founders club ran on sheets, group chats and whatever tool someone set up that week, so nobody could tell who was doing what. we wanted a proper task board for each domain, but linear charges for roles and permissions. so i built our own.
what's in it
you sign in with a code sent to your email, pick your domains, and wait for someone in hr to approve you. after that you get:
- opus: a kanban board for each domain (technical, creatives, operations, outreach), with sub-tasks, labels, assignees, due dates and a table view. leads add their own statuses, priorities and labels
- a member directory, and a requests page where approvers let new people in
- a roles page: a grid of who can do what, which admins edit without touching code
- a place to report bugs

the tech is mostly standard: next.js, drizzle on postgres, better auth and shadcn/ui. the part i like: when someone moves a card, everyone else's board updates. each write sends a tiny postgres NOTIFY, one LISTEN connection per server passes it on to browsers over server-sent events, and the page refetches itself.

the hard parts
i built it for neon: their serverless driver and their hosted auth. then i moved it onto claw, the box in my dorm, and both had to go. the driver only speaks neon's http protocol, so it moved to plain postgres. login moved to self-hosted better auth, with codes sent through resend.
the campus network hit harder. only tcp port 443 gets out, and a lot of normal setup quietly breaks:
- the build couldn't fetch google fonts, so the fonts live in the repo now
- github over ssh on port 22 is blocked, so coolify pulls over port 443
- no webhooks reach the box, so every deploy is a button i click
- after a power cut, the tailscale funnel came back stale and the site returned 525s. a timer now checks every 5 minutes and re-arms it
notes on the pieces are in my cache.
what's next
- opus
- members, approvals and roles
- attendance tracker
- fc tv cms
- performance tracker
-
momis on hold. one mic can't hear a whole room: the person a metre away and the person at the back both need to make it into the transcript, and we don't have a way to do that yet
contributors
- mohakdev: the first rbac and task schemas
- yatinannam: reviewed and merged the early prs