The professional, open-source Link-in-Bio platform built for creators who value design and performance.
Learn more »
Discussions
·
Website
·
Issues
The professional, open-source Link-in-Bio platform built for creators who value design and performance.
| 🚧 | Project Under Active Development Link is currently in Beta. Features and schemas may change before v1.0. |
|---|
Most link-in-bio tools are restrictive and expensive. Link gives you the freedom to build a mini-website that truly represents your brand.
- 🔓 Open Source & Self-Hostable: You own your data. Host it yourself for free, forever.
- 🎨 Pixel-Perfect Control: Customize profiles with wallpapers, custom fonts, and granular styling options.
- ⚡ Blazing Fast: Powered by TanStack Start and React 19 for instant page loads.
- 🛡️ Type-Safety: End-to-end type safety with tRPC and Drizzle ORM.
- 🧱 Block-Based Builder: Go beyond simple buttons. Add text, headers, and rich media blocks.
Our Vision: Link is designed to be a sustainable open-source project. While the core software is free to self-host, we are working on a managed Cloud Version (with a free tier and premium features) for those who prefer a hassle-free experience.
Built with the bleeding edge of the React ecosystem:
- Framework: TanStack Start (React 19)
- Styling: Tailwind CSS v4 & Base UI
- Database: Drizzle ORM & Neon
- API: tRPC
- Auth: Better Auth
- State: TanStack Query
- Storage: Cloudflare R2 (S3 Compatible)
- Email: Resend
Follow these steps to get your own instance running locally.
- Bun (v1.0 or later)
- PostgreSQL database
- Cloudflare R2 Bucket
- Resend API Key
-
Clone the repository
git clone https://github.com/yourusername/link.git cd link -
Install dependencies
bun install
-
Configure Environment Create a
.envfile in the root directory and add your credentials:# Database (Neon/Postgres) DATABASE_URL="postgresql://user:password@host/dbname?sslmode=require" # Auth (Better Auth & Google) BETTER_AUTH_SECRET="your_generated_secret" BETTER_AUTH_URL="http://localhost:3000" GOOGLE_CLIENT_ID="..." GOOGLE_CLIENT_SECRET="..." # Storage (Cloudflare R2) R2_ACCOUNT_ID="..." R2_ACCESS_KEY_ID="..." R2_SECRET_ACCESS_KEY="..." R2_BUCKET_NAME="..." R2_PUBLIC_URL="https://pub-..." # Email (Resend) RESEND_API_KEY="re_..."
-
Initialize Database Push the schema to your database.
bun run db:push
-
Start Development Server
bun run dev
Visit
http://localhost:3000to see your app in action.
| Command | Description |
|---|---|
bun run dev |
Start the development server |
bun run build |
Build the application for production |
bun run db:push |
Push schema changes to the database |
bun run db:studio |
Open Drizzle Studio to manage data |
bun run lint |
Run ESLint |
Contributions are welcome! This project is open-source and we value community feedback. Please read our Contributing Guide (coming soon) to get started.
MIT © 2026 Link