News Aggregator
Content & Social · React + Node (Express) · 16 @molecule/* packages
Flipboard-like news with RSS parsing, categories, and personalization — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (14)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Home
/home(signed in) - TopicDetail
/topics/:slug(signed in) - StoryDetail
/stories/:id(signed in) - Saved
/saved(signed in) - Sources
/sources(signed in) - Settings
/settings(signed in) - Topics
/topics(signed in) - SourceDetail
/sources/:slug(signed in) - Search
/search(signed in)
Data model (11 tables)
- news_categories — id, name, slug, icon, color, tint, sort_order, created_at, …
- sources — id, user_id, name, slug, description, feed_url, website_url, category_id, …
- articles — id, source_id, category_id, title, url, excerpt, content, image_url, …
- story_coverage — id, article_id, source_id, headline, excerpt, url, published_at, created_at, …
- user_interests — id, user_id, category_id, active, created_at, updatedAt
- source_followers — id, user_id, source_id, created_at
- bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- tags — id, name, slug, color, description, createdAt, updatedAt
- resource_tags — id, tagId, resourceType, resourceId, createdAt
- user_preferences — user_id, preferences, created_at, updatedAt
API (8 handlers)
- articles
api/src/handlers/articles.ts - bookmarks
api/src/handlers/bookmarks.ts - categories
api/src/handlers/categories.ts - preferences
api/src/handlers/preferences.ts - search
api/src/handlers/search.ts - sources
api/src/handlers/sources.ts - stories
api/src/handlers/stories.ts - topics
api/src/handlers/topics.ts
Subscription tiers
free / pro / team — gated by: maxArticles, maxBookmarks, maxCategories, maxSources, advancedFeatures, canExport, retentionDays
Built from 16 @molecule/* packages
@molecule/api-ai-classification@molecule/api-ai-summarization@molecule/api-cron-node-cron@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-payment@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-sitemap-xml@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