From 214d2cc544aed71d60231ba22ae89b1190a723ef Mon Sep 17 00:00:00 2001 From: Peter Lauck Date: Fri, 7 Jun 2024 18:04:03 +0000 Subject: [PATCH 1/4] docs: add about and getting started docs --- docs/guides/introduction/about.md | 23 +++++++++++++++++ docs/guides/introduction/getting-started.md | 28 +++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/docs/guides/introduction/about.md b/docs/guides/introduction/about.md index fbd131c5a1..748ec552db 100644 --- a/docs/guides/introduction/about.md +++ b/docs/guides/introduction/about.md @@ -1 +1,24 @@ # About Daffodil + +Daffodil is a client-side framework for building ecommerce stores. It presents a standard set of interfaces with which the frontend application can interact while offering a selection of drivers that communicate with the platform of choice. + +## Objectives +Daffodil aims to: +- Provide a strongly-typed set of libraries and component kit to simplify ecommerce store development +- Ease migration between ecommerce platforms by decoupling frontend code from the current platform's API +- Provide a collection of features a-la carte style such that no unused features are unnecessarily imported +- Allow extension and customization such that business-specific features can be supported in a platform-agnostic way + + + +## Architecture +The most common type of Daffodil package has a number of layers that can be visualized like so: +```mermaid +flowchart TD + A[Routing] --> B[State] + B --> C{Driver Interfaces} + D[Platform Drivers] --> C + C --> E[Models] +``` +Each of these layers exists as a subpackage of the corresponding feature module, e.g. `@daffodil/cart/state`. + \ No newline at end of file diff --git a/docs/guides/introduction/getting-started.md b/docs/guides/introduction/getting-started.md index 31dd91e805..c01b48bae9 100644 --- a/docs/guides/introduction/getting-started.md +++ b/docs/guides/introduction/getting-started.md @@ -1,2 +1,30 @@ # Getting Started +## Installation +Daffodil packages are provided a-la carte, i.e. each package provides a particular feature and must be installed separately. The following example demonstrates how to install the product package with `npm`. +```sh +npm install --save @daffodil/product +``` + +## Usage +The first step is to choose a driver that correspondes to the platform of choice. Daffodil provides lightweight in-memory API drivers to mock out a test platform for rapid frontend development. + +Once a platform has been chosen, import the corresponding driver module: + +```ts +import {DaffProductInMemoryDriverModule} from '@daffodil/product/driver/in-memory' + +@NgModule({ + imports: [ + DaffProductInMemoryDriverModule.forRoot() + ] +}) +class AppModule {} +``` + +Interacting with a given platform through Daffodil can be done in a couple of ways. The simplest, and recommended, way is through state. + +### State +Interaction with the platform is done by dispatching actions and reading data from facades. Daffodil state packages track the loading state of each operation and store the results and/or errors in redux state. + + From 8ecf6cea27b1b728ec2dba74718a909f80f24322 Mon Sep 17 00:00:00 2001 From: griest024 Date: Mon, 29 Jul 2024 16:35:43 -0400 Subject: [PATCH 2/4] Update docs/guides/introduction/getting-started.md Co-authored-by: Elain T. --- docs/guides/introduction/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/introduction/getting-started.md b/docs/guides/introduction/getting-started.md index c01b48bae9..bee8daf65e 100644 --- a/docs/guides/introduction/getting-started.md +++ b/docs/guides/introduction/getting-started.md @@ -1,6 +1,6 @@ # Getting Started ## Installation -Daffodil packages are provided a-la carte, i.e. each package provides a particular feature and must be installed separately. The following example demonstrates how to install the product package with `npm`. +Daffodil packages are provided a la carte. Each package provides a particular feature and must be installed separately. The following example demonstrates how to install the product package with `npm`. ```sh npm install --save @daffodil/product From 4f5719451d25473465f7a3d545f1287e841528f3 Mon Sep 17 00:00:00 2001 From: griest024 Date: Mon, 29 Jul 2024 16:36:03 -0400 Subject: [PATCH 3/4] Update docs/guides/introduction/getting-started.md Co-authored-by: Elain T. --- docs/guides/introduction/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/introduction/getting-started.md b/docs/guides/introduction/getting-started.md index bee8daf65e..0390b82cb5 100644 --- a/docs/guides/introduction/getting-started.md +++ b/docs/guides/introduction/getting-started.md @@ -7,7 +7,7 @@ npm install --save @daffodil/product ``` ## Usage -The first step is to choose a driver that correspondes to the platform of choice. Daffodil provides lightweight in-memory API drivers to mock out a test platform for rapid frontend development. +The first step is to choose a driver that corresponds to the platform of choice. Daffodil provides lightweight in-memory API drivers to mock out a test platform for rapid frontend development. Once a platform has been chosen, import the corresponding driver module: From ab3bf46a64716e24a13ac68d0f1e719087e86e8b Mon Sep 17 00:00:00 2001 From: griest024 Date: Mon, 29 Jul 2024 16:38:18 -0400 Subject: [PATCH 4/4] Update about.md --- docs/guides/introduction/about.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/introduction/about.md b/docs/guides/introduction/about.md index 748ec552db..4a37e3294b 100644 --- a/docs/guides/introduction/about.md +++ b/docs/guides/introduction/about.md @@ -1,6 +1,6 @@ # About Daffodil -Daffodil is a client-side framework for building ecommerce stores. It presents a standard set of interfaces with which the frontend application can interact while offering a selection of drivers that communicate with the platform of choice. +Daffodil is a client-side framework for building ecommerce stores. It presents a standard set of interfaces with which the frontend application can interact along with a selection of drivers that communicate with the platform of choice. ## Objectives Daffodil aims to: @@ -21,4 +21,4 @@ flowchart TD C --> E[Models] ``` Each of these layers exists as a subpackage of the corresponding feature module, e.g. `@daffodil/cart/state`. - \ No newline at end of file +