← Course leaderboards

How the rankings work

Daily = 1 completed day. Weekly = 7 days. Monthly = 30 days. Calendar metrics use UTC dates; each app shows its last sync.

Shipping consistency

One active day means a human commit touched authored source files. Generated files, dependency files and bots do not earn days. Lines of code are context, not a score.

Merged pull requests

Human-authored merged PRs, counted by merge date. Closed, unmerged work and bots are excluded. An incomplete repository scan is not ranked as zero.

Traffic

Clarity ranks the latest 24-hour session reading. Its day/week/month charts show saved daily snapshots, with gaps before collection started. Overlapping exports are never summed. PostHog and Vercel page views have separate boards.

Google Search

Clicks come from Search Console, not total website traffic. The window ends four days behind today to allow reporting to settle. The selected 1, 7 or 30 completed days are compared with the preceding equal period.

Revenue and customers

Net revenue is payments minus refunds and chargebacks, converted to USD. Fees are not deducted, so this is not profit. Test transactions are excluded. Paying customers use distinct provider references; one person across providers may have separate references. PhonePe setups can be submitted for review but are not automatically imported.

Growth and eligibility

Percentage growth = (current − previous) ÷ previous × 100. The previous value must be positive. No infinite-growth ranks. Only public, unhidden course apps with live, current, completed source imports can rank. Missing or stale data stays unavailable, never verified zero.

Privacy

Rankings and public app aggregate charts are public. Code-quality findings and private repository details are visible only to the team and authorized instructors. Keys are encrypted; disconnecting deletes the saved credential.

Domain Rating

Independent app domains are checked daily with the free Ahrefs public API. App-store links, shared hosting, platform pages and shortened links stay unranked because their score can belong to the platform. Submit your app’s own website domain to qualify. Highest DR uses the latest successful reading; weekly and monthly gains are absolute DR-point changes against saved readings seven and thirty days earlier. Baselines can be up to two days earlier when a check is missed. Domain scores do not verify ownership. Missing data and missing history stay unranked.

Sitemap pages and blog posts

Shipped checks public robots.txt and sitemap files every day, following same-site sitemap indexes and counting unique URL entries. These are sitemap-listed pages, not a count of every live page or Google-indexed pages. Blog posts are estimated from /blog/, /blogs/, /posts/, /articles/ or /journal/ article URLs, or specifically named post sitemaps. Blog indexes, tags, categories, authors, pagination and assets do not count as posts. Each app links to its counted URLs and classification reasons. Only fresh, complete readings rank; missing sitemaps stay unknown and incomplete counts are marked as lower bounds. Private and anonymous apps stay off these public views.

How to join the content rankings

Use your app’s own website domain in My submission. Ask your app builder to generate /sitemap.xml with all public pages and blog-post URLs, and add a Sitemap: https://your-domain/sitemap.xml line to /robots.txt. The files must be publicly readable without a login. If robots.txt limits crawlers, allow Shipped-Content to read the sitemap files. No Search Console connection or analytics key is needed. Shipped checks automatically; use View counted URLs to see the last check and any next step.

Student setup guides →