The backend stores data which cannot be exposed publicly, or which wait legal officer's approval. It was initially written in Java - now deprecated.
This project features:
- A Spring-like framework for Java-boys: Dinoloop
- Web framework: Express
- Dependency Injection: Inversify
- ORM: TypeORM
- Unit testing: Jasmine
- Service Mocking: Moq.ts
- Automated API doc with Swagger: express-oas-generator
- Coverage: nyc
- A PostgreSQL database to connect to
- A PostgreSQL client installed on host
- A logion node to connect to
- IPFS Cluster CLI installed on host
- exiftool installed on host
Authentication process is described here.
For testing purpose, you may generate your own token here and set the following fields:
Header:
{
"alg": "HS384",
"typ": "JWT"
}
Payload:
{
"iat": 1623674099,
"exp": 1823674099,
"legalOfficer": true,
"iss": "localhost",
"sub": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
}
Note that the value of iss must match JWT_ISSUER.
Verify signature: check the "base 64 encoded" box and paste the value of JWT_SECRET.
The generated token may be sent to the API with Authorization: Bearer $TOKEN header. With curl, the command would look like this:
curl -v http://localhost:8090/api/$PATH -H "Authorization: Bearer $TOKEN" ...
First, run a PostgreSQL server:
docker run --name logion-postgres -e POSTGRES_PASSWORD=secret -p 5432:5432 -d logionnetwork/logion-postgres:latest
(or docker start logion-postgres if you already executed the above command).
Then copy the file ormconfig.json.sample to ormconfig.json, and adapt to your database setup if needed.
Create the database schema using yarn typeorm migration:run. More info about DB migrations.
Note that in order to run the backend itself or the integration tests, you'll need psql to be installed locally.
Logion backend is using a custom PostgreSQL image logionnetwork/logion-postgres. It may be built with the following command:
docker build logion-postgres/ -t logionnetwork/logion-postgres:latest
See ./logion-postgres/Dockerfile for more information about the customizations.
By default, the backend connects to ws://localhost:9944, i.e. a logion node running on your local machine.
In order to change this behavior, copy the file .env.sample to .env, and adapt it to match your needs:
WS_PROVIDER_URL: the url to a logion node.NODE_TLS_REJECT_UNAUTHORIZED: equals to 0 to disable certificate verification
yarn start
Coverage report is generated using yarn coverage (all tests) or yarn coverage-unit (unit tests only).
It's located under coverage/index.html.
- The Node is the implementation of the chain.
- The Typescript backend stores data which cannot be exposed publicly, or which wait legal officer's approval.
- The Wallet is the user application.
The backend's Docker image can be built with the following command:
docker build . -t logionnetwork/logion-backend:latest
When building logionnetwork/logion-backend, a build image is required (it is publicly available through hub.docker.com):
logionnetwork/logion-backend-basewhich comes with a preconfigured Node.JS distribution as a pre-installed IPFS Cluster client
logionnetwork/logion-backend-base can be rebuilt with docker build docker/base/ -t logionnetwork/logion-backend-base:vX
where X is a build number.
Update your local node image on a regular time basis docker pull node:18