Skip to content

josephsintum/zedext.dev

Repository files navigation

ZedExt

A fast, modern extension browser for the Zed editor — with rich READMEs, GitHub stats, and powerful search.

Why

Zed's official extension page at zed.dev/extensions shows only a name, one-line description, and download count. No README, no GitHub stats, no version history. ZedExt fills that gap.

Features

  • Rich extension pages — full README with syntax highlighting and resolved images
  • GitHub context — stars, license, last commit, forks, open issues
  • Better search — typo-tolerant, faceted search with category filters and sort options (powered by Algolia)
  • Version history — all published versions with dates
  • SEO-friendly — every extension has a unique, indexable page with proper meta/OG tags
  • Dark mode — system-aware with manual toggle

Architecture

No database. All data is fetched on-demand from the Zed API and GitHub API, then cached in memory. Search is powered by Algolia, with the index refreshed daily via Vercel cron hitting a protected /api/sync route.

Browser ──► Algolia        (client-side search)
Server  ──► Zed API        (extension metadata + versions)
        ──► GitHub API     (stars, README, license)
        ──► In-memory cache (1h metadata, 24h README)
Cron    ──► /api/sync      (Vercel cron → Algolia refresh)

Stack

Getting started

# Install dependencies
pnpm install

# Copy env vars
cp .env.example .env

# Start dev server
pnpm dev

# Sync extensions to Algolia (requires GITHUB_TOKEN + ALGOLIA_ADMIN_KEY)
pnpm sync

Environment variables

GITHUB_TOKEN=ghp_...                    # GitHub API (server + sync)
PUBLIC_ALGOLIA_APP_ID=XXXXXXXXXX        # Algolia app ID (public)
PUBLIC_ALGOLIA_SEARCH_KEY=xxxxxxxxxxxx  # Algolia search key (public, read-only)
ALGOLIA_ADMIN_KEY=xxxxxxxxxxxx          # Algolia admin key (sync only)
CRON_SECRET=replace-with-long-random    # Vercel cron bearer token
PUBLIC_SITE_URL=https://zedext.dev      # Site URL

Vercel cron

vercel.json schedules GET /api/sync once daily at midnight UTC using 0 0 * * *. The route checks Authorization: Bearer $CRON_SECRET and then runs the same shared sync logic as pnpm sync, so manual and scheduled syncs stay identical.

  • This schedule works on the Vercel Hobby plan (free).
  • The sync route is configured as a long-running Node function (maxDuration = 300) for Vercel cron use.
  • You can still refresh manually at any time with pnpm sync, or by calling /api/sync with the same bearer token.

Contributing

Contributions, issues, and feature requests are welcome. See the issues page.

License

MIT

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors