A Next.js application for displaying curated links/distractions in a beautiful masonry card layout. Data is sourced from Coda and enriched with AI-generated titles, categories, and images via Anthropic's Claude API.
- Responsive masonry layout: Single column on mobile, 3 columns on desktop
- Smart card design: Image with category icon pill overlay, title below
- AI-powered enrichment:
- Auto-generated titles when source doesn't provide one
- Category assignment via LLM analysis
- Smart image selection (YouTube thumbnails, Open Graph images, etc.)
- Real-time data: Fetches from Coda API, filters to show only "Live" items
- Deep linking: Cards open links directly, resolving to appropriate apps
- Frontend: Next.js 14 (App Router)
- Styling: Tailwind CSS
- Icons: Font Awesome (Free + Brands)
- Data Source: Coda API
- AI Enrichment: Anthropic Claude API
- Deployment: DigitalOcean (via Docker)
Source: Coda table "Distractions | Regulars | Browsing"
| Field | Type | Usage |
|---|---|---|
| Name | text | Card title (fallback to AI-generated) |
| Link | url | Destination URL |
| Image | image | Card thumbnail |
| Scale | 1-5 stars | Not displayed, for filtering |
| Status | Live/Archived | Only "Live" items shown |
| Category | text (TBD) | For icon pill overlay |
| AI_Title | text (TBD) | LLM-generated title |
| AI_Image_URL | url (TBD) | LLM-selected image URL |
┌─────────────────────────┐
│ ┌──────┐ │
│ │ icon │ │ ← Category pill (top-left)
│ └──────┘ │
│ │
│ [IMAGE] │ ← Main image area
│ │
├─────────────────────────┤
│ Title of the Link │ ← Title area
│ domain.com · 2h ago │ ← Source + time
└─────────────────────────┘
- Next.js project setup
- Coda API integration
- Masonry layout with CSS Grid
- Basic card component
- Deploy to DigitalOcean
- Add Category column to Coda
- Claude API integration for categorization
- Title generation for untitled links
- Smart image URL extraction
- Font Awesome icon mapping
- Loading states
- Error handling
- Image optimization
CODA_API_TOKEN=your-coda-token
ANTHROPIC_API_KEY=your-anthropic-keynpm install
npm run devDeployed to DigitalOcean droplet via Docker. See /docs/deployment.md for details.
- n8n Host: 157.245.179.100 (workflow automation)
- MCP Host: 142.93.25.24 (MCP servers)
- DNS: Managed via Cloudflare
Private - Ted Pearlman / Listen to the Trees