~ git clone https://git.cass.si/stageup.git

core   Nx  Staging

StageUp is a virtual events platform for performing arts.

Prerequisites

Refer to README.md for installing Git, Node, NPM, Docker, PostgreSQL, Redis & NX.

Then, if you haven't already, you need to pull the project from GitHub to your local machine.

Before doing this, set up an SSH key for GitHub by following GitHub's "Connect with SSH" guide: https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

Then, pull this project onto your machine by entering the following command into a terminal:

git clone git@github.com:StageUp/core.git

Installation

Once you've completed the prereuisites above, for each application, review the setup instructions in each of these files:

For additional documentation on some of these and other topics, see our Notion Software Wiki.

Running npm run start

All packages that are used throughout all apps & libs are defined within a single package.json, for purposes of having consistent versioning across all projects. Run npm install --force in the project root to install all required dependencies. Production builds perform tree-shaking optimization to remove unused libraries, so ensure you always use ES6 import syntax.

Running api-tests

Project Layout

apps
  frontend           # the stageup frontend
    nginx.conf       # nginx config for frontend server
    src.app          # front-end routes, components & services
    src.assets       # media
    src.i18n         # internationalisation files
    src.styles       # global styles & Tailwind imports
  backend            # the stageup backend
    src.modules      # various sections of the backend 
    src.i18n         # internationalisation files, inc. tokens file
    seeder           # database seeder
  api-tests          # integration tests
  reverse-proxy      # nginx reverse proxy for blog/wordpress/prod app

libs                 # where all shared code lives
  interfaces         # shared typescript interfaces
  ui-lib             # frontend generic angular component library
  shared
    api              # shared backend services utilities
      data-client    # utils for interacting with data sources
      entities       # typeorm schema
      event-bus      # event types & contracts
    helpers          # utility functions for backend & frontend

terraform            # IaC automated deployment
  modules            # Terraform Modules, backend, redis etc.
  core               # non-ephemeral infrastructure
  
tools                # non-source code stuff
  generate-xlf       # XLF translation script 
  generate-uml.ts    # creates a plant-uml diagram of models

.github              # github actions
.vscode              # editor settings

nx.json              # nx workspace config
package.json         # where _all_ packages are listed
tsconfig.base.json   # base ts config
workspace.json       # where all apps/libs are defined
docker-compose.yml   # local stack deployment
ship.config.js       # ship.js automated versioning & release config

.env                 # .env for github tokens (deployment only)
.env.example         # example .env
.env.development     # also .env.staging, .testing & .production

i18n & a11y

Useful Tools

Useful VSCode Extensions

Troubleshooting

.env Setup

Below are some common errors we've seen devs experience when setting up their envs:

VSCode