The Problem
Every time I needed a quick tool online,
the same loop:
- Search for free PDF compressor
- Find a promising site
- Hit a sign-up wall or paywall
- Repeat for every tool
I got tired of it. So I built CrispToolHub —
a hub of 65+ free browser-based tools.
What I Built
crisptoolhub.com — 70 pages, 65+ tools:
- 📄 PDF Toolkit (10 tools using pdf-lib + PDF.js)
- 📝 Resume & Career (10 tools with Gemini AI)
- 🖼️ Image Tools (7 tools with WASM)
- 💰 Financial Calculators (20 calculators)
- 👨💻 Developer Tools (6 tools)
- ✏️ Text Tools (6 tools)
- 📏 Ruler & Compass
Tech Stack
- AstroJS v6 — MPA (no SPA), static build
- Tailwind CSS v4 — styling
- Cloudflare Pages — hosting (free)
- Cloudflare Workers — Gemini AI proxy
- Google Gemini 2.5 Flash — AI features
- pdf-lib — PDF manipulation
- PDF.js — PDF rendering
- @imgly/background-removal — WASM AI
- Mammoth.js — Word doc parsing
How AI Helped
I used Claude Code (Anthropic) for the entire
development. The workflow:
- Write detailed specs for each tool
- Claude Code reads CLAUDE.md (project bible)
- Builds the tool following all conventions
- Runs tests automatically
- Deploys via Cloudflare Pages
This reduced development time from months to weeks.
Key Technical Decisions
MPA over SPA: Every page is a full reload.
Better SEO, better performance, simpler code.
Everything client-side: All processing happens
in the browser. No servers, no file uploads,
complete privacy. PDF.js renders PDFs, WASM
removes backgrounds, pdf-lib manipulates PDFs.
Lazy loading: Heavy libraries (PDF.js, WASM,
mammoth) only load when user clicks a button.
Initial page load is near-instant.
Currency system: 6-currency toggle (USD/INR/
EUR/GBP/AED/SAR) with canonical USD base value
to prevent rounding drift.
Lessons Learned
Trailing slashes matter for SEO — Google
Search Console showed redirect errors for /ruler
without trailing slash. Fixed with
trailingSlash: "always" in Astro config.Mobile file upload is different —
Blob.arrayBuffer() fails on iOS Safari.
Solution: FileReader API universally works.Gemini thinking models — gemini-2.5-flash
is a thinking model. Without thinkingBudget: 0,
it burns all tokens on reasoning and returns
empty response.PDF.js workers on mobile — Web Workers
fail on mobile browsers. Solution: CDN worker
fallback with version matching.
Results After 3 Days
- 1,900 active users
- 55% US traffic
- Top pages: Mortgage Calculator, Resume Builder
- 70 pages indexed on Google
What's Next
- Google AdSense (pending approval)
- Premium subscriptions (₹199/month)
- AI-powered reports (resume, finance)
- Video tools
Try It
https://crisptoolhub.com — completely free,
no account needed.
Would love feedback from the dev community —
what tools are missing? What would you build next?
Built with AstroJS + Cloudflare + Claude Code
Top comments (0)