Skip to main content

Available Extensions

This EverShop application includes several extensions that add powerful functionality to your e-commerce store. Extensions are modular components that can be enabled or disabled through the configuration system.

Offline Payments

Cash on delivery and bank transfer payment methods

Product Catalog

Enhanced product information for supplements

Product Reviews

Customer reviews and ratings for products

Sample Extension

Example extension showing all capabilities

Active Extensions

The following extensions are currently enabled in your EverShop application:
ExtensionStatusPurpose
offlinePayments✅ EnabledCash on delivery and bank transfer payment options
productCatalog✅ EnabledEnhanced product information display
productReviews✅ EnabledCustomer review system
sample🧪 ExampleReference implementation for developers

Extension Architecture

Extensions in EverShop follow a modular architecture where each extension can provide:
Extensions can add REST API endpoints to handle custom business logic. Each endpoint is defined with a route.json file and handler functions.See Creating API Endpoints for details.
Extensions can inject React components into specific areas of your store’s pages. Components are registered with layout configuration specifying their area and sort order.See Creating Page Components for details.
Extensions can listen to system events like product creation, order placement, or customer registration to trigger custom actions.See Event Subscribers for details.
Extensions can extend the GraphQL schema with custom types, queries, and mutations to expose additional data.See GraphQL Concepts for details.
Extensions can schedule recurring background tasks to run at specific intervals.See Cron Jobs for details.

Configuring Extensions

Extensions are configured in the config/default.json file:
{
  "system": {
    "extensions": [
      {
        "name": "offlinePayments",
        "resolve": "extensions/offlinePayments",
        "enabled": true
      },
      {
        "name": "productCatalog",
        "resolve": "extensions/productCatalog",
        "enabled": true
      },
      {
        "name": "productReviews",
        "resolve": "extensions/productReviews",
        "enabled": true
      }
    ]
  }
}
Extensions are loaded in the order they appear in the configuration. This can affect component rendering order and event handler execution.

Creating Your Own Extensions

To create a new extension:
1

Create extension directory

Create a new directory under extensions/ with your extension name:
mkdir -p extensions/myExtension/src
2

Add package.json and tsconfig.json

Configure your extension’s dependencies and TypeScript settings:
package.json
{
  "name": "myExtension",
  "version": "1.0.0",
  "type": "module"
}
3

Register in configuration

Add your extension to config/default.json:
{
  "name": "myExtension",
  "resolve": "extensions/myExtension",
  "enabled": true
}
4

Add functionality

Create API endpoints, page components, subscribers, or GraphQL types as needed.See the Creating Extensions Guide for complete details.

Next Steps

Offline Payments

Learn about cash on delivery and bank transfer options

Product Catalog

Enhanced product information for supplements

Product Reviews

Customer review system documentation

Creating Extensions

Build your own custom extensions