~823
Commits, Oct 2025 – Aug 2026
457
TypeScript / TSX source files
46
Database models
6
Contributors
The problem
Bookmarks pile up unread and unfindable.
Existing tools are dumb lists. No context, no summaries, no organization — and no way to reach saved content from where people actually work: chat assistants, social feeds, mobile.
The approach
One bookmark backend, delivered to four client surfaces from a single pnpm monorepo. The organizing work happens at save time rather than being left to the user, and the same data layer answers every surface.
Client surfaces
One backend, four front doors.
Each surface is a thin client over the same shared packages, so behaviour stays consistent and a fix does not have to be made four times.
The engineering that carries it.
Stack
TypeScript end to end.
Frontend
- Next.js 15
- React 19
- Tailwind
- shadcn/ui
Services
- Node + Express (MCP)
- OpenAI
- Upstash Redis
- Stripe
Data
- Prisma ORM
- Supabase PostgreSQL
- Supabase Auth
Infrastructure
- AWS EC2 + PM2
- AWS Amplify
- DigitalOcean
Process
Plan-first delivery.
Every feature starts as a written masterplan document, paired with a testing artifact and reviewed against architecture invariants before implementation begins.
- 01
Masterplan
The feature is written down before it is built, so the design argument happens in a document rather than in review.
- 02
Testing artifact
Each plan ships with the artifact that says how the feature will be proven, agreed up front rather than assembled afterwards.
- 03
Invariant review
Plans are checked against the architecture invariants that keep the shared core shared, before any code is written against them.
- 04
CI-enforced gates
Build, tests and security review run as pre-PR gates, with every pull request targeting a staging branch rather than main.
Where it stands.
- Webapp is production-ready and deployedLive
- MCP server live, serving ChatGPT and Claude usersLive
- Billing and onboarding shippedShipped
- Chrome extension integrating; mobile clients plannedIn progress