MakerBench is a curated bookmarking platform for developer and maker tools.
- Node.js 24.x
- pnpm (unversioned by policy)
Runtime/package manager decision:
- Netlify Functions run on Node.js, so Bun is intentionally not part of this deployment workflow.
Core MVP functionality is implemented:
- Submit a tool URL with tags
- Extract metadata (title/description/OG image)
- Capture screenshot fallback with Browserless when OG image is missing
- Store fallback screenshots in Cloudinary
- Persist tools and resources in Supabase Postgres (Drizzle ORM)
- Browse approved tools and public resources
- Search approved tools and resources by title and tags
- Filter by tags with URL-synced state
- Responsive React UI with routing (
/,/submit,/about,/privacy)
- React 19 + TypeScript + Vite
- Netlify Functions
- Supabase Postgres + Drizzle ORM
- Valibot validation
- Browserless (screenshots)
- Cloudinary (image storage)
- Vitest + Testing Library + Playwright
pnpm dev
pnpm test
pnpm lint
pnpm lint:css
pnpm typecheck
pnpm buildFor full local setup (including Netlify Functions + env configuration), use:
Copy .env.example to .env and fill values:
TURSO_DATABASE_URLTURSO_AUTH_TOKENCLOUDINARY_CLOUD_NAMECLOUDINARY_API_KEYCLOUDINARY_API_SECRETBROWSERLESS_API_KEYSENTRY_DSN(optional)
Package manager note: this repository pins pnpm via packageManager in package.json so Netlify Corepack resolves the exact pnpm version during builds.
POST /api/bookmarks- submit bookmark (stored aspending)GET /api/bookmarks- list approved bookmarks (paginated)GET /api/bookmarks/search- search/filter approved bookmarks
Open backlog is tracked in GitHub Issues: https://github.com/schalkneethling/makerbench-next/issues
- Architecture: docs/architecture.md
- Local setup: docs/local-development.md
- Production deployment: docs/production-deployment.md
- Database setup: DATABASE_SETUP.md