Skip to content

Latest commit

 

History

History
189 lines (127 loc) · 5.77 KB

File metadata and controls

189 lines (127 loc) · 5.77 KB

Hypercommit

Hypercommit

Hypercommit GitHub Stars License: AGPL v3 Discord

A linktree for GitHub repositories. Give any open source project a clean, claimable landing page with custom links, auto-fetched GitHub metadata, and a short memorable URL.

Live at hypercommit.com.


What it does

You add a repository, pick a short slug, and get a public page at hypercommit.com/:slug. That page automatically pulls the repo description, star count, language, license, and topics from GitHub. Then you add whatever links you want: social profiles, docs, community, sponsors.


Features

  • Short slugs -- hypercommit.com/linux instead of github.com/torvalds/linux
  • Auto-fetched metadata -- description, stars, language, license, topics pulled live from GitHub
  • Custom links -- add links for X, Bluesky, LinkedIn, Discord, website, or any custom label
  • Link icons -- social platform icons auto-detected from URL
  • Dark mode -- toggle with the D key
  • Admin panel -- role-based access for platform moderation
  • Self-hostable -- one Docker Compose file gets the database running; everything else is a standard Next.js deploy

Stack

Layer Technology
Framework Next.js 16 (App Router)
Runtime Bun
Database PostgreSQL (Drizzle ORM)
Auth Better Auth with GitHub OAuth
Styling Tailwind CSS v4
Monorepo Turborepo

Self-hosting

Prerequisites

  • Bun >= 1.3
  • Docker (for PostgreSQL)
  • A GitHub OAuth app

1. Clone and install

git clone https://github.com/alexisbouchez/hypercommit.git
cd hypercommit
bun install

2. Configure environment

cp .env.example apps/web/.env

Open apps/web/.env and fill in every value:

DATABASE_URL=postgresql://hypercommit:hypercommit@localhost:5432/hypercommit

BETTER_AUTH_SECRET=         # generate with: openssl rand -hex 32
BETTER_AUTH_URL=http://localhost:3000

GITHUB_CLIENT_ID=           # from github.com/settings/developers
GITHUB_CLIENT_SECRET=

GITHUB_TOKEN=               # optional but recommended — see below

NEXT_PUBLIC_APP_URL=http://localhost:3000

GitHub OAuth app: go to github.com/settings/developers, click New OAuth App, set the homepage URL to your app URL, and set the callback URL to <your-url>/api/auth/callback/github.

GitHub token (recommended): without a token, GitHub's API is limited to 60 requests/hour per IP. With a token you get 5 000 requests/hour. To create one:

  1. Go to github.com/settings/tokens and click Generate new token (classic).
  2. Give it a descriptive name (e.g. hypercommit).
  3. Select the public_repo scope (read-only access to public repository data is enough).
  4. Click Generate token and copy the value into GITHUB_TOKEN.

No extra scopes are needed — Hypercommit only reads public repository metadata.

3. Start the database

docker compose up -d

4. Run migrations

cd apps/web
bunx drizzle-kit push

5. Start the dev server

cd ../..
bun dev

The app is now running at http://localhost:3000.


Project structure

hypercommit/
├── apps/
│   └── web/                  # Next.js application
│       ├── app/
│       │   ├── page.tsx       # Home: repo list and add form
│       │   ├── [slug]/        # Public repo page + admin + claim
│       │   └── api/           # Auth and repository API routes
│       ├── lib/
│       │   ├── schema.ts      # Drizzle schema
│       │   ├── db.ts          # Database client
│       │   └── auth.ts        # Better Auth config
│       └── drizzle/           # SQL migrations
└── packages/
    └── ui/                    # Shared component library

Add a badge to your project

Let your users know your project has a Hypercommit page by adding a badge to your README.md:

[![Hypercommit](https://img.shields.io/badge/Hypercommit-DB2475)](https://hypercommit.com/your-slug)

Replace your-slug with your actual slug. Example for a project at hypercommit.com/linux:

[![Hypercommit](https://img.shields.io/badge/Hypercommit-DB2475)](https://hypercommit.com/linux)

Which renders as:

Hypercommit


Contributing

Pull requests are welcome. For significant changes, open an issue first to discuss what you want to change.

# run type checking
bun typecheck

# run linting
bun lint

All contributions must be compatible with the AGPL-3.0 license.


License

GNU Affero General Public License v3.0

This means: you can use, modify, and self-host Hypercommit freely. If you run a modified version as a network service (like a SaaS offering), you must release your source code under the same license.


Star History

Star History Chart