Eric Park
Eric Park/projects
Bookmarket

Bookmarket

2024

Next.jsNestJSTypeScriptPostgreSQLDockerTurborepo

Bookmarket is a self-hosted bookmark manager built around one thesis: browser bookmarks become a graveyard because there are no tools for resurfacing them. Save URLs with auto-fetched metadata, drag-and-drop into categories, search across everything via a global command palette (cmdk), and share collections at `/s/<username>`. PWA install + offline support makes it feel like a native app on mobile.

Architecture — Turborepo + pnpm monorepo. Frontend is Next.js 15 (App Router, React 19) with TypeScript 5.7, TailwindCSS, Radix UI primitives, Framer Motion, TanStack Query for server state with optimistic updates, Zustand for client state, next-themes for light/dark, and nuqs for type-safe search-params state. Backend is NestJS 10 with TypeORM over Postgres, JWT over HTTP-only cookies, Google + GitHub OAuth, Cheerio for server-side metadata scraping (no third-party unfurl API), bcrypt for local auth, and class-validator for DTO safety. Sentry instruments both halves for error + performance telemetry.

Operations — Everything runs in Docker Compose on a Raspberry Pi at home. CI/CD through GitHub Actions; production deploys land on the Pi over Tailscale SSH from a GHCR image — never Vercel. Analytics split across PostHog Cloud and a self-hosted Umami. A first-come-first-serve signup slot system uses atomic updates so concurrent registrations can't race past the configured cap.

← All projects