[![CI Checks](https://github.com/Salable/gds/actions/workflows/ci.yml/badge.svg)](https://github.com/Salable/gds/actions/workflows/ci.yml)&nbsp;
[![License Checker](https://github.com/Salable/gds/actions/workflows/license-checker.yml/badge.svg)](https://github.com/Salable/gds/actions/workflows/license-checker.yml)&nbsp;
[![Release](https://github.com/Salable/gds/actions/workflows/release.yml/badge.svg)](https://github.com/Salable/gds/actions/workflows/release.yml)&nbsp;
<img src="https://img.shields.io/npm/v/@salable/gds">

# Salable-GDS

This monorepository contains all of the core Salable components, known as the Salable Global Design System (Abbreviated to `Salable GDS` or just `GDS`), and is bootstrapped with Yarn.

## Getting Started

In this section is everything you need to do and know about to get the Salable GDS up and running on your local machine.

### Prerequisites

Before starting the setup of the Salable GDS on your local machine, there are a few housekeeping tasks that need to be sorted first.

> **NOTE**: This README has been written from the perspective of a macOS user, if you are configuring this on a different OS such as Windows or Linux then you will likely need to find/use equivalents for things like Brew and folder directories like root (`~`) (windows).

#### Node/NPM

As with most projects nowadays we need Node and NPM installed on our machine for the app to run. I won't go into the details of installing Node.js here but instead will refer you to using `NVM` to [install Node](https://github.com/nvm-sh/nvm)

At the time of writing we don't have an agreed-upon version of Node to run but as a rule of thumb, for now, install Node LTS or higher.

> **TODO:** Update the above statement once we have an agreed version of Node and everyone is using it. Then bump accordingly as we update.

#### Yarn

Following the installation of Node/NPM, we need to install Yarn as we make use of Yarn Workspaces in this monorepo.

To install Yarn globally run the command `npm i -g yarn` in your terminal.

### Repo Setup

To get started with configuring the repo locally, clone it from [GitHub](https://github.com/Salable/gds) to a location of your choosing on your machine. Once the clone is complete, open the directory in your favourite IDE.

#### Installing Dependencies

Now we are ready to install packages and get the app up and running. 🙌

First of all, we need to run `yarn install` in the root directory to install all of the dependencies for all of the packages throughout the monorepo. This is achieved via Yarn Workspaces. After installation all of the packages will be stored in a central `node_modules` at the project root level.

Once that is done, run `yarn build:packages` to build and compile all local packages, follow this with `yarn install` again to install the compiled packages to the repositories.

The Salable GDS should now be installed and ready to go. 🎉

## Running Salable GDS Locally

Everything you need to know about running the Salable GDS locally from your first time to your n<sup>th</sup> time.

### Initial Setup

To run the Salable GDS locally, you will need one terminal window open.

In the terminal window, run the command `yarn storybook` in the `salable-gds` folder to start the development server. At this point, a new browser window should open to `http://localhost:6006/`.

You will now have access to the Salable GDS.

## Conventions

> **NOTE**: commits to this repository must follow the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) git commit specification, this is handled automatically by the `npm run commit` script

- The repository implements `commitizen` for conventional commits
- The `yarn commit` command must be run in order to create a commit first
