Installing Vendure on NestJS: production server for e-commerce

Preparing Vendure for production: installation, setup, and deployment

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1284
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    982
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1031
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1104
  • image_website-_0.webp
    Website development for Red Pear
    553

Preparing Vendure for production: installation, setup, and deployment

We are a team with 8 years of experience in Node.js and over 20 launched e-commerce projects. One client came with an MVP on Express: under a load of 200 RPS, the GraphQL query fails with 501. Tables are not indexed, N+1 queries cascade. You need a production primer: proper Vendure installation from scratch that handles 10,000 orders per day without lag. Our approach ensures stability and zero downtime during deployment. By ordering our setup, you get a NestJS store ready for high loads.

Key problems we solve

The first typical problem is hydration mismatch during SSR on Next.js due to incorrect caching. Vendure uses Apollo Client, but without Redis, the cache resets on the first render. The second is N+1 queries in GraphQL: if you don't configure DataLoader and indexes in TypeORM, each product collection fetch generates 50+ database queries. The third is manual migrations: without TypeORM CLI and CI/CD, teams forget to apply migrations, and production fails after deployment. We solve these problems during the design phase.

How we set up Vendure turnkey?

Detailed case: an online cosmetics store (20,000 SKU). Requirements: integration with four payment gateways, delivery via Boxberry, and a custom cart with custom fields. We chose a manual installation in a monorepo. Stack: Node.js 20 LTS, PostgreSQL 14, Redis 7, Docker Compose + Nginx.

TypeORM configuration:

// src/vendure-config.ts export const config: VendureConfig = { apiConfig: { hostname: '0.0.0.0', port: 3000, adminApiPath: 'admin-api', shopApiPath: 'shop-api', }, dbConnectionOptions: { type: 'postgres', synchronize: false, logging: process.env.APP_ENV === 'development', entities: [ Customer, Order, Product, ProductVariant, // ... custom entities ], }, paymentOptions: { paymentMethods: [ StripePaymentMethod.init(), MolliePaymentMethod.init(), ], }, }; 

Instead of the standard CLI generator, we had to create a custom plugin for product synchronization from 1C via CommerceML. Result: catalog loading speed increased by 60% compared to the previous WooCommerce solution. With such customization, you save on infrastructure and get a NestJS store fully tailored to your tasks. Order a similar solution for your business.

Work process

  1. Analysis — audit the current API and database, identify bottlenecks (N+1, missing indexes).
  2. Design — GraphQL schema, payment and delivery plugins, architecture decision records.
  3. Implementation — writing configs and custom modules (NestJS + TypeORM).
  4. Testing — load testing with k6 up to 5000 RPS, Core Web Vitals check (LCP < 2.5 s).
  5. Deployment — CI/CD via Docker Compose, backups, monitoring.
Stage Duration What's included
Analysis 1–2 days Code audit, profiling, load tests
Design 1–2 days Plugin selection, data schema, ADR
Development 3–5 days Configs, migrations, custom resolvers, plugins
Testing 1–2 days E2E with Cypress, unit tests, integration testing
Deployment 1 day Docker + CI/CD (GitHub Actions), monitoring

What's included in the work?

  • Setting up Vendure from scratch or migrating from another e-commerce platform.
  • Complete documentation on architecture and endpoints.
  • Access to the admin UI and logs.
  • Team training (2 sessions of 2 hours each).
  • Stable operation guarantee and support for 2 weeks after deployment.

Why manual installation is better than CLI?

The CLI generator @vendure/create is suitable for prototypes, but for production it imposes unnecessary plugins and structure. Manual installation gives full control over versions and configuration. Our clients save up to 15% on infrastructure costs through customization. Get a consultation for your project.

How is stability guaranteed after deployment?

We configure monitoring (Prometheus + Grafana), regular backups, and health checks. In case of a failure, automatic restart via Docker Compose. All changes pass CI/CD with tests and manual code review. The guarantee applies for 2 weeks after deployment.

Checklist after installation (we check each item)

Criterion Description
Database and migrations Database created, migrations applied, synchronize = false
Admin UI Available at /admin, CRUD for products works
Shop API Response at /shop-api exists as a GraphQL schema
Assets Directory exists and is writable
SMTP Email sending tested on order creation
Worker Job queue works, Redis connected
SSL Nginx configured for HTTPS, HSTS enabled

Installation takes from 1 to 3 days depending on integration complexity. Pricing is individual — contact us for a project estimate within 24 hours.