← All templates

Digital Goods Store

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

Gumroad-like digital downloads with license keys, download links, and analytics — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • search
  • payments
  • notifications
  • file-upload
  • subscriptions

Screens (17)

  • Landing /
  • Storefront /shop
  • ProductDetail /shop/:slug
  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Products /products (signed in)
  • Sales /sales (signed in)
  • Settings /settings (signed in)
  • Cart /cart
  • Checkout /checkout
  • OrderConfirm /order/:id/confirm
  • CustomerLibrary /library (signed in)
  • OrderHistory /orders (signed in)
  • ProductEditor /products/:id/edit (signed in)

Data model (11 tables)

  • carts — id, user_id, items, coupon_code, created_at, updated_at
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • download_logs — id, user_id, product_id, license_id, ip_address, user_agent, signed_url, expires_at, …
  • licenses — id, purchase_id, product_id, user_id, license_key, status, activations, max_activations, …
  • order_events — id, orderId, status, metadata, createdAt
  • order_items — id, orderId, productId, variantId, name, price, quantity, image
  • orders — id, userId, status, subtotal, tax, shipping, discount, total, …
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • product_variants — id, productId, name, sku, price, inventory, createdAt, updatedAt
  • products — id, name, slug, description, price, currency, status, imageUrl, …
  • purchases — id, user_id, product_id, amount, currency, status, payment_id, refunded_at, …

API (10 handlers)

  • analytics api/src/handlers/analytics.ts
  • checkout api/src/handlers/checkout.ts
  • downloads api/src/handlers/downloads.ts
  • library api/src/handlers/library.ts
  • licenses api/src/handlers/licenses.ts
  • orders api/src/handlers/orders.ts
  • products api/src/handlers/products.ts
  • profile api/src/handlers/profile.ts
  • purchases api/src/handlers/purchases.ts
  • sales api/src/handlers/sales.ts

Subscription tiers

free / pro / team — gated by: maxAnalytics, maxDownloads, maxLicenses, maxProducts, maxPurchases, advancedFeatures, canExport, retentionDays

Built from 17 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • STRIPE_SECRET_KEY Stripe secret API key
  • STRIPE_PUBLISHABLE_KEY Stripe publishable key
  • STRIPE_WEBHOOK_SECRET Stripe webhook signing secret
  • S3_BUCKET S3 bucket for digital assets
  • AWS_ACCESS_KEY_ID AWS access key
  • AWS_SECRET_ACCESS_KEY AWS secret key
  • MAILGUN_API_KEY Mailgun API key
  • MAILGUN_DOMAIN Mailgun domain
  • MEILISEARCH_API_KEY MeiliSearch API key

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