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.
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.
- Short slugs --
hypercommit.com/linuxinstead ofgithub.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
Dkey - 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
| 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 |
git clone https://github.com/alexisbouchez/hypercommit.git
cd hypercommit
bun installcp .env.example apps/web/.envOpen 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:3000GitHub 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:
- Go to github.com/settings/tokens and click Generate new token (classic).
- Give it a descriptive name (e.g.
hypercommit). - Select the
public_reposcope (read-only access to public repository data is enough). - Click Generate token and copy the value into
GITHUB_TOKEN.
No extra scopes are needed — Hypercommit only reads public repository metadata.
docker compose up -dcd apps/web
bunx drizzle-kit pushcd ../..
bun devThe app is now running at http://localhost:3000.
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
Let your users know your project has a Hypercommit page by adding a badge to your README.md:
[](https://hypercommit.com/your-slug)Replace your-slug with your actual slug. Example for a project at hypercommit.com/linux:
[](https://hypercommit.com/linux)Which renders as:
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 lintAll contributions must be compatible with the AGPL-3.0 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.
