Let me paint you a picture.
It's 11pm. You just finished a side project you're actually proud of a clean REST API, solid architecture, working deployment. You push to GitHub and feel that little rush.
Then you look at your README.
# my-project
`
# idk
it exists.
it does something.
`
You close the laptop.
That's not a hypothetical. That was me, repeatedly, for two years. Documentation felt like a second job I never signed up for. So I stopped doing it. And then I wondered why nobody used my projects.
The actual problem with docs
It's not that developers are lazy (okay, maybe a little). It's that writing docs requires a completely different brain mode than writing code. You have to step outside your head, pretend you've never seen your own repo, and explain every decision you made at 2am three months ago.
It's cognitively expensive. So we skip it.
But here's the cruel irony: undocumented projects don't get used. Unused projects don't get starred. Unstarred projects don't get discovered. It's a death spiral that starts with a blank README.
What I built
WhatDoc — connect your GitHub, pick a repo, pick a template, and get production-ready documentation in under 60 seconds.
Not a README generator that spits out bullet points. Actual beautiful docs — the kind that look like Twilio or MDN wrote them.
Here's what the pipeline looks like under the hood:
GitHub Repo
↓
Shallow clone to /tmp (ephemeral, deleted after)
↓
Walk directory tree, filter noise
(lockfiles, dist/, tests, .min.js, source maps)
↓
Regex minifier strips comments, base64 blobs, blank lines
↓
Gemini analyzes repo type (REST API? CLI? Frontend?)
and generates paradigm-aware docs
↓
Your docs, live at yourproject.whatdoc.xyz
The whole thing runs in about 45 seconds for a medium-sized repo.
The templates (15 of them)
This is where I spent most of my time honestly. I didn't want to generate boring markdown. I wanted docs that made developers go "wait, this looks professional."
15 themes, each built for a specific project type:
| Theme | Vibe | Best for |
|---|---|---|
| The API Gateway | Twilio-style split-pane | REST APIs, webhooks |
| Aero Academic | LaTeX-clean typography | SDKs, libraries, math packages |
| Modern DX | Sleek multi-theme SaaS | Startups, modern web apps |
| Minimalist | Ultra-distraction-free | Libraries, focused APIs |
| Django Docs | Table-rich, elegant | Python, backend frameworks |
| MDN Style | Mozilla-inspired reference | Accessible, table-driven docs |
| Web3 Native | Dark neon | Smart contracts, dApps |
| Fintech Vault | High-trust, crisp | Payment gateways, fintech |
| Enterprise Hub | Corporate spacious | Large org documentation |
| DevTools Pro | Terminal-first aesthetic | CLIs, developer utilities |
| Deep Space | True-black dark mode | Immersive, cosmic accents |
| Open Source | Friendly, inclusive | Community-driven projects |
| Wiki Base | Knowledge-graph layout | Vast documentation repos |
| Component Lab | Showcase environment | React/Vue component libraries |
| Consumer Tech | Apple-esque polish | B2C, product-focused docs |
Whatever you're building a CLI tool, a DeFi protocol, a React library, a SaaS API — there's a template that fits. Not just aesthetically, but structurally. The layouts are designed around how those project types actually get documented.
The engineering decisions I'm most proud of
Ephemeral clones — repos are never stored. They hit /tmp, get parsed, and get nuked. No data at rest. This was a non-negotiable for me given that people connect private repos.
The Token Guillotine — free tier caps payloads at ~200k tokens with a smart file-boundary cutoff (not a dumb mid-file slice). BYOK users get the full context window.
BYOK (Bring Your Own Key) — plug in your Gemini API key, it's stored in localStorage, never touches my server. Unthrottled generation, no limits.
Round-robin key rotation — free tier rotates across multiple API keys with exponential backoff (15s → 30s → 60s) on rate limits. You don't see 429s, you just wait a few extra seconds.
Paradigm-aware prompting — the system prompt tells Gemini to detect whether it's looking at a REST API, a frontend app, a CLI tool, or a library, and adapt the doc structure accordingly. A FastAPI repo shouldn't get the same template as a React component library.
BYOK changed everything
Originally WhatDoc was fully managed — my API keys, my limits, your problem when you hit them.
The BYOK model was the right call. Developers trust tools more when they control the keys. And the folks who want to generate docs for 20 repos don't have to wait in a queue.
It's also more honest: I'm not a funded startup, I'm a developer who built a thing. BYOK lets power users get power-user experience without me subsidizing it.
What's next
A few things I'm actively building:
- GitHub Action — auto-regenerate docs on push, keep them always in sync
- More templates — Stripe-style, Vercel-style are in design
- Public gallery — browse docs generated for popular open-source repos
- No-login preview — paste any GitHub URL, get a doc preview, sign up to deploy
Try it
The project is open source: github.com/herin7/whatdoc.xyz
Live product: whatdoc.xyz
If you try it, I genuinely want to know what breaks. Open an issue, reply here, or find me on Twitter. This is early and rough in places, and the best thing that can happen is people actually using it and telling me what's wrong.
And if it saves you from staring at a blank README at 11pm — that's the whole point.
Built with React 19, Express 5, MongoDB, Gemini API, and a lot of late nights.
If WhatDoc helped you, a ⭐ on GitHub goes a long way.
Top comments (0)