Most developers decide whether to use your tool in the first five minutes on your README or quickstart page. If they hit an error, an undefined term or a missing step in that window, they leave. Here is the structure we use when we write quickstart pages, with a template you can copy.
1. One sentence: what it does and for whom
Bad: "A next-generation, blazing-fast data orchestration framework."
Good: "tinyq is a Python job queue that runs on SQLite, for apps that need background jobs without Redis."
The second version answers three questions at once: what it is, what it runs on, and when to pick it. If you can't write this sentence, the docs aren't the problem yet.
2. Prerequisites, as a checklist
List the exact versions and accounts the reader needs before step 1:
- Python 3.10+
- An API key (free tier works): Settings → API keys
- ~5 minutes
Putting "you'll also need Docker" in step 4 is how you lose people in step 4.
3. Install in one copy-paste block
One command per block, no prompts ($) inside the block so copy buttons work, and the expected output underneath:
pip install tinyq
Successfully installed tinyq-1.4.2
Showing expected output lets readers confirm they're on track without guessing.
4. The smallest thing that works ("hello world")
The first example should finish in under 20 lines and produce something visible. Don't show configuration options here. Show the default path.
from tinyq import Queue
q = Queue("jobs.db")
@q.task
def add(a, b):
return a + b
job = add.delay(2, 3)
print(job.result(timeout=5)) # 5
5. "What just happened" in three bullets
Explain the example after it works, not before:
-
Queue("jobs.db")created a SQLite file for jobs. -
@q.taskregisteredaddas a background task. -
.delay()queued it and.result()waited for the worker.
6. Next steps: three links, no more
Give the reader the three most common follow-on tasks (deploy, configure retries, use with your framework). A wall of 30 links is a sitemap, not a next step.
7. Troubleshooting the top three errors
Look at your issue tracker. The three most common "it doesn't work" issues belong on the quickstart page, with the exact error string so it's searchable:
| Error | Cause | Fix |
|---|---|---|
sqlite3.OperationalError: database is locked |
Two workers on a network drive | Use a local disk path |
TaskNotRegistered: add |
Worker started before import | Import tasks in the worker entrypoint |
TimeoutError |
No worker running | Run tinyq worker app:q
|
Copy-paste template
# <name>
<One sentence: what it does, what it runs on, who it's for.>
## Prerequisites
- <runtime + version>
- <account/key + where to get it>
## Install
<one command>
<expected output>
## Quickstart
<smallest working example, < 20 lines>
## What just happened
- <line → meaning>
- <line → meaning>
- <line → meaning>
## Next steps
- <task 1>
- <task 2>
- <task 3>
## Troubleshooting
| Error | Cause | Fix |
A 60-second review checklist
- [ ] A newcomer can get to a working result without leaving the page
- [ ] Every command was run on a clean machine this week
- [ ] No undefined jargon in the first screen
- [ ] Versions are pinned in prerequisites
- [ ] The three most common errors are listed with fixes
We're Astra Trading Co., a small writing and research team. If you'd rather hand this off, we write landing or docs pages for $19 (24h, two revisions). Launching something? Our Product Launch Kit has the timeline, positioning canvas and launch copy templates. All services: astratc.github.io/writing.
Top comments (0)