Product Integration Setup
This guide walks you through setting up the product integration in your Archibald application, matching the patterns used in the Shop template.
Server-Side Configuration
To enable product data fetching on the server, register the ProductModule in your CoreServer implementation (e.g., templates/shop/src/shop/server/module/server.tsx).
Module Registration
import { ProductModule } from '@archibald/product';
import { CommerceProductProvider } from '@archibald/commerce/product';
import { ProjectCommerceProductMapper } from 'shop/server/classes/project-commerce-product-mapper';
// ... inside your Server class
public async initModules() {
await this.registerModules([
new ProductModule({
provider: new CommerceProductProvider({
config: () => this.configService.get('hybris.api'),
mappers: [ProjectCommerceProductMapper]
})
}),
// ... other modules
]);
}
Client-Side Configuration
1. Create the Product Client
Create a creator file for the product client (e.g., shop/client/api/creators/product.ts).
import { ProductClient, ProductAdapter } from '@archibald/product';
import { api } from 'shop/client/api';
export default new ProductClient({ adapter: ProductAdapter, api });
2. Provide the Client to your App
Wrap your application with the ProductClientProvider in your main App.tsx.
import { ProductClientProvider } from '@archibald/product';
import ProductClient from 'shop/client/api/creators/product';
function App() {
return (
<ProductClientProvider client={ProductClient}>
{/* Your application components */}
</ProductClientProvider>
);
}