GitHub

What is Daffodil?

Daffodil is an Angular-based framework for building complex ecommerce storefronts that connect to any backend. It provides a complete architectural solution for headless ecommerce frontends that scales from startup MVPs to enterprise storefronts.

Why Daffodil?

Switch between ecommerce backends with minimal code changes. Daffodil's driver architecture abstracts platform differences, allowing you to change entire (or partial) ecommerce features to another platform by changing only a few lines of code. View the demo to see Daffodil in action!

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 over 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(),
  ]
};

Core features

Driver system

Drivers enable integration with any ecommerce backend through consistent interfaces. Drivers abstract platform-specific implementations, keeping application code platform-agnostic.

Key benefits:

  • Platform switching with minimal code changes
  • Support multiple backends simultaneously
  • Mock drivers for development and testing
  • Extensible architecture for custom integrations

Example:

// Same service interface works with any platform
constructor(
  @Inject(DaffProductDriver) private productDriver: DaffProductServiceInterface
) {}

// Works with Magento, Shopify, or any custom implementation
this.productDriver.get(productId).subscribe(product => {
  // Handle product data consistently
});

Design system

Daffodil's Design System provides ecommerce-specific components tested for accessibility, responsive design, and conversion optimization.

Modular packages

Daffodil uses interoperable packages that work independently or together. Install only what you need without package bloating:

Community and support

Open source

Daffodil is MIT licensed and community-driven. Daffodil wouldn't be possible without our many open source contributions.

  • Transparent development: All work happens in the open on GitHub
  • Community-driven roadmap: Feature requests and feedback shape our roadmap
  • Open contributions: Contributions are welcomed from everyone, regardless of skill level

Getting help

Contributing

Next steps