Redesigned 2026-09-09. Every published project has an embeddable badge. It states what Dawnscan verified and nothing else: activity status, last ship, Still Building when it applies, and any distinction the Dawnscan team awarded. Never a score, a rank, a price, or a prediction.
The image
GET /api/badge/<slug> returns a self-contained SVG (the Dawnscan mark is inlined) for READMEs and
sites that cannot frame a page. Options: ?theme=dark, ?style=pill. Cached like the share
images (five minutes in a browser, an hour in a shared cache). An unpublished project is a 404.
[](https://dawnscan.fun/project/chit)
/badge/<slug> shows the badge in both themes and hands out the snippets; it is the one page
any site may frame.
Awards
The team can add one distinction of each kind to a project from Console → Badges
(/admin/badges, admins only, permission badge.manage):
| Kind | Meaning |
|---|---|
| Dawnscan team pick | Chosen by the Dawnscan team. Not a ranking, never paid. |
| Builder of the week | The most consistent verified shipping Dawnscan saw this week. |
| Ship of the week | One release the team thought worth pointing at this week. |
An award lasts 7 days, 30 days, or until removed. Re-awarding the same kind replaces the live
one. Awards show as a lime chip on the project page and on the badge, always with the words
"Awarded by the Dawnscan team". Only published projects can carry one. Every award and removal is in
audit_log (badge.awarded, badge.revoked).
Neutrality
project_badges is read by the badge, the project page header and the console, and by nothing
else. packages/domain/src/hey/neutrality.test.ts fails the suite if a scoring, ranking,
discovery or refresh module, or a public ranking page, ever references it.