Why I built it
A CV says what you can do. A product people can open says what you did. Indie makers and "vibe coders" ship real apps every week, but there's no good place to show them to a recruiter, and nothing stops anyone from claiming a product or a revenue number they don't have. Shipwall is a portfolio where every claim can be checked.
Features
- Live link required. Every product must return HTTP 2xx when posted and is re-checked over time.
- Ownership badge. Prove a domain is yours with a DNS TXT record or a meta tag.
- Verified revenue (optional). Connect Stripe, Polar, Paddle, LemonSqueezy or SePay (VietQR bank transfers) with a read-only key. Only monthly totals are stored, synced daily, with a 90-day chart.
- Profile = CV. Experience, education, skills and shipped products on one page, plus a one-click, one-column ATS-friendly PDF resume.
- Discovery. The wall, weekly/monthly/yearly leaderboards ranked by upvotes, "Built with" pages per AI tool, categories and ⌘K search.
- Product pages like a store listing. One YouTube video and up to 5 screenshots, compressed to WebP in the browser.
- Sponsored spots paid by VietQR or card, plus a full admin console: review queue, reports, user bans, feedback inbox, audit log.
How I built it
- Next.js 16 (App Router) + React 19 + Tailwind v4 + Motion
- SQLite (better-sqlite3) on a VPS in Docker behind Caddy, nightly backups to Cloudflare R2
- Firebase Auth (GitHub + Google), media on Cloudflare R2
- Revenue keys encrypted with AES-256-GCM; SEO with JSON-LD, sitemaps and per-tool landing pages
- Built with Claude Code and Codex




ディスカッション 0