← All templates

Link Aggregator

Content & Social · React + Node (Express) · 14 @molecule/* packages

HN/Pinboard-like with link submission, voting, and karma — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • voting
  • karma
  • comments
  • tags
  • bookmarks
  • subscriptions

Screens (15)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Feed /feed (signed in)
  • LinkDetail /links/:id (signed in)
  • Subs /subs (signed in)
  • SubDetail /subs/:slug (signed in)
  • SubmitLink /submit (signed in)
  • Profile /users/:id (signed in)
  • Settings /settings (signed in)
  • Notifications /notifications (signed in)
  • Search /search (signed in)
  • Saved /saved (signed in)

Data model (13 tables)

  • bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
  • comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • link_comments — id, link_id, parent_id, body, author_id, user_id, points, edited_at, …
  • links — id, title, url, text, domain, sub_id, sub_slug, sub_name, …
  • notifications — id, user_id, kind, actor_id, link_id, comment_id, payload, read_at, …
  • reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
  • resource_tags — id, tagId, resourceType, resourceId, createdAt
  • sub_memberships — id, sub_id, user_id, joined_at, created_at, updated_at, updatedAt
  • subs — id, name, slug, description, owner_id, user_id, member_count, created_at, …
  • tags — id, name, slug, color, description, createdAt, updatedAt
  • votes — id, link_id, user_id, direction, created_at, updated_at, updatedAt
  • comment_votes — id, comment_id, user_id, direction, created_at, updated_at, updatedAt

API (7 handlers)

  • bookmarks api/src/handlers/bookmarks.ts
  • comments api/src/handlers/comments.ts
  • links api/src/handlers/links.ts
  • notifications api/src/handlers/notifications.ts
  • subs api/src/handlers/subs.ts
  • users api/src/handlers/users.ts
  • votes api/src/handlers/votes.ts

Subscription tiers

free / pro / team — gated by: maxComments, maxLinks, maxVotes, advancedFeatures, canExport, retentionDays

Built from 14 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch API key

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing