Main service used to handle all country services in TC tool - TC-Tool.
Supported by Initiative for Climate Action Transparency - ICAT.
Built using Node.js 20.9.0 and Nest framework.
This application uses a MySQL Database. The Main.sql
configuration file containing the database schema and some dummy data is provided in the root folder.
-
Download and install the Node.js 20.9.0 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 the previous step - Add a service name
- Select the application region
- Select
Allow unauthenticated invocations
in the Authentication option - In the Container section:
- Select Container port 7080
- 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(*) |
MAIN_URL |
Main service url(*) |
AUTH_URL |
Auth service url(*) |
AUDIT_URL |
Audit service url(*) |
ClientURl |
Country application url(*) |
EMAIL |
email for email service(*) |
EMAIL_PASSWORD |
email password(*) |
EMAIL_HOST |
email host(*) |
KEY |
system security key(*) |
JWT_expiresIn |
jwt verification token expiration tome(*) |
JWT_VERIFICATION_TOKEN_SECRET |
jwt verification token(*) |
PROJECT_ID |
Google clud project id(*) |
PRIVATE_KEY |
Service account privat key(*) |
CLIENT_EMAIL |
service aacount clien email(*) |
STORAGE_MEDIA_BUCKET |
Cloud Bucket name(*) |
(*) 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.
Nest is MIT licensed.