It was 2 AM on a Thursday in August 2022.
I was sitting on the floor of our Shanghai office — laptop on my knees, Slack muted, watching AFFiNE's GitHub star counter tick upward in real time.
72 hours earlier: zero.
Now: 1,000.
I may or may not have screamed. There was nobody there to hear it. (There was also nobody there to tell me that the hardest part hadn't started yet.)
This guide covers both parts — the sprint to 1,000, and everything that came after, all the way to 60,000+.
Key Stats
| Metric | Data |
|---|---|
| AFFiNE GitHub stars | 60,000+ |
| Time to 1,000 stars | 72 hours |
| Time to 10,000 stars | 43 days |
| GitHub Trending appearances (5 months) | 28× |
| Reddit star conversion (open source launch) | 5–8% |
| Stars from Reddit (month 1) | 2,000+ |
| Overseas user share | ~80% |
TL;DR
- We had one week to prepare. No grand strategy, just focused execution.
- First rule: no Chinese social media for the first week — we needed clean, organic overseas data
- Reddit alone drove at least 2,000 stars in the first month
- Day 5: we hit #1 on GitHub Trending All Languages
- 72 hours → 1,000 stars. 1 week → 6,000. 43 days → 10,000
- After 6,000 stars, we stopped pushing and started listening — 1v1 user calls only
Why I'm Writing This
When we launched AFFiNE in August 2022, I couldn't find a guide that told the truth about how GitHub stars actually grow. Everything was surface-level: "write good docs," "share on social media," "build a community." None of it told you what to do in the first 48 hours or why the first week shapes everything that comes after.
This is the guide I wish I'd had. It's based on growing AFFiNE from 0 to 60,000+ GitHub stars — not as a distant observer, but as the person who ran the operation.
The Reality of Our Launch: One Week of Chaos
We had exactly one week to prepare for the open source launch. It was chaotic.
The night before we went live, I told everyone on the team: don't post anything on Chinese social media for the first week. Not a word. No WeChat Moments, no WeChat groups, nothing.
This wasn't modesty. It was strategy.
Investors run scripts to check your star growth velocity and geographic distribution. At the time, AFFiNE was fundraising. If our first week of stars came predominantly from China, we'd immediately look like we'd gamed the numbers — friends and colleagues rallying to boost a vanity metric. The data needed to be clean. We needed to prove that developers around the world found us organically.
So we went English-only, and we went overseas-first.
The result: our star geography in the first week was approximately 19% from China, 19-21% from the US, and 10-15% from Europe. A genuine global distribution that held up to scrutiny.
What Actually Happened: The Numbers
| Milestone | Time |
|---|---|
| 1,000 stars | 72 hours |
| 6,000 stars | 7 days |
| 10,000 stars | 43 days |
| GitHub Trending #1 | Day 5 |
| Trending appearances (Aug–Dec 2022) | 28 times |
At the time, we were told AFFiNE was among the fastest open source projects to reach 10,000 stars before the ChatGPT era. I can't verify that claim independently, but the velocity was real.
Part 1: The First 72 Hours (0 → 1,000 Stars)
Your network is your launchpad — and that's OK
The first 100–300 stars will come from people you know. Don't be embarrassed by this. It's not cheating; it's ignition.
A new repo with 0 stars converts almost no one. The same repo with 200 stars starts converting strangers. You need to get over that threshold before any of your organic distribution tactics will work.
Message developers you know directly. Not a group blast — individual messages. Keep it honest:
"We just open-sourced AFFiNE. If it's something you'd actually use, I'd love it if you checked it out."
Walk around coworking spaces if you have to. We did. Print a QR code, talk to people.
Reddit: The engine you don't start on day one
Reddit was our biggest single source of stars in the first month — at least 2,000 cumulative, from subreddits like r/selfhosted, r/opensource, and r/programming.
But we didn't just post on launch day and hope. The approach:
- Pre-seeded communities: In the weeks before launch, we were already active in relevant subreddits — commenting on other projects, helping people with questions, building karma and credibility
- Format research: Before posting anything, search the subreddit for similar projects. If you can find examples that weren't removed, you've found a format that works. Replicate that format
- No marketing speak: Developers have a finely tuned radar for promotional content. "Show Reddit" posts that read like press releases get buried. Write like you're explaining something to a colleague
- Respond to everything: Every comment is an opportunity to deepen a relationship and signal that this project is actively maintained
One thing worth knowing: Reddit gives your posts significantly more reach if your account has karma. If you're starting fresh, spend 1-2 weeks on /r/catpics or /r/dogpictures (yes, seriously) before you post anything product-related. You can get to 100+ karma in a day.
Hacker News: high ceiling, low control
HN is unpredictable. A front-page Show HN can drive 500–2,000 stars in 24 hours. But you can't engineer it — you can only position well and get lucky with timing.
What you can control:
- Write a technical, honest headline. "Show HN: AFFiNE — An open-source Notion alternative with local-first storage" outperforms "Show HN: We built the best productivity app" every time
- Be in the comments from the first minute. HN rewards engagement
- Don't launch on a Monday or Friday. Tuesday–Thursday gets the highest eyeballs
Part 2: Days 1–7 (1,000 → 6,000 Stars)
GitHub Trending: the flywheel
On day five, we hit #1 on GitHub Trending All Languages.
This wasn't luck — it was the result of concentrating all distribution into a single 48-hour window. When multiple channels (Reddit, HN, Product Hunt, Twitter) push traffic simultaneously, the star velocity triggers GitHub's Trending algorithm. And once you're on Trending, the algorithm does your marketing for you: thousands of developers browse Trending daily, and even a few hours on the list compounds your momentum.
The practical implication: don't spread your launch across a week. Pick your best 48 hours and hit everything at once.
We appeared on GitHub Trending 28 times between August and December 2022. That's not 28 separate viral moments — it's the compounding effect of each Trending appearance giving us a slightly higher baseline, from which the next spike could push us back onto Trending again.
Product Hunt: not for stars, for legitimacy
Product Hunt typically drives 200–600 GitHub stars from a strong launch. That's not the reason to do it.
The value of Product Hunt is the badge. "#1 on Product Hunt" on your README and your website is social proof that converts skeptical visitors. It also attracts press coverage and newsletter mentions, which compound over time.
We launched on Product Hunt 30+ times over 18 months, winning daily #1 more than 20 times. Each launch reached a new audience that hadn't seen us before. Don't treat PH as a one-shot event.
The "no WeChat" rule, revisited
By day seven, we had 6,000 stars from a distribution that looked genuinely global. At that point, we let the team post about it in Chinese.
The result was a visible spike in Chinese-origin stars — but it layered on top of an already robust organic baseline. Investors could see the shape of our growth and understand the story. The first week of restraint made the second week's celebration credible.
Part 3: Days 8–43 (6,000 → 10,000 Stars)
The shift from pushing to listening
After 6,000 stars, we made a deliberate change: we stopped broadcasting and started talking to users one-on-one.
Every user who had exchanged five or more messages with us got a calendar invite for a 30-minute call. No agenda except "tell us how you're using AFFiNE and what's broken." These conversations were more valuable than any piece of content we could have published.
This is where the "consistency beats virality" principle becomes real. You can't sustain the launch spike. What you can sustain is a cadence of:
- Weekly GitHub releases (signals active development)
- Regular content (one piece per week minimum)
- Responsive issue management (reply within 24 hours)
- Active community engagement
Each of these keeps the baseline star rate slightly elevated and keeps you eligible for the next Trending spike.
Awesome Lists: slow drip, permanent
Getting added to awesome-* repositories is one of the most underrated distribution tactics for open source projects. The traffic is small but permanent — your project stays listed forever, and curated lists often have high domain authority for SEO.
How we approached it:
- Find relevant awesome-* repos (search "awesome [your category]" on GitHub)
- Read contribution guidelines carefully — every list has different rules
- Open an issue before submitting a PR (shows respect for maintainers)
- Be patient: response times range from days to months
One observation from our experience: Chinese awesome-lists had a significantly higher acceptance rate — roughly 75% compared to lower rates for English-language lists. Start with smaller, niche lists before targeting the high-traffic ones.
Part 4: The Credibility Architecture
Why star geography matters to investors
When you're raising money, sophisticated investors (especially US-based VCs) will pull your GitHub data. They're looking for:
- Is star growth organic or artificial?
- Is the community genuinely global?
- Do stars correlate with other signals (forks, issues, PRs, contributors)?
A repo with 10,000 stars where 80% come from one country in a single week is a red flag. A repo with 10,000 stars distributed across 100+ countries over 43 days is a credibility asset.
We built our star distribution intentionally from day one because we knew what investors would look for. Design your growth to tell the right story.
The credibility threshold
| Star Count | What It Signals |
|---|---|
| 0–100 | Unknown — most visitors leave immediately |
| 100–500 | Enough traction to try |
| 500–1,000 | Legitimate project |
| 1,000–5,000 | Established, active community |
| 5,000+ | Developers mention it unprompted |
| 10,000+ | Fundraising asset, press writes about you |
Your near-term goal: cross 1,000 as fast as possible. The conversion rate on everything else — landing pages, cold outreach, press pitches — roughly doubles above this threshold.
Part 5: Common Mistakes
1. Launching with 0 social proof
If your README has 0 stars when you start distribution, you're converting maybe 5% of visitors. Get 100–200 from your network before any public promotion. Then turn on the channels.
2. Spreading your launch over a week
Each channel should fire within a 48-hour window. The Trending algorithm responds to velocity — a spike that looks coordinated is more powerful than trickle across seven days.
3. No follow-up cadence
The launch spike fades within a week. If you don't have a content cadence to maintain baseline growth, you'll flat-line. One piece of content per week is enough: a blog post, a tutorial, a Show HN. The compounding over six months is significant.
4. A README that doesn't convert
Your README is your landing page. It needs:
- A one-sentence value proposition
- A screenshot or GIF above the fold
- A quick-start guide in fewer than five steps
- A visible star CTA ("⭐ If this helps you, a star would mean a lot")
5. Ignoring issues
Open, unanswered issues signal an abandoned project. Developers check this before trying anything. Respond within 24 hours — even if just to acknowledge and set expectations.
The Honest Part
Getting to 60,000 GitHub stars took two and a half years of consistent work. The first 10,000 came fast because we executed the launch well. The next 50,000 came from sustained effort — content, community, releases, press.
Stars are a credibility threshold, not a destination. The real work starts after 1,000.
What I'd tell myself at the beginning: the launch is a sprint, but growth is a marathon. Design your systems for the marathon from week one.
Summary: The Playbook
Week 0 (prep)
- Get 100+ supporters ready (your network)
- Prepare README, landing page, first maker comment
- Choose your 48-hour launch window
Day 1–2 (launch)
- Reddit (r/selfhosted, r/opensource, niche subreddits)
- Hacker News Show HN
- Product Hunt
- Twitter/X thread with real metrics
- All channels in the same 48-hour window
Day 3–7 (sustain)
- Respond to every comment and issue
- Follow up with journalists and newsletter curators
- Check GitHub Insights daily — identify your star sources
Day 8+ (compound)
- Weekly content cadence
- Submit to awesome-* lists
- Start 1v1 user calls after 1,000 stars
- Plan your next launch spike
Free Resources
📘 Open Source Launch Marketing Playbook — 0 to 10k stars, complete SOP
📗 Product Hunt Launch Guide — 30x #1 winner's playbook
📙 B2B Growth Playbook — for OSS with a commercial layer
📚 Related Reading
| Category | Article |
|---|---|
| 📖 | Star Growth Tactics: 10 Proven Ways |
| 📖 | GitHub Stars History: How to Track Growth |
| 📖 | Product Hunt Launch Playbook |
| 📖 | Reddit Marketing Without Getting Banned |
More tools → Growth Tools Directory
Top comments (0)