I've been building self-hosted boilerplates as an indie maker for a few months now — KeyMint, MetricMint, FreelanceFlow. SchemaLens is the newest one, and it came from a real annoyance: every database documentation tool I found was either an outdated Java tool (SchemaSpy) that needs JDBC drivers and terminal commands, or a modern cloud service like dbdocs.io that wants your production schema on their servers for $39/month.
SchemaLens connects to your PostgreSQL database with a plain connection string, draws a live ER diagram with React Flow, and lets you attach permanent notes to any table or column. The notes live in SchemaLens's own database, not yours, and they survive re-scans even if the schema changes.
The build was straightforward until deployment. I'm running it as a single Vercel project — Vite frontend plus an Express API bundled as one serverless function. Vercel kept defaulting the import to the wrong root directory (it picked artifacts/api-server instead of the repo root), which threw "No entrypoint found" errors that had nothing to do with my actual code. Fixed it by explicitly setting the root directory back to the repo root and switching the API preset from "Express" to "Other."
The more interesting bug came after deploy: clicking a table in the ER diagram threw "Table not found," but typing the exact same URL worked. Turned out my Tables list was passing the scan result through router state on navigation, but the diagram's click handler was calling navigate() without it. Fixed with a small in-memory cache keyed by connection ID, so the table page doesn't care how you got there.
Live demo (with a bundled e-commerce schema, no setup needed): https://schemalens-api-server.vercel.app/
Gumroad: https://ibrh96.gumroad.com/l/nybxiw
Happy to answer questions about the stack or the deploy setup.




