The GC Digital Talent app is divided into multiple services, each treated as its own sub-project:
/api
, API service/apps
, frontend applications/packages
, npm packages used within/apps
/apps/playwright
, e2e testing with Playwright/tc-report
, static content, mostly the Talent Cloud report, generated with Jekyll/infrastructure
, support files for the docker infrastructure to run the project- includes a mock OAuth server (only used for local development environments)
/maintenance
, scripts which run inside the docker containers for setup and updates
The api and frontend projects are both designed to run in separate containers. However, they can also be run on a single server with requests routed carefully between them. This is currently how the docker infrastructure works.
Each sub-project has its own README.md
, with advice on how to contribute to that sub-project. The README files also contain notes on how to configure the sub-projects, but if you simply want to get the project running on a new machine, you may disregard these notes and move straight to the steps below.
We do several types of testing: (internal documentation linked when available)
- code style checks (aka linting)
- ESLint feat. Prettier (JavaScript)
- Pint (PHP)
- unit testing
- Jest (ReactJS)
- PHPUnit (PHP)
- visual regression testing
- Storybook (ReactJS components)
- Check the example component directory for more examples.
- Storybook (ReactJS components)
- end-to-end testing with Playwright (full app in-browser)
- security checks (aka security regression testing)
- CodeQL (JavaScript, TypeScript)
As much as possible, we aspire to make these runnable on:
- ⌨️ your CLI (command-line interface)
- 💻 your IDE (integrated development environment)
- ☁️ our CI (continuous integration) environment
We strongly recommend running the project entirely with Docker. In this case the only dependency you must install on your machine is Docker Desktop.
Then, follow the instructions in /maintenance/README.md
to build the project docker containers and run the build scripts. That should handle everything!
Tip
If using Docker Desktop, make sure virtualization is enabled in your machine's BIOS.