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
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
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
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-resource-bookmark@molecule/api-resource-comment@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeiliSearch API key
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing