Backend service for ICAT Climate Action Assessment Tool for Transport Sector - TraCAD.
Supported by Initiative for Climate Action Transparency - ICAT.
Built using Node.js 16 and Nest framework.
This application uses a MySQL Database. The ICAT-calculation engine.sql
configuration file containing the database schema and some dummy data is provided in the root folder.
-
Download and install the Node.js 16 LTS version for your operational system.
-
Download or clone this repository.
-
In the terminal, go to this repository's main folder.
-
Install the NPM dependencies (including Nest) with the command:
$ npm install --force
- Set up the Environment Variables
-
In the machine:
- Windows: using the
set
command in the terminal - Linux/MacOS: using the
export
command in the terminal
- Windows: using the
-
Or creating a
.env
file using.env.example
as base
- Run the app:
$ npm run start
This is an example cloud installation using Docker and Google Cloud Plataform. The provided
Dockerfile
can be used for local or cloud installation with different services.
-
In GCP Console, go to Artifact Registry and enable the Artifact Registry API
-
In the Artifact Registry, create a new repository:
- Format: Docker
- Type: Standard
- Location: desired application location
- Encryption: Google-managed key
-
Download and install gcloud CLI.
-
Download or clone this repository.
-
In the terminal, go to this repository's main folder.
-
Build your container in the Artifacts Register using the provided
Dockerfile
. The container path can be found on the Artifact Registry's repository page.
$ gcloud builds submit --tag [CONTAINER PATH]
- Go to Cloud Run and create a New Service:
- Choose the option
Deploy one revision from an existing container image
and select the container image updated in Step 6 - Add a service name
- Select the application region
- Select
Allow unauthenticated invocations
in the Authentication option - In the Container section:
- Select Container port 8082
- Add the Environment Variables
- Add the Cloud SQL connections
- Choose the option
Noticed that some special permissions in GCP can be necessary to perform these tasks.
The environment variables should be declared as follow:
Variable name | Description |
---|---|
PORT |
Application Port |
DATABASE_HOST |
Database Host(*) |
SOCKET_PATH |
Database Socket Path(*) |
DATABASE_PORT |
Database Port |
DATABASE_USER |
Database Socket User |
DATABASE_PASSWORD |
Database Password |
DATABASE_NAME |
Database Name |
API_KEY_1 |
API key. Should be the same as used by clients |
API_KEY_2 |
API key. Should be the same as used by clients |
(*) Can be used the Database Host or the Database Socket Path depending of the database configuration
After the application installation, the API Documentation is available in the application URL + /api/
with Swagger.
This application provides API service to CountryPortalService, CountryScheduler, CountryPortalWeb and PMUScheduler applications.
The complete dependency diagram of TraCAD Country and PMU applications:
TraCAD - CountryPortalService is Affero GPL licensed.