← All templates

Coupon/Deals Platform

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

Groupon-like deals platform with merchant offers, expiry tracking, redemption codes, and QR verification — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • payments
  • notifications
  • image-upload
  • geolocation
  • cron
  • subscriptions

Screens (14)

  • Landing /
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Deals /deals (signed in)
  • DealDetail /deals/:id (signed in)
  • Merchants /merchants (signed in)
  • MyCoupons /my-coupons (signed in)
  • NearMe /near-me (signed in)
  • Dashboard /dashboard (signed in)
  • Settings /settings (signed in)
  • MerchantDetail /merchants/:id (signed in)
  • Notifications /notifications (signed in)

Data model (10 tables)

  • categories — id, name, slug, description, icon, sort_order, status, created_at, …
  • deals — id, merchant_id, category_id, title, description, terms, original_price, discounted_price, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • merchants — id, user_id, business_name, business_description, contact_email, contact_phone, address, website, …
  • my_coupons — id, user_id, redemption_id, deal_id, merchant_id, code, status, saved_at, …
  • nearby_deals — id, deal_id, user_id, merchant_id, title, discount_percent, latitude, longitude, …
  • notifications — id, user_id, type, title, body, href, entity_id, unread, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • redemptions — id, user_id, deal_id, merchant_id, code, qr_data, qr_token, status, …
  • user_settings — user_id, city, preferences, notification_prefs, created_at, updated_at

API (13 handlers)

  • \_deal-window api/src/handlers/_deal-window.ts
  • \_decorate api/src/handlers/_decorate.ts
  • \_seed api/src/handlers/_seed.ts
  • \_test api/src/handlers/_test.ts
  • categories api/src/handlers/categories.ts
  • deals api/src/handlers/deals.ts
  • merchants api/src/handlers/merchants.ts
  • my_coupons api/src/handlers/my_coupons.ts
  • nearby_deals api/src/handlers/nearby_deals.ts
  • notifications api/src/handlers/notifications.ts
  • redemptions api/src/handlers/redemptions.ts
  • reports api/src/handlers/reports.ts
  • user_settings api/src/handlers/user_settings.ts

Subscription tiers

free / pro / team — gated by: maxCategories, maxDeals, maxMerchants, maxRedemptions, advancedFeatures, canExport, retentionDays

Built from 18 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret API key for payment processing
  • STRIPE_PUBLISHABLE_KEY Stripe publishable key for client-side checkout
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret
  • MEILISEARCH_API_KEY MeiliSearch admin API key
  • GOOGLE_MAPS_API_KEY Google Maps API key for location-based deals
  • S3_BUCKET S3 bucket for deal images
  • AWS_ACCESS_KEY_ID AWS access key for S3
  • AWS_SECRET_ACCESS_KEY AWS secret key for S3
  • MAILGUN_API_KEY Mailgun API key for transactional 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