Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions scripts/generate-seo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,16 @@ async function generateSeo() {
<meta property="og:title" content="${pageTitle}">
<meta property="og:description" content="${desc}">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="${pageTitle}">
<meta name="twitter:description" content="${desc}">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
3 changes: 3 additions & 0 deletions site/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,9 @@ function updateStatsAndPills(data) {
setElText("pill-count-cloud", cloudCount);
setElText("pill-count-perks", perksCount);
setElText("pill-count-contributors", contributorsCount);

// Hero CTA count
setElText("hero-total-count", total);
}

function setElText(id, val) {
Expand Down
13 changes: 10 additions & 3 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DevShelf — The Crowdsourced Zero-Paywall Developer Directory</title>
<meta name="description" content="Discover 512 verified developer tools, open-source GitHub repositories, free public APIs, 1-click cloud boilerplates, and developer perks with zero paywalls.">
<meta name="description" content="Discover 500+ verified developer tools, open-source GitHub repositories, free public APIs, 1-click cloud boilerplates, and developer perks with zero paywalls.">
<link rel="canonical" href="https://devshelf.ritualdev.in/">

<!-- OpenGraph / Social Meta -->
Expand All @@ -13,9 +13,16 @@
<meta property="og:title" content="DevShelf — Zero-Paywall Developer Ecosystem">
<meta property="og:description" content="Discover hand-curated developer tools, verified open-source repos, free APIs, and startup perks with zero credit-card traps.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="DevShelf — 500+ free developer tools, APIs, and boilerplates with zero paywalls">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="DevShelf — The Crowdsourced Developer Directory">
<meta name="twitter:description" content="Curated developer tools, GitHub repositories, free APIs & perks. 100% free tiers, automated health checks.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">


<!-- Preconnect & Fonts with display=swap -->
<link rel="preconnect" href="https://fonts.googleapis.com">
Expand Down Expand Up @@ -125,7 +132,7 @@ <h1 class="text-4xl sm:text-6xl font-extrabold tracking-tight text-white mb-5 le
<span class="liquid-metal-icon-pill">
<span class="text-sm">✨</span>
</span>
<span class="liquid-metal-text text-xs sm:text-sm">Explore 512 Curated Resources</span>
<span class="liquid-metal-text text-xs sm:text-sm">Explore <span id="hero-total-count">500+</span> Curated Resources</span>
<span class="liquid-metal-arrow text-cyan-400">↓</span>
</div>
</a>
Expand Down Expand Up @@ -289,7 +296,7 @@ <h3 class="text-xs font-extrabold uppercase tracking-wider text-purple-200 font-
<div class="flex items-center flex-wrap gap-2 text-xs font-bold mb-3" id="category-pills">
<button data-category="all" class="category-pill active px-3.5 py-2 rounded-xl transition flex items-center space-x-1.5">
<span>All Items</span>
<span class="px-1.5 py-0.5 rounded-full text-[10px] bg-purple-900 text-purple-200 font-mono" id="pill-count-all">512</span>
<span class="px-1.5 py-0.5 rounded-full text-[10px] bg-purple-900 text-purple-200 font-mono" id="pill-count-all">…</span>
</button>
<button data-category="repo" class="category-pill px-3.5 py-2 rounded-xl transition flex items-center space-x-1.5">
<span>🐙 GitHub Repos</span>
Expand Down
Binary file added site/og-image.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions site/tools/1password-for-open-source.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="1Password for Open Source - Free Developer Tool | DevShelf">
<meta property="og:description" content="Free 1Password Teams accounts for open-source project maintainers to securely share secrets and API tokens.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="1Password for Open Source - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Free 1Password Teams accounts for open-source project maintainers to securely share secrets and API tokens.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/7timer.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="7Timer! - Free Developer Tool | DevShelf">
<meta property="og:description" content="Completely free meteorological forecasting web service based on NOAA GFS numerical models with zero auth.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="7Timer! - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Completely free meteorological forecasting web service based on NOAA GFS numerical models with zero auth.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/act.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="act - Free Developer Tool | DevShelf">
<meta property="og:description" content="Run your GitHub Actions locally inside Docker containers for fast, offline CI/CD pipeline iteration.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="act - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Run your GitHub Actions locally inside Docker containers for fast, offline CI/CD pipeline iteration.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/adonisjs-starter.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="AdonisJS Starter - Free Developer Tool | DevShelf">
<meta property="og:description" content="Fully featured Node.js web framework with built-in ORM, auth, routing, and template engine, Laravel-like feel.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="AdonisJS Starter - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Fully featured Node.js web framework with built-in ORM, auth, routing, and template engine, Laravel-like feel.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/advice-slip-api.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Advice Slip API - Free Developer Tool | DevShelf">
<meta property="og:description" content="Simple API providing random pieces of advice and motivational suggestions with zero auth.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Advice Slip API - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Simple API providing random pieces of advice and motivational suggestions with zero auth.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/affine.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Affine - Free Developer Tool | DevShelf">
<meta property="og:description" content="Next-gen collaborative knowledge base for tasks, whiteboards, and multi-modal documents.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Affine - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Next-gen collaborative knowledge base for tasks, whiteboards, and multi-modal documents.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/agent-browser.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="agent-browser - Free Developer Tool | DevShelf">
<meta property="og:description" content="Open-source browser automation CLI for AI agents, with a fast Rust core and Node.js fallback for navigation, forms, screenshots, and structured page interaction.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="agent-browser - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Open-source browser automation CLI for AI agents, with a fast Rust core and Node.js fallback for navigation, forms, screenshots, and structured page interaction.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/agent-qa.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Agent QA - Free Developer Tool | DevShelf">
<meta property="og:description" content="Self-improving QA agent for natural-language web and mobile tests, with a local dashboard and CLI.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Agent QA - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Self-improving QA agent for natural-language web and mobile tests, with a local dashboard and CLI.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/agify-api.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Agify API - Free Developer Tool | DevShelf">
<meta property="og:description" content="Predict age from first names based on statistical demographic modeling.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Agify API - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Predict age from first names based on statistical demographic modeling.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/agifyio.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Agify.io - Free Developer Tool | DevShelf">
<meta property="og:description" content="Predict someone&#039;s age from their first name based on international census records and demographic modeling.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Agify.io - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Predict someone&#039;s age from their first name based on international census records and demographic modeling.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/aider.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Aider - Free Developer Tool | DevShelf">
<meta property="og:description" content="AI pair programming in your terminal: edit code in local git repos with Claude 3.5 Sonnet, GPT-4o, or local LLMs with auto-commits.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Aider - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="AI pair programming in your terminal: edit code in local git repos with Claude 3.5 Sonnet, GPT-4o, or local LLMs with auto-commits.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/aiven-free-tier.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Aiven Free Tier - Free Developer Tool | DevShelf">
<meta property="og:description" content="Managed cloud data platform offering permanent free tiers for PostgreSQL, MySQL, and OpenSearch.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Aiven Free Tier - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Managed cloud data platform offering permanent free tiers for PostgreSQL, MySQL, and OpenSearch.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/anilist-graphql-api.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="AniList GraphQL API - Free Developer Tool | DevShelf">
<meta property="og:description" content="Comprehensive GraphQL API for discovering and tracking anime and manga with rich media relations.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="AniList GraphQL API - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Comprehensive GraphQL API for discovering and tracking anime and manga with rich media relations.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/annoy.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="Annoy - Free Developer Tool | DevShelf">
<meta property="og:description" content="Spotify&#039;s C++ library with Python bindings to search for points in space that are close to a given query point.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="Annoy - Free Developer Tool | DevShelf">
<meta name="twitter:description" content="Spotify&#039;s C++ library with Python bindings to search for points in space that are close to a given query point.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
5 changes: 5 additions & 0 deletions site/tools/anythingllm.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,16 @@
<meta property="og:title" content="AnythingLLM - Free Open Source Alternative to Chatbase / TypingMind | DevShelf">
<meta property="og:description" content="The all-in-one Desktop &amp; Docker AI application with full RAG pipeline, multi-agent workspaces, and complete privacy.">
<meta property="og:site_name" content="DevShelf">
<meta property="og:image" content="https://devshelf.ritualdev.in/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@RitualDevLab">
<meta name="twitter:title" content="AnythingLLM - Free Open Source Alternative to Chatbase / TypingMind | DevShelf">
<meta name="twitter:description" content="The all-in-one Desktop &amp; Docker AI application with full RAG pipeline, multi-agent workspaces, and complete privacy.">
<meta name="twitter:image" content="https://devshelf.ritualdev.in/og-image.jpg">

<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
Expand Down
Loading
Loading