custom plugin to fetch data from Github for Indiekit
  • JavaScript 85.3%
  • Nunjucks 10.6%
  • CSS 4.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ricardo 2e4450c3ba fix: PR contributions showed one untitled entry
GitHub's public events feed carries a minimal pull_request object - id,
number, url, base, head - with no title and no html_url. Every
contribution built from it rendered as a bare "repo #944" with an empty
title and a dead link.

Worse, the entry was non-empty, so the "no contributions" branch never
ran and the Search API fallback stayed unreachable. For this account the
events feed holds a single action=opened entry while the Search API
returns 95 pull requests with real titles, which is the gap that was on
display.

extractContributions now drops entries it could not fill. All three
callers already fall back on an empty result, so they reach the Search
API by themselves.

Also bounds the dashboard's featured-repo fetch, which had the same
unbounded Promise.all that featured.js carried.
2026-09-06 13:19:19 +02:00
assets refactor: align views to upstream @indiekit/frontend patterns 2026-02-12 17:41:45 +01:00
includes Initial release of @rmdes/indiekit-endpoint-github v1.0.0 2026-01-19 12:43:46 +01:00
lib fix: PR contributions showed one untitled entry 2026-09-06 13:19:19 +02:00
locales feat: add i18n support for 14 languages 2026-02-13 22:33:11 +01:00
tests fix: PR contributions showed one untitled entry 2026-09-06 13:19:19 +02:00
views refactor: align views to upstream @indiekit/frontend patterns 2026-02-12 17:41:45 +01:00
.gitignore Initial release of @rmdes/indiekit-endpoint-github v1.0.0 2026-01-19 12:43:46 +01:00
CLAUDE.md docs: document startup-gate usage in CLAUDE.md 2026-03-28 23:25:00 +01:00
index.js feat: own github-repos block + add /api/repos endpoint (Phase 7c) 2026-06-23 23:59:56 +02:00
package.json fix: PR contributions showed one untitled entry 2026-09-06 13:19:19 +02:00
README.md Initial release of @rmdes/indiekit-endpoint-github v1.0.0 2026-01-19 12:43:46 +01:00
renovate.json chore: enable Renovate with grouped, review-only updates 2026-09-04 16:41:59 +02:00

@rmdes/indiekit-endpoint-github

A GitHub activity endpoint plugin for Indiekit. Display your GitHub commits, stars, contributions, and featured repositories in your Indiekit admin dashboard, with a public JSON API for use in your static site.

Features

  • Featured Projects: Showcase specific repositories with recent commits
  • Recent Commits: Display your latest commits across repositories
  • Starred Repositories: Show repos you've recently starred
  • PRs & Issues: Track your open source contributions
  • Public API: JSON endpoints for integrating with static site generators

Installation

npm install @rmdes/indiekit-endpoint-github

Configuration

Add the plugin to your Indiekit configuration:

export default {
  plugins: [
    "@rmdes/indiekit-endpoint-github",
    // ... other plugins
  ],

  "@rmdes/indiekit-endpoint-github": {
    // Required: Your GitHub username
    username: "your-username",

    // Optional: GitHub personal access token for higher rate limits
    // and access to private repos (set via GITHUB_TOKEN env var)
    token: process.env.GITHUB_TOKEN,

    // Optional: Mount path for the endpoint (default: "/github")
    mountPath: "/github-api",

    // Optional: Cache duration in milliseconds (default: 15 minutes)
    cacheTtl: 900_000,

    // Optional: Limits for each section
    limits: {
      commits: 10,
      stars: 20,
      contributions: 10,
      repos: 10,
    },

    // Optional: Featured repositories to showcase with commits
    featuredRepos: [
      "owner/repo-name",
      "owner/another-repo",
    ],
  },
};

Endpoints

Protected (require authentication)

  • GET /github-api/ - Dashboard view with all sections
  • GET /github-api/commits - Recent commits page
  • GET /github-api/stars - Starred repositories page
  • GET /github-api/contributions - PRs & Issues page
  • GET /github-api/activity - Activity feed page

Public API (no authentication)

  • GET /github-api/api/commits - JSON: Recent commits
  • GET /github-api/api/stars - JSON: Starred repositories
  • GET /github-api/api/activity - JSON: Activity feed
  • GET /github-api/api/featured - JSON: Featured repositories with commits

Using the Public API

The public API endpoints return JSON and can be used by your static site generator (Eleventy, Hugo, etc.) to display GitHub activity on your public site.

Example Eleventy data file:

import EleventyFetch from "@11ty/eleventy-fetch";

export default async function() {
  const url = "https://your-site.com/github-api/api/featured";

  const data = await EleventyFetch(url, {
    duration: "15m",
    type: "json",
  });

  return data.featured || [];
}

Environment Variables

  • GITHUB_TOKEN - Optional GitHub personal access token for:
    • Higher API rate limits (5000/hour vs 60/hour)
    • Access to private repository information

License

MIT