# Scandic Monorepo

This is the monorepo for Scandic Hotels' web projects. It includes multiple apps and packages that together make up the Scandic Hotels web ecosystem.

## What's inside?

### Apps

Inside the `/apps` directory, you'll find our standalone sites and APIs:

- `scandic-web`: [Next.js](https://nextjs.org/) app for our public website [scandichotels.com](https://scandichotels.com).
- `scandic-redirect`: Netlify Functions that handle redirects for `scandic-web`.
- `partner-sas`: [Next.js](https://nextjs.org/) app for our partner site [sas.scandichotels.com](https://sas.scandichotels.com). (⚠️ Work in progress ⚠️)
- `redis-api`: API wrapping [Redis](https://redis.io/) that we use for caching.

### Packages

Inside the `/packages` directory, you'll find our shared libraries and utilities:

- `design-system`: A shared library of styles and components used by our React apps.
- `booking-flow`: This is our booking flow that is used by both `scandic-web` and `partner-sas`. It's built to be used by a [Next.js](https://nextjs.org/) app.
- `trpc`: A [tRPC](https://trpc.io/) data layer that connects our apps and packages to the backend APIs.
- `common`: A collection of shared utilities, helpers and types used across both our apps and our packages.
- `typescript-config`: Shared TypeScript configs for all apps and packages.

> A note about dependencies between our apps and packages:
> In general all apps are allowed to depend on any package, but packages have a few caveats:
>
> `design-system` should never import from `booking-flow` or `trpc`.
> `common` should never import from anything except `typescript-config`.

## Getting Started

To get started, clone this repository and run `yarn install` in the root directory. We use [Turbo](https://turborepo.com/) to handle our monorepo tasks.

See `package.json` for all available scripts, but here's the most commonly used:

- `yarn dev:web`: Start the development server for the `scandic-web` app.
- `yarn dev:sas`: Start the development server for the `partner-sas` app.
- `yarn dev:ds`: Start the development server for the `design-system` package.
- `yarn lint`: Run ESLint and type checking across all apps and packages.
- `yarn test`: Run tests for the codebase.

If this is the first time you are running one of our apps you can run `yarn env:web` or `yarn env:sas` to see what environment variables you need for those apps.

For more details see the respective apps and packages' README files.

## More documentation

- [Icons](./docs/icons.md)
- [Payment](./docs/payment.md)
- [Translations (i18n)](./docs/translations.md)
