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
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 - 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
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-geolocation-google@molecule/api-image-sharp@molecule/api-payments-stripe@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-data-table@molecule/app-maps@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringSTRIPE_SECRET_KEYStripe secret API key for payment processingSTRIPE_PUBLISHABLE_KEYStripe publishable key for client-side checkoutSTRIPE_WEBHOOK_SECRETStripe webhook signing secretMEILISEARCH_API_KEYMeiliSearch admin API keyGOOGLE_MAPS_API_KEYGoogle Maps API key for location-based dealsS3_BUCKETS3 bucket for deal imagesAWS_ACCESS_KEY_IDAWS access key for S3AWS_SECRET_ACCESS_KEYAWS secret key for S3MAILGUN_API_KEYMailgun API key for transactional emailsMAILGUN_DOMAINMailgun sending domain
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing