Skip to content

Repository files navigation

Rendrix - Master Your Commerce Universe

<index

dashboard

A comprehensive multi-tenant SaaS platform for creating, managing, and scaling multiple ecommerce stores from a single unified dashboard.

FeaturesTech StackGetting StartedProject StructureAPI DocsDeployment


Overview

Rendrix empowers entrepreneurs and businesses to launch and manage multiple ecommerce stores across diverse verticals—Toys, Kitchen, Nail Care, Home Decor, Garments, Beauty, Sports, Gadgets, and Home Appliances—all from one powerful dashboard.

Why Rendrix?

  • Multi-Store Management: Run multiple stores with different brands and niches
  • Enterprise-Grade Security: PCI-DSS compliant payment processing, GDPR ready
  • Scalable Architecture: Built to handle 10,000+ concurrent tenants
  • Modern Tech Stack: Next.js 14, Fastify, PostgreSQL, Redis
  • Flexible Pricing: Free tier to Enterprise with usage-based scaling

Features

Core Platform

  • ✅ Multi-tenant architecture with complete data isolation
  • ✅ JWT-based authentication with refresh token rotation
  • ✅ Role-based access control (Owner, Admin, Manager, Staff, Viewer)
  • ✅ Organization & team management with invitations
  • ✅ Subscription management with Stripe integration

Store Management

  • ✅ Instant store provisioning with industry templates
  • ✅ Custom domain support with automatic SSL
  • ✅ Theme marketplace with live customization
  • ✅ SEO configuration per store
  • ✅ Store cloning for quick launches

Commerce Features

  • ✅ Product catalog with variants and attributes
  • ✅ Category management with hierarchy
  • ✅ Inventory tracking with low-stock alerts
  • ✅ Order management with fulfillment workflows
  • ✅ Customer database with purchase history
  • ✅ Coupon system (percentage, fixed, BOGO, free shipping)

Integrations

  • ✅ Payment gateways (Stripe, PayPal ready)
  • ✅ Email notifications
  • 🔄 Social commerce (Meta, TikTok, Pinterest) - Coming Soon
  • 🔄 Marketing automation - Coming Soon
  • 🔄 Analytics dashboard - Coming Soon

Tech Stack

Frontend

TechnologyPurpose
Next.js 14React framework with App Router
TypeScriptType-safe development
Tailwind CSSUtility-first styling
shadcn/uiAccessible UI components
TanStack QueryServer state management
ZustandClient state management
React Hook FormForm handling with Zod validation

Backend

TechnologyPurpose
Node.js 20JavaScript runtime
FastifyHigh-performance web framework
PrismaType-safe ORM
PostgreSQL 16Primary database
Redis 7Caching & session storage
BullMQBackground job processing

Infrastructure

TechnologyPurpose
DockerContainerization
TurborepoMonorepo build system
pnpmFast package manager
GitHub ActionsCI/CD pipelines

Getting Started

Prerequisites

  • Node.js 20+
  • pnpm 8+
  • Docker & Docker Compose
  • PostgreSQL 16 (or use Docker)
  • Redis 7 (or use Docker)

Installation

  1. Clone the repository

    git clone https://github.com/your-org/rendrix.git
    cd rendrix
  2. Install dependencies

    pnpm install
  3. Start infrastructure services

    docker-compose up -d

    This starts PostgreSQL, Redis, Meilisearch, MinIO, and Mailhog.

  4. Set up environment variables

    # API configuration
    cp apps/api/.env.example apps/api/.env
    # Web configuration
    cp apps/web/.env.example apps/web/.env

    Edit the .env files with your configuration. Generate secure secrets:

    # Generate JWT secrets
    openssl rand -base64 64
  5. Initialize the database

    # Generate Prisma client
    pnpm db:generate
    # Push schema to database
    pnpm db:push
    # Seed with initial data (plans, themes, demo user)
    pnpm db:seed
  6. Start development servers

    pnpm dev
  7. Access the applications

Demo Credentials

After seeding, you can login with:


Docker Setup

Prerequisites

  • Docker 24.0+
  • Docker Compose 2.20+

Quick Start (Development)

Run the entire stack with a single command:

# Start all services (apps + infrastructure)
docker-compose up -d
# View logs
docker-compose logs -f
# Stop all services
docker-compose down

Development Mode

Development mode includes hot reload for all applications:

# Build and start development containers
docker-compose up -d --build
# Start only infrastructure (run apps locally)
docker-compose up -d postgres redis meilisearch minio mailhog
# Rebuild after dependency changes
docker-compose up -d --build --force-recreate api web storefront

Production Mode

# Build production images
docker-compose -f docker-compose.prod.yml build
# Start production stack
docker-compose -f docker-compose.prod.yml up -d
# Run database migrations
docker-compose -f docker-compose.prod.yml exec api npx prisma migrate deploy
# Scale services
docker-compose -f docker-compose.prod.yml up -d --scale api=3 --scale web=2

Service Ports

ServiceDevelopmentProduction
Web Dashboard30003000
Customer Storefront30013001
API Server40004000
PostgreSQL5432- (internal)
Redis6379- (internal)
Meilisearch7700- (internal)
MinIO9000, 9001-
Mailhog1025, 8025-

Environment Variables

Copy .env.example to .env and configure:

cp .env.example .env

Required variables for production:

  • JWT_SECRET - Secure JWT signing key (min 32 chars)
  • JWT_REFRESH_SECRET - Secure refresh token key
  • DB_PASSWORD - PostgreSQL password
  • REDIS_PASSWORD - Redis password
  • MEILISEARCH_KEY - Meilisearch master key

Common Docker Commands

# View container logs
docker-compose logs -f api
docker-compose logs -f web
# Execute commands in container
docker-compose exec api sh
docker-compose exec postgres psql -U postgres -d rendrix
# Restart a specific service
docker-compose restart api
# View running containers
docker-compose ps
# Clean up (remove containers, networks, volumes)
docker-compose down -v
# Prune unused Docker resources
docker system prune -a

Troubleshooting

Port conflicts:

# Check what's using a port
lsof -i :3000
# Kill the process or change the port in docker-compose.yml

Container won't start:

# Check logs for errors
docker-compose logs api
# Rebuild from scratch
docker-compose down -v
docker-compose build --no-cache
docker-compose up -d

Hot reload not working:

# On macOS, ensure file events are propagating# The WATCHPACK_POLLING=true env var is set for Next.js apps# Restart the container
docker-compose restart web

Database connection issues:

# Ensure postgres is healthy
docker-compose ps postgres
# Check DATABASE_URL points to 'postgres' (container name), not 'localhost'# Inside containers: postgresql://postgres:postgres@postgres:5432/rendrix

Project Structure

rendrix/
├── apps/
│ ├── api/ # Fastify REST API
│ │ ├── src/
│ │ │ ├── config/ # Environment configuration
│ │ │ ├── lib/ # Core utilities (auth, redis, errors)
│ │ │ ├── routes/ # API route handlers
│ │ │ ├── app.ts # Fastify app setup
│ │ │ └── index.ts # Entry point
│ │ └── package.json
│ │
│ ├── web/ # Next.js dashboard
│ │ ├── src/
│ │ │ ├── app/ # App router pages
│ │ │ ├── components/ # React components
│ │ │ ├── hooks/ # Custom React hooks
│ │ │ ├── lib/ # Utilities (api client)
│ │ │ └── store/ # Zustand stores
│ │ └── package.json
│ │
│ └── storefront/ # Public storefront (planned)
│
├── packages/
│ ├── config/ # Shared configurations
│ │ ├── eslint/ # ESLint configs
│ │ └── typescript/ # TypeScript configs
│ │
│ ├── database/ # Prisma schema & client
│ │ ├── prisma/
│ │ │ ├── schema.prisma # Database schema
│ │ │ └── seed.ts # Seed data
│ │ └── src/
│ │ ├── client.ts # Prisma client singleton
│ │ └── utils.ts # Database utilities
│ │
│ ├── types/ # Shared TypeScript types
│ │ └── src/
│ │ ├── entities.ts # Entity types
│ │ ├── auth.ts # Auth types & permissions
│ │ ├── billing.ts # Subscription types
│ │ └── ...
│ │
│ └── utils/ # Shared utilities
│ └── src/
│ ├── validation.ts # Zod schemas
│ ├── formatters.ts # Currency, date formatters
│ ├── helpers.ts # General utilities
│ └── constants.ts # Shared constants
│
├── docker-compose.yml # Development services
├── docker-compose.prod.yml # Production services
├── turbo.json # Turborepo configuration
├── pnpm-workspace.yaml # pnpm workspaces
└── package.json # Root package.json

API Documentation

Authentication Endpoints

MethodEndpointDescription
POST/api/v1/auth/registerRegister new user
POST/api/v1/auth/loginLogin with email/password
POST/api/v1/auth/refreshRefresh access token
POST/api/v1/auth/logoutLogout (revoke refresh token)
GET/api/v1/auth/meGet current user
POST/api/v1/auth/forgot-passwordRequest password reset
POST/api/v1/auth/reset-passwordReset password with token
POST/api/v1/auth/verify-emailVerify email address

Organization Endpoints

MethodEndpointDescription
GET/api/v1/organizationsList user's organizations
POST/api/v1/organizationsCreate organization
GET/api/v1/organizations/:idGet organization details
PATCH/api/v1/organizations/:idUpdate organization
DELETE/api/v1/organizations/:idDelete organization
GET/api/v1/organizations/:id/membersList members
POST/api/v1/organizations/:id/members/inviteInvite member
DELETE/api/v1/organizations/:id/members/:userIdRemove member

Store Endpoints

MethodEndpointDescription
GET/api/v1/storesList stores
POST/api/v1/storesCreate store
GET/api/v1/stores/:storeIdGet store details
PATCH/api/v1/stores/:storeIdUpdate store
DELETE/api/v1/stores/:storeIdDelete store
GET/api/v1/stores/:storeId/settingsGet settings
PATCH/api/v1/stores/:storeId/settingsUpdate settings
GET/api/v1/stores/:storeId/seoGet SEO settings
PATCH/api/v1/stores/:storeId/seoUpdate SEO settings

Product Endpoints

MethodEndpointDescription
GET/api/v1/stores/:storeId/productsList products
POST/api/v1/stores/:storeId/productsCreate product
GET/api/v1/stores/:storeId/products/:productIdGet product
PATCH/api/v1/stores/:storeId/products/:productIdUpdate product
DELETE/api/v1/stores/:storeId/products/:productIdDelete product
POST/api/v1/stores/:storeId/products/bulkBulk operations

Order Endpoints

MethodEndpointDescription
GET/api/v1/stores/:storeId/ordersList orders
POST/api/v1/stores/:storeId/ordersCreate manual order
GET/api/v1/stores/:storeId/orders/:orderIdGet order
PATCH/api/v1/stores/:storeId/orders/:orderIdUpdate order
POST/api/v1/stores/:storeId/orders/:orderId/fulfillFulfill order
POST/api/v1/stores/:storeId/orders/:orderId/cancelCancel order

Subscription Endpoints

MethodEndpointDescription
GET/api/v1/subscriptions/plansList available plans
GET/api/v1/subscriptions/currentGet current subscription
POST/api/v1/subscriptions/checkoutCreate Stripe checkout
POST/api/v1/subscriptions/portalGet billing portal URL
DELETE/api/v1/subscriptions/currentCancel subscription

Request Headers

All authenticated requests require:

Authorization: Bearer <access_token>
X-Organization-Id: <organization_uuid> # For organization-scoped requests

Scripts

Root Commands

# Development
pnpm dev # Start all apps in development mode
pnpm build # Build all apps and packages
pnpm lint # Lint all packages
pnpm type-check # TypeScript type checking
pnpm test# Run all tests
pnpm clean # Clean all build outputs# Database
pnpm db:generate # Generate Prisma client
pnpm db:migrate # Run migrations (development)
pnpm db:push # Push schema to database
pnpm db:seed # Seed database
pnpm db:studio # Open Prisma Studio# Formatting
pnpm format # Format all files with Prettier

App-Specific Commands

# API
pnpm --filter @rendrix/api dev
pnpm --filter @rendrix/api build
pnpm --filter @rendrix/api test# Web
pnpm --filter @rendrix/web dev
pnpm --filter @rendrix/web build
pnpm --filter @rendrix/web start

Environment Variables

API (apps/api/.env)

# RequiredDATABASE_URL="postgresql://user:pass@localhost:5432/rendrix"REDIS_URL="redis://localhost:6379"JWT_SECRET="your-32-char-minimum-secret"JWT_REFRESH_SECRET="your-32-char-minimum-refresh-secret"# OptionalSTRIPE_SECRET_KEY=""STRIPE_WEBHOOK_SECRET=""SMTP_HOST=""SMTP_PORT=""SMTP_USER=""SMTP_PASSWORD=""AWS_ACCESS_KEY_ID=""AWS_SECRET_ACCESS_KEY=""AWS_S3_BUCKET=""

Web (apps/web/.env)

NEXT_PUBLIC_API_URL="http://localhost:4000"NEXT_PUBLIC_APP_URL="http://localhost:3000"

Deployment

Docker Production Build

# Build and start production containers
docker-compose -f docker-compose.prod.yml up -d
# Run migrations
docker-compose -f docker-compose.prod.yml exec api npx prisma migrate deploy

Vercel Deployment (Web)

  1. Connect your repository to Vercel
  2. Set the root directory to apps/web
  3. Add environment variables
  4. Deploy

Railway/Render (API)

  1. Connect your repository
  2. Set the root directory to apps/api
  3. Add environment variables
  4. Set build command: pnpm install && pnpm build
  5. Set start command: pnpm start

Subscription Plans

FeatureFreePro ($29/mo)Premium ($79/mo)Enterprise
Stores1310Unlimited
Products505005,000Unlimited
Team Members1515Unlimited
Custom Domains0310Unlimited
Bandwidth1 GB10 GB100 GBUnlimited
Basic Themes
Premium Themes
SEO Tools
Marketing Suite
API Access
White Label
Priority Support
Dedicated Support

Security

Authentication

  • Passwords hashed with bcrypt (12 rounds)
  • JWT access tokens (15-minute expiry)
  • Refresh token rotation
  • Rate limiting on auth endpoints
  • Two-factor authentication support

Data Protection

  • Row-Level Security (RLS) for tenant isolation
  • All data encrypted in transit (TLS 1.3)
  • PCI-DSS compliant payment tokenization
  • GDPR-ready data handling

API Security

  • CORS protection
  • Helmet security headers
  • Input validation with Zod
  • SQL injection prevention via Prisma
  • XSS protection

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript strict mode
  • Write tests for new features
  • Use conventional commits
  • Update documentation

Roadmap

Phase 1: Foundation ✅

  • Monorepo setup with Turborepo
  • Authentication system
  • Organization management
  • Store CRUD operations
  • Subscription billing

Phase 2: Store Management

  • Theme marketplace
  • Custom domain management
  • SEO configuration UI
  • Store templates

Phase 3: Commerce Core

  • Product import/export
  • Inventory management UI
  • Order fulfillment UI
  • Payment gateway UI

Phase 4: Marketing & Growth

  • Email marketing integration
  • Social commerce connectors
  • Analytics dashboard
  • Promotional tools

Phase 5: Enterprise

  • White-label capabilities
  • Public API
  • Webhooks
  • Advanced permissions

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support


Developed By

engr-mejba-ahmed

Engr Mejba Ahmed

AI Developer | Software Engineer | Entrepreneur

PortfolioLinkedInGitHub


Hire / Work With Me

I build AI-powered applications, mobile apps, and enterprise solutions. Let's bring your ideas to life!

PlatformDescriptionLink
FiverrCustom builds, integrations, performance optimizationfiverr.com/s/EgxYmWD
Mejba Personal PortfolioFull portfolio & contactmejba.me
Ramlit LimitedSoftware development companyramlit.com
ColorPark Creative AgencyUI/UX & creative solutionscolorpark.io
xCyberSecurityGlobal cybersecurity servicesxcybersecurity.io

Built with ❤️ by the Rendrix Team

About

Multi-tenant SaaS platform for creating and managing multiple ecommerce stores from a unified dashboard

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages