starpulse
v1.0.0
Published
Track GitHub repo star growth with notifications, analytics, and reports. Zero dependencies.
Maintainers
Readme
⭐ StarPulse
GitHub Star Growth Tracker — Track star counts, detect milestones, analyze growth trends, and get notifications. Zero dependencies.
Why StarPulse?
Every open-source maintainer wants to know: "How's my repo growing?" StarPulse gives you:
- 📊 Growth analytics — Track daily/weekly/monthly star growth rates
- 🎯 Milestone detection — Get notified when you hit 100, 1K, 10K stars
- 📈 Star predictions — Forecast future star counts using linear regression
- 🔔 Discord & webhook notifications — Celebrate milestones in real-time
- 📋 Reports — Generate text or JSON growth reports
- 📤 CSV/JSON export — Export data for further analysis
- 🪶 Zero dependencies — Uses only Node.js built-in modules
Quick Start
# Install globally
npm install -g starpulse
# Or use with npx (no install needed)
npx starpulse add facebook/react
# Start tracking a repo
starpulse add facebook/react
# ✅ Now tracking facebook/react
# ⭐ 224,000 stars | 🍴 46,000 forks
# Fetch latest data
starpulse track facebook/react
# ⭐ facebook/react: 224,100 stars (↑+100)
# Track all your repos at once
starpulse track-all
# View growth report
starpulse report facebook/reactReport Example
═══════════════════════════════════════
⭐ StarPulse Report: facebook/react
═══════════════════════════════════════
Current Stars: 224,100
Growth: ↑ +100 (+0.04%)
Daily Rate: 3.5 stars/day
Total Growth: +500 (+0.22%)
Period: 14d 6h
─── Trend ───
2025-01-10: 223500 → 223700 (+200) ████
2025-01-11: 223700 → 223800 (+100) ██
2025-01-12: 223800 → 223900 (+100) ██
2025-01-13: 223900 → 223950 (+50) █
2025-01-14: 223950 → 224050 (+100) ██
2025-01-15: 224050 → 224100 (+50) █
─── Prediction ───
In 30 days: ~224,205 stars
Daily growth rate: 3.5 stars/day
Confidence: Good
═══════════════════════════════════════CLI Commands
| Command | Description |
|---------|-------------|
| starpulse add <owner/repo> | Start tracking a repository |
| starpulse remove <owner/repo> | Stop tracking a repository |
| starpulse track <owner/repo> | Fetch latest data for a repo |
| starpulse track-all | Fetch latest data for all tracked repos |
| starpulse list | List all tracked repositories |
| starpulse report <owner/repo> [text\|json] | Show growth report |
| starpulse export <owner/repo> [csv\|json] | Export tracking data |
| starpulse config [key] [value] | Get/set configuration |
| starpulse rate-limit | Check GitHub API rate limit |
Configuration
GitHub Token (Recommended)
Without a token, you're limited to 60 API requests/hour. With a token: 5,000/hour.
# Set via CLI
starpulse config token ghp_your_token_here
# Or via environment variable
export GITHUB_TOKEN=ghp_your_token_hereNotifications
# Discord webhook
starpulse config notifications.discord https://discord.com/api/webhooks/...
# Generic webhook
starpulse config notifications.webhook https://your-server.com/webhookCustom Milestones
Edit ~/.starpulse/config.json:
{
"milestones": [50, 100, 250, 500, 1000, 2500, 5000, 10000, 50000, 100000]
}Programmatic API
const { StarTracker } = require('starpulse');
const tracker = new StarTracker({
token: 'ghp_your_token', // Optional GitHub token
discordWebhook: 'https://...', // Optional Discord webhook
dataDir: '/custom/path' // Optional custom data directory
});
// Add a repo
const info = await tracker.addRepo('facebook', 'react');
console.log(`${info.stars} stars`);
// Track (fetch latest + check milestones)
const result = await tracker.track('facebook', 'react');
if (result.milestone) {
console.log(`🎉 Hit ${result.milestone} stars!`);
}
// Get growth report
const report = tracker.getReport('facebook', 'react', 'text');
console.log(report);
// Export data
const csv = tracker.export('facebook', 'react', 'csv');
// List tracked repos
const repos = tracker.list();
repos.forEach(r => console.log(`${r.repo}: ${r.stars} stars`));Automation with Cron
Set up automatic tracking every hour:
# Add to crontab (crontab -e)
0 * * * * /usr/local/bin/starpulse track-all >> ~/.starpulse/cron.log 2>&1Or use with GitHub Actions:
name: Star Tracker
on:
schedule:
- cron: '0 */6 * * *' # Every 6 hours
jobs:
track:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install -g starpulse
- run: starpulse config token ${{ secrets.GITHUB_TOKEN }}
- run: starpulse add owner/repo
- run: starpulse track-all
- run: starpulse report owner/repo json >> reports/$(date +%Y%m%d).json💰 Monetization Strategy
StarPulse is free and open-source with a clear upgrade path:
Free Tier (npm package)
- ✅ Track up to 10 repos
- ✅ Basic growth reports
- ✅ CSV/JSON export
- ✅ Discord webhook notifications
Pro Tier ($5/month or $49/year)
- 🔓 Unlimited repos
- 📧 Email notifications (milestones, daily/weekly digests)
- 📊 Advanced analytics (comparison, benchmarks vs similar repos)
- 🤖 Auto-tracking via cloud service (no cron needed)
- 🎨 Custom dashboards (web UI)
- 📱 Slack & Microsoft Teams notifications
Business Tier ($19/month or $189/year)
- 👥 Team sharing & org-level tracking
- 📈 Portfolio analytics (track all org repos)
- 🔗 API access for integrations
- 📋 Scheduled PDF reports
- 🏷️ White-label options
Revenue Projections
| Scenario | Users | Pro Conversion | Monthly Revenue | |----------|-------|---------------|-----------------| | Conservative | 500 | 5% | $125 | | Moderate | 2,000 | 8% | $800 | | Optimistic | 10,000 | 10% | $5,000 |
Why This Works
- Real pain point — No simple, focused star tracking tool exists
- Developer audience — Willing to pay for dev tools ($5/mo is nothing)
- Viral potential — Open source users share with other maintainers
- Sticky product — Historical data makes switching costly
- Natural upgrade path — Free users hit limits and upgrade
Development
# Run tests
npm test
# Run CLI locally
node bin/starpulse.js add facebook/reactArchitecture
starpulse/
├── src/
│ ├── index.js # Main exports
│ ├── tracker.js # Core tracker orchestrator
│ ├── github.js # GitHub API client (native https)
│ ├── storage.js # Local JSON storage
│ ├── notifier.js # Discord/webhook notifications
│ ├── reporter.js # Analytics & report generation
│ └── cli.js # CLI interface
├── bin/
│ └── starpulse.js # CLI entry point
├── test/
│ └── test.js # Test suite (14 tests)
├── package.json
├── README.md
└── LICENSELicense
MIT © Mike Wang
