Skip to content

Project Structure

Vasileios Drosatos edited this page Aug 26, 2021 · 6 revisions

Here we will try to describe the structure of the project in high-level

The repository is structured as Monorepo, meaning that it will contain multiple projects in one code repository. This would be difficult to manage without depending on external packages. This is why we use Lerna and Yarn Workspaces

Let's discuss a bit about the configuration files of the monorepo

lerna.json

Here we define the configuration for the Lerna tool. We have defined the npmClient as yarn because we use the Yarn Workspaces

package.json

This is the root package.json and here we define the dependencies, scripts, configurations that will apply to every package.

Also, we define the workspaces (same as packages in lerna.json) as

"workspaces": [ "packages/*" ],

packages/

In this folder, we include every different project. The root package.json dependencies will be included in every package and each package should define its own package.json

packages/pwa

The main web application that it is deployed in (https://forestrestore.app, https://forestrestoration.gr, https://αποκατάστασηδασών.ελ)

It uses Next.JS, TailwindCSS and it is deployed using Vercel ang Github Actions

packages/shared

In this package we include everything that can be shared to other packages. A very good example is the UI library that we will try to use in other packages.

You can find the code of this UI Library in packages/shared/ui

It uses React.jS, TailwindCSS, HeadlessUI

packages/ui

In this package we include the documentation of the UI library using Storybook. Is is deployed here (https://ui.forestrestore.app/)

It is deployed using Vercel ang Github Actions

Clone this wiki locally