linktree, but better.
A developer-first profile page generator with built-in blogging, product showcase, and deep analytics. Built for speed, customization, and seamless user experience.
- Wildcard Subdomains: Every user gets their own
username.plob.devprofile. - Link Management: Add, reorder, and track clicks on your links.
- Micro-Blogging: Write and publish markdown blogs directly on your subdomain (
username.plob.dev/blog/slug). - Product Showcase: Display products with images and prices.
- Deep Analytics: Track views, clicks, and visitor stats (powered by Vercel Analytics).
- Customizable Layouts: Toggle between horizontal/vertical links, enable/disable sections.
- Keyboard First: Navigate the entire dashboard with
g+keyshortcuts. - Secure Auth: Powered by Lucia Auth + Neon (PostgreSQL).
- Fast: Built on Next.js 14 App Router and Edge Middleware.
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Database: Neon (Serverless PostgreSQL)
- ORM: Drizzle ORM
- Auth: Lucia Auth
- Styling: TailwindCSS
- Deployment: Vercel
- Analytics: Vercel Analytics
- Node.js 18+
- Bun (recommended) or npm/pnpm
- A Neon database project
-
Clone the repo:
git clone https://github.com/kymibuilds/plop.dev.git cd plop.dev -
Install dependencies:
bun install
-
Set up environment variables: Copy
.env.exampleto.env(or create one):NEXT_PUBLIC_ROOT_DOMAIN=localhost:3000 DATABASE_URL=postgresql://user:pass@ep-....neon.tech/neondb?sslmode=requireNote: For local development with subdomains, use
lvh.meinstead of localhost if needed, or configure your hosts file. -
Push database schema:
bun db:push
-
Run the development server:
bun dev
Open http://localhost:3000 to see the dashboard.
To test public profiles locally, go to http://username.localhost:3000 (requires distinct port mapping or lvh.me).
Deployed on Vercel.
| Variable | Description |
|---|---|
DATABASE_URL |
Your Neon connection string (ensure sslmode=require) |
NEXT_PUBLIC_ROOT_DOMAIN |
plob.dev |
You must add two domains in Vercel settings:
plob.dev(Main)*.plob.dev(Wildcard for subdomains)
And configure your DNS nameservers to point to Vercel:
ns1.vercel-dns.comns2.vercel-dns.com
g+l: Go to Linksg+b: Go to Blogsg+p: Go to Productsg+a: Go to Analyticsg+s: Go to Sponsorsp: Publish Blog (in editor)u: Unpublish Blog (in editor)
MIT