I Ditched Linktree and Built My Own, for Free
Fed up with Linktree watermarks and paywalled customization, I built my own personal link page. Open source, self-hosted, 15 themes, and it takes about five minutes to set up.
You share links everywhere. Instagram bio. Twitter/X. Email signature. GitHub profile. Business card. There is usually one problem: every tool that helps you manage that single landing page either puts their logo on your page, locks the good stuff behind a subscription, or just does not feel like yours.
That is why I built @germondai/links, which I use at links.germondai.com.
What it is
A personal link page. One URL, all your links, your brand, zero watermarks. You fork the project, edit a single TypeScript file, and deploy. No account to create, no dashboard to log into, no monthly fee.
const config: LinksConfig = {
profile: {
name: 'Germond',
username: 'germondai',
bio: 'Aspiring Full-Stack Web Developer',
avatar: 'https://github.com/germondai.png',
},
links: [
{ title: 'Portfolio', url: 'https://germondai.com', icon: 'icon:github:mono:fff' },
{ title: 'GitHub', url: 'https://github.com/germondai', icon: 'icon:github:mono:fff' },
],
}
That is genuinely the whole configuration. TypeScript catches typos instantly: misspell a theme name and it is a build error, not a mystery at runtime.
Themes and visual effects
There are 15 built-in themes, each with its own gradient, accent color, and animated effects. The one I use, phantom, is a deep dark indigo palette. Other options range from warm amber and tropical emerald to cyberpunk cyan and blood crimson.
Behind every page, three CSS-only effects run: slow gradient beam sweeps, floating particle dots, and a click-triggered lens flare burst. All of them respect the prefers-reduced-motion accessibility setting and can be toggled off individually in config.
Self-hosted fonts, no Google tracking
Most link pages load fonts from Google CDN. That means a DNS lookup, a network request, and your visitor’s IP address going to Google every single time someone opens your page.
This project downloads your chosen font to your own server at build time. Visitors get fast load times, and their data stays between you and them. There are 41 fonts to choose from, from Inter and Geist to JetBrains Mono and Playfair Display.
The dev panel
While you are setting things up locally, a floating gear icon opens a live config panel directly in the browser. Switch themes, change fonts, reorder links, toggle effects, all without touching a file. When you are happy, the panel exports the TypeScript snippet you paste into your config.
Deploying
git clone https://github.com/germondai/links
cd links
cp links.config.example.ts links.config.ts
bun dev
# production
docker build -t my-links .
docker run -p 3000:3000 my-links
Vercel and Netlify both work without any extra setup. For self-hosting, Docker on a small VPS with Caddy in front is what I use.
Source on GitHub under AGPL-3.0.