← All templates

Price Comparison

E-commerce · React + Node (Express) · 16 @molecule/* packages

Google Shopping-like price comparison with multi-source data, price history tracking, and drop alerts — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • notifications
  • subscriptions

Screens (18)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Search /search (signed in)
  • ProductDetail /products/:id (signed in)
  • Alerts /alerts (signed in)
  • Deals /deals (signed in)
  • Watchlist /watchlist (signed in)
  • Settings /settings (signed in)
  • Dashboard /dashboard (signed in)
  • AlertDetail /alerts/:id (signed in)
  • Notifications /notifications (signed in)
  • Categories /categories (signed in)
  • PriceHistory /products/:id/history (signed in)
  • Profile /profile (signed in)
  • Billing /settings/billing (signed in)

Data model (9 tables)

  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • notifications — id, user_id, type, payload, read_at, created_at
  • price_alerts — id, user_id, product_id, target_price, alert_type, status, channel, last_notified_at, …
  • price_entries — id, product_id, source_id, price, currency, url, in_stock, is_current, …
  • price_history — id, product_id, source_id, price, currency, in_stock, recorded_at, created_at
  • product_variants — id, productId, name, sku, price, inventory, createdAt, updatedAt
  • products — id, name, slug, description, price, currency, status, imageUrl, …
  • sources — id, name, slug, base_url, logo_url, fetch_config, status, last_fetched_at, …
  • watchlist_items — id, user_id, product_id, notes, created_at

API (7 handlers)

  • \_test api/src/handlers/_test.ts
  • alerts api/src/handlers/alerts.ts
  • notifications api/src/handlers/notifications.ts
  • prices api/src/handlers/prices.ts
  • products api/src/handlers/products.ts
  • sources api/src/handlers/sources.ts
  • watchlist api/src/handlers/watchlist.ts

Subscription tiers

free / pro / team — gated by: maxAlerts, maxPrices, maxProducts, maxSources, advancedFeatures, canExport, retentionDays

Built from 16 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • MEILISEARCH_API_KEY MeiliSearch admin API key
  • MAILGUN_API_KEY Mailgun API key for alert emails
  • MAILGUN_DOMAIN Mailgun sending domain

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