Drop your links. Share the list.
Create shareable link lists with automatic metadata scraping, search, sort, and filtering. No signup required.
- Framework: Next.js 15 (App Router, TypeScript)
- Database & Auth: Supabase (PostgreSQL + full-text search)
- Styling: Tailwind CSS v4
- Link Scraping: open-graph-scraper
- Deployment: Vercel
- Node.js 18+
- A Supabase project (free tier works)
- Optionally: Supabase CLI for local development
git clone https://github.com/martapanc/linkarium.git
cd linkarium
npm install- Create a new project at supabase.com
- Go to SQL Editor and run the migration in
supabase/migrations/001_initial_schema.sql - Copy your project URL and anon key from Settings → API
cp .env.example .envFill in your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=your-anon-key
NEXT_PUBLIC_APP_URL=http://localhost:3000
npm run devOpen http://localhost:3000.
src/
├── app/
│ ├── page.tsx # Landing page with create form
│ ├── layout.tsx # Root layout + metadata
│ ├── not-found.tsx # 404 page
│ ├── globals.css # Tailwind + custom theme
│ ├── [listId]/
│ │ └── page.tsx # List view (SSR for OG tags)
│ └── api/
│ ├── lists/route.ts # POST (create) + PATCH (update)
│ ├── links/route.ts # POST (add) + DELETE + PUT (reorder)
│ └── scrape/route.ts # POST (scrape/re-scrape URL)
├── components/
│ ├── ListView.tsx # Main list page orchestrator
│ ├── LinkCard.tsx # Individual link card
│ ├── AddLinksForm.tsx # Collapsible form to add links
│ ├── SearchFilterBar.tsx # Search, domain filter, sort
│ ├── ListHeader.tsx # Editable title + description
│ ├── ShareButton.tsx # Copy list URL to clipboard
│ └── EmptyState.tsx # Shown when list is empty
└── lib/
├── types.ts # TypeScript types
├── url-parser.ts # URL extraction from raw text
├── scraper.ts # OG metadata scraper
└── supabase/
├── client.ts # Browser Supabase client
└── server.ts # Server Supabase client
- Create lists — paste URLs or raw text, get a shareable page
- Metadata scraping — automatic OG image, title, description, favicon
- Search & filter — full-text search, domain filter
- Sort — by position, date added, title, or domain
- Inline editing — click to edit list title and description
- Share — one-click copy of list URL
- SSR — server-rendered OG tags for social media previews
- Responsive — mobile-first design
- Duplicate detection — warns when adding duplicate URLs
- Re-scrape — refresh metadata for any individual link
- Push to GitHub
- Import project at vercel.com/new
- Add environment variables in Vercel dashboard
- Deploy
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY=your-anon-key
NEXT_PUBLIC_APP_URL=https://your-domain.com
- User accounts (Supabase Auth)
- Private lists (RLS policies per user)
- Display options (card size, theme colours)
- Drag-and-drop reorder (@dnd-kit)
- Brand customisation (logo, custom CSS)
- List expiry warnings + renewal
- Tags/categories for links
- Import/export (JSON, bookmark HTML)
- Collaborative editing (Supabase Realtime)
MIT