Multi-storefront with MedusaJS, Strapi, and Railway
starphoneswebtech
PROOP

7 months ago

Hey everyone! I’ve been working for almost a year on a full-stack e-commerce platform that runs entirely on Railway, and it’s been one of the most technically rewarding builds I’ve done so far.

The goal was to create a modular architecture that could support multi-storefronts, supplier integrations, booking systems, and automated workflows, all while keeping deployments fast and infrastructure simple. Railway made that possible with its clean environment management and service linking.

Architecture Overview

  • Backend: MedusaJS for the e-commerce engine (products, orders, inventory, payment lifecycle).
  • Frontend: Two separate Next.js storefronts connected via Medusa’s REST and custom endpoints.
  • Middleware: Custom Express.js layer for third-party integrations and background jobs.
  • Databases: PostgreSQL for core commerce data and MongoDB for analytics and caching.
  • Cache: Redis for session and notification management.
  • CMS: Strapi for blog and product content management.
  • Deployment: Everything is built and deployed through Railway.

Key Features

  • Automated Product Sync (Cron Job): Every day, a cron job fetches product data from a supplier API.
    • New items are marked as proposed for review.
    • Missing items are set to draft for cleanup.
    • A notification system alerts admins of new proposed products upon login.
  • Booking System Integration: A repair booking flow integrated with Cal.com, notifying each branch automatically.
  • POS Checklist System: Pre-repair checklist integrated with our POS system, generating printed agreements for customers to sign.
  • AWS Integration:
    • S3 for asset storage (product images, CMS uploads)
    • SES for transactional emails
    • CloudWatch for monitoring
  • Payment Flow: Customized MedusaJS checkout using Stripe Checkout with support for Australian payment methods (AfterPay, Zip).
  • 3rd PT marketing emails (easier to design)

Lessons Learned

  • Railway’s environment variables made multi-service orchestration smooth — no messy .env juggling between dev/production.
  • Logs and metrics in one dashboard helped debug complex sync operations faster than any other host I’ve used.
  • Keeping Redis, Postgres, and Node services all in Railway simplified deployment pipelines significantly.

What’s Next

I’m currently designing a B2B platform on top of the same MedusaJS core with shared catalogs, role-based access, and partner-specific pricing. The goal is to evolve this from a consumer-focused system to a full B2B ecosystem, still fully hosted and orchestrated through Railway.

Plan to migrate AWS to Railway’s buckets.

Tips to save on railway?

enable serverless

earn bounties 🤣

Attachments

0 Replies

Welcome!

Sign in to your Railway account to join the conversation.

Loading...