---
# System prepended metadata

title: Onboarding POS

---

# Onboarding POS

## SAP Description (single application package):

Basically the SAP is a web application, that aggregate a set of one responsibility packages and link them with 2 ways:
 - Sap share some ExternalsData through a **react context** with the classic top to bottom react strategi..
 - And an **Event Bus** is used to allow packages to communicate with the SAP. ( Also shared through the context)

For a better visualization please take a look to the **[Technical Schema](https://docs.google.com/presentation/d/1I4XcPgdMWScUBbRgbv1gEuw6AZWFDUOounLuEnEs78E/edit#slide=id.g50c98a14ca_0_36)**

And for more details check the **[Full documentation](https://docs.google.com/presentation/d/1I4XcPgdMWScUBbRgbv1gEuw6AZWFDUOounLuEnEs78E/edit#slide=id.p)**: 

### Stack

It's mainly built with `react`, `redux`, `redux-saga` `typescript`.

#### For more details:
Check the convention doc about **[stack and architecture](https://direction-technique.pages.gitlab.wynd.eu/docs/pos%C3%A9idon/pos-packages/)**


### SAP Feature

Basically Each SAP represent a sell's channel, made with some logic blocks that called **packages** that represent a feature such as: 

- Authentification
- Cashdesk
- Article details 
- Article search 
...

And an SAP aggregates all these logical packages to match a channel:

- Cash register
- Self Checkout
- And others in the future
...

___

## API

All our SAP communicates with an API, which is fill in a `.env` file at the application folder's root.

### @wynd/sdk-api

We communicate to the api with a self made client that's called `@wynd/sdk-api`. 
This client is used by all our js application. It regroup a set of **Accessor** that match all api endpoints. Accessors themself regroup a set of **CRUD methods** (and sometime specific one).

- It's stored in a separate repository: [https://gitlab.wynd.eu/wynd-product/sdk/api-js](https://gitlab.wynd.eu/wynd-product/sdk/api-js).
- For more details take a look at The [README.MD](https://gitlab.wynd.eu/wynd-product/sdk/api-js#wyndsdk-api)
- And see the [Examples](https://gitlab.wynd.eu/wynd-product/sdk/api-js/tree/develop/examples).

### Your api documentation:
http://API-URL/documentation/api

ℹ️ If it's not the case ask to your lead developer / Technical manager.

### What should i do if my endpoint is not or approximately taken in charge ?:

You should simply contribute to **@wynd/sdk-api**.


## Packages

### Mono repository:

All our packages and applications are stored in a mono-repository: [https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo](https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo).

#### How to use it ?
Everything is write in the [README](https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo/blob/develop/README.md).

- ℹ️ You should start by the [Getting started ](https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo#getting-started-implementation-bosap) .
- ℹ️ You have [All scripts](https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo#for-developers) available on the monotrepository.
- ℹ️ Feel free to ask questions about your Slack Channel: **#cashing-tech**.


___

### Intrinsic Dependencies

All intrinsic dependencies are stored in a separate on a **Mono repository common** : [https://gitlab.wynd.eu/wynd-product/pos/pos-common](https://gitlab.wynd.eu/wynd-product/pos/pos-common)

**Available common dependencies:**
- UI Component : This library is a subset of **[Material UI](https://material-ui.com/)**.
- Icon Component: This just some svg converted in component libraries
- And others in the future
...


#### Storybook:

This repository build **storybooks** for those libraries: 

- [UI Component](https://wynd-product.pages.gitlab.wynd.eu/pos/core-components/storybook/?path=/story/accordion--default)
- [Icon Component](https://wynd-product.pages.gitlab.wynd.eu/pos/icon-components/storybook/?path=/story/icons-iconalertbell--default)

### Deploy:

On each merge on develop, pipelines launch auto publish job that deploy a dev-version.

## Package implementation:

First be sure to have made all the getting started step.

### Creation:

**⚠ Be careful before starting be sure to have [npx](https://github.com/zkat/npx#readme) globally installed**.

How it write in the [README](https://gitlab.wynd.eu/wynd-product/pos/core-packages/monorepo/blob/develop/README.md#create-a-new-package):

- We should start to make a `yarn create:package`.
- Then follow the questions flow. 
- Be careful to the question `Are you in a mono repository architecture ? ` Say yes.
- At the question `Do you want examples in your pos package ?` you can say yes if you want to have some example of routes, saga, reducers, for begin.
- Then your package have been created in `/packages`.


### Usage in sap:

The second step is to plugin it in your **SAP**.

For that just follow those steps:

- First run a build watch of your fresh package : `yarn build:watch --scope @wynd-pos/my-package`. (To build your package in dev mode)
- Add it in your SAP package.json.
- Go to add it in `/apps/pos-sap-sco-retail/src/config/index.ts`. It regroup all the loaded packages.
```ts
export const config: ISAPConfig = {
    modules: [
        ...
        {
            import: import('@wynd-pos/my-package'),
        }
    ],
};
```
- Go to  type external data with those of the package in: `/apps/pos-sap-sco-retail/src/models/InterfaceExternalData.ts`
- Then run `yarn start:sap-sco-retail`.

Informations:

- ℹ️ The SAP provide the possibility to override the default config provided by your package defined here: `/packages/my-package/src/config/config.ts` with `/apps/pos-sap-sco-retail/src/dataBridge/externalData.ts`.
It can be useful to share some packages between two sap but with a different configurations. It's up to you.
___

## Merge requests

### Review:
Each morning, from 10 am to 11 am [(Paris Time zone)](https://www.google.com/search?q=Paris+Time+zone&oq=Paris+Time+zone&aqs=chrome..69i57.359j0j1&sourceid=chrome&ie=UTF-8), you have to do the review of **[All front chapter](https://gitlab.wynd.eu/groups/wynd-product/-/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&label_name[]=Front)**

### My merge requests

#### How do i submit it ?
 Follow this [gitlab convention](https://wyndcustomers.atlassian.net/wiki/spaces/wyndtech/pages/744129198/POS+Gitlab).

#### How do i name my branchs ?
 Follow this [gitlab convention](https://wyndcustomers.atlassian.net/wiki/spaces/wyndtech/pages/744129198/POS+Gitlab).

#### How it's merge ?
Everybody is responsible of there merge requests, so you have to merge it. But you must have a number of upvote specified by your **Technical manager**.



