Vendure Architecture Overview
Vendure is built with an internal architecture based on NestJS modules. It is not necessary to be familiar with all the internal modules, but a simplified overview can help to see how the major parts fit together. Here is a simplified diagram of the Vendure application architecture:
As you can see in the diagram, there are two entry points into the application:
bootstrapWorker(), which start the main server and the worker respectively. Communication between server and worker(s) is done via the Job Queue.
There are 2 separate GraphQL APIs: shop and admin.
The Shop API is used by public-facing client applications (web shops, e-commerce apps, mobile apps etc.) to allow customers to find products and place orders.
The Admin API is used by administrators to manage products, customers and orders.
Vendure officially supports multiple databases: MySQL/MariaDB, PostgreSQL, SQLite and SQL.js, plus API-compatible cloud versions of these such as Amazon Aurora. Since Vendure uses TypeORM to manage data access, it can theoretically also work with other relational databases supported by TypeORM such as CockroachDB, Microsoft SQL Server, though these are not guaranteed to work in all cases, as they are not covered in our testing.
Custom Business Logic (Plugins)
Not shown on the diagram (for the sake of simplicity) are plugins. Plugins are the mechanism by which you extend Vendure with your own business logic and functionality. See the Plugins docs