The GC Digital Talent app is divided into multiple services, each treated as its own sub-project:
-
/api
, the API service -
/apps
, (new) location for frontend applications -
/frontend
, an npm project for frontend client code containing multiple workspaces:/admin
, a CRUD-style admin dashboard/common
, code shared by multiple other workspaces/cypress
, e2e testing withCypress
/talentsearch
, pages related to searching and requesting talent from pools
-
/tc-report
, containing static content generated with Jekyll, mostly the Talent Cloud report. This used to be maintained in a separate repo, but now the entire project has been imported into this repo. See/tc-report/README.md
for instructions on how to run Jekyll and re-generate the site content. -
/infrastructure
, support files for the docker infrastructure to run the project- this includes a mock oauth2 server (only used for local development envs)
-
/maintenance
, additional scripts which run inside the docker containers for setup and updates -
/packages
, npm packages used by the/apps
The api, and frontend projects are designed to each run in a separate container. However, since they all use the Laravel framework, they can also be run on a single PHP server, with requests routed carefully between them. This is currently how 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)
- unit testing
- Jest (ReactJS)
- PHPUnit (PHP)
- visual regression Testing
- Storybook (ReactJS components)
- end-to-end testing with Cypress (full app in-browser)
- See
frontend/cypress/README.md
: custom commands, usage tips, plugins, etc.
- See
- security checks (aka security regression testing)
- CodeQL (JavaScript,
TypeScript)
- CodeQL (JavaScript,
As much as possible, we aspire to make these runnable on:
- ⌨️ your local command line
- 💻 your IDE
- ☁️ our continuous integration (CI) 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!
- Make sure virtualization is enabled in your machine's BIOS (this is for Docker Desktop)
- Docker is finicky—try exiting it entirely and restarting it