惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
J
Java Code Geeks
Vercel News
Vercel News
A
About on SuperTechFans
G
Google Developers Blog
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
博客园 - 司徒正美
S
SegmentFault 最新的问题
D
DataBreaches.Net
博客园_首页
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
量子位
雷峰网
雷峰网
IT之家
IT之家
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
H
Help Net Security
宝玉的分享
宝玉的分享
博客园 - 叶小钗

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
The Story of GoBadge: How It All Started
CinfiniteDev · 2026-05-13 · via DEV Community

A journey from a simple idea to a badge service for modules


It Started with a Simple Problem (and a Wearing Out F5 Key)

"Why do I need a CLI tool just for live reload?"

If you're a Go developer, you know the drill. You make a change. You compile. You run. You repeat. Your F5 key is slowly giving up.

Existing solutions? They're CLI tools. External processes. Version mismatches. Config files. Zombie processes. "It works on my machine."

That's when GoWatcher was born — a library, not a CLI. Just import it, call gowatcher.Watch("."), and your app reloads itself. No external tools. No version chaos. No separate processes to babysit.

But here's the thing: once you build something useful, you want the stats.


The Second Problem: "How Many Projects Use My Module?"

You made a module , good , people are using it , good , BUT how many ?How do you check your module is creating impact ?

For npm packages, you look at downloads. For crates.io, you see downloads. For Go? There's nothing.

Shields.io has badges for everything — except Go modules.

That's when the lightbulb clicked: someone should build this.


Building the Badges

SO built the badges . get the data .. Done
Next: making them look like real badges. Done

SVG was the answer. Dynamic SVGs that:

  • Have the correct width based on text length
  • Use clipPath for rounded corners
  • Use linearGradient for that signature look
  • Cache for 1 hour (to avoid rate limits)

This First Version

The first working version had three endpoints:

/api/imports/{owner}/{module}
/api/importedby/{owner}/{module}
/api/stars/{owner}/{repo}

Enter fullscreen mode Exit fullscreen mode

Drop them into markdown:

![Imported By](https://gobadge.vercel.app/api/importedby/cinfinit/gowatcher)
![Stars](https://gobadge.vercel.app/api/stars/cinfinit/gowatcher)

Enter fullscreen mode Exit fullscreen mode

And it shows live data. No approximations. Just real numbers.


Why This Matters

Go is the second-largest ecosystem on GitHub. Millions of developers use it daily. But there's no easy way to show package impact.

npm has 30B+ downloads. Go has... nothing visible.

GoBadge fixes that. Now Go modules can show:

  • 📦 How many dependencies your module has
  • 🔗 How many projects depend on you

And the best part? GoWatcher was the first project to use these badges:

[![Go Version](https://img.shields.io/github/go-mod/go-version/cinfinit/gowatcher)](https://github.com/cinfinit/gowatcher)
[![Imported By](https://gobadge.vercel.app/api/importedby/cinfinit/gowatcher)](https://gobadge.vercel.app/)

Enter fullscreen mode Exit fullscreen mode


Lessons Learned

  1. The obvious source isn't always the right one — Go proxy had nothing useful
  2. Data is often hidden in plain sight
  3. APIs change, HTML break — Caching is essential
  4. SVG gives you full control — No dependencies, just clean rendering

Requirements

Note: Your Go module must be registered at https://pkg.go.dev/ for the Imports and Imported By badges to work.


Try It Out

![Imported By](https://gobadge.vercel.app/api/importedby/gin-gonic/gin)
![Stars](https://gobadge.vercel.app/api/stars/gin-gonic/gin)

Enter fullscreen mode Exit fullscreen mode

Check out these live examples:

And of course, the project that started it all:



GoBadge — Because every module deserves to show its impact.