Daffodil is an Angular-based frontend framework that provides the driver architecture to build, scale, and switch backends for a faster and more adaptable ecommerce storefront.
Switch between ecommerce backends with minimal code changes. Daffodil's driver architecture abstracts platform differences, allowing you to swap ecommerce platforms by changing only a few lines of code. View the demo.
For example, you could be on Magento:
import { ApplicationConfig } from '@angular/core';
import { provideMagentoDriver } from '@daffodil/driver/magento';
import { provideDaffProductMagentoDriver } from '@daffodil/product/driver/magento';
export const appConfig: ApplicationConfig = {
providers: [
provideMagentoDriver(config),
provideDaffProductMagentoDriver(),
],
};
And switch to Shopify with just two lines of code:
import { ApplicationConfig } from '@angular/core';
import { provideShopifyDriver } from '@daffodil/driver/shopify';
import { provideDaffProductShopifyDriver } from '@daffodil/product/driver/shopify';
export const appConfig: ApplicationConfig = {
providers: [
provideShopifyDriver(config),
provideDaffProductShopifyDriver(),
],
};
Drivers enable integration with any ecommerce backend through consistent interfaces. Drivers abstract platform-specific implementations, keeping application code platform-agnostic.
constructor(
@Inject(DaffProductDriver) private productDriver: DaffProductServiceInterface,
) {}
// Works with Magento, Shopify, or any custom implementation
this.productDriver.get(productId).subscribe(product => {
// Handle product data consistently
});
The Design System provides ecommerce-specific components tested for accessibility, responsive design, and conversion optimization.
Daffodil uses interoperable packages that work independently or together. Install only what you need:
Daffodil is MIT licensed and community-driven. Daffodil wouldn't be possible without our many open source contributions. All development happens in the open on GitHub, and contributions are welcomed from everyone.