Build the PKI
Loki is an HTTP-based Public Key Infrastructure (PKI) solution that employs Node.js and TypeScript to establish a secure and efficient infrastructure for certificate generation and management. Leveraging Redis as a storage component, Loki ensures the seamless retrieval and storage of certificates. By deploying Loki on Kubernetes, it gains the benefits of scalability and fault tolerance. This PKI solution adheres to the Open Banking specifications, guaranteeing the confidentiality, integrity, and authenticity of certificates. Loki plays a vital role in providing a strong foundation for secure communication and encryption within the open banking environment, enhancing the overall security and trustworthiness of the system.Loki is an HTTP-based Public Key Infrastructure (PKI) solution that employs Node.js and TypeScript to establish a secure and efficient infrastructure for certificate generation and management. Leveraging Redis as a storage component, Loki ensures the seamless retrieval and storage of certificates. By deploying Loki on Kubernetes, it gains the benefits of scalability and fault tolerance. This PKI solution adheres to the Open Banking specifications, guaranteeing the confidentiality, integrity, and authenticity of certificates. Loki plays a vital role in providing a strong foundation for secure communication and encryption within the open banking environment, enhancing the overall security and trustworthiness of the system.
A template for an API using Fastify. Written in TypeScript.
-
Clone the repo
-
Checkout into a new branch with the proper name (feature/xx, refactor/xx, chore/xx... etc.)
-
Write your code + tests (required) and/or update documentation
-
Push changes to the remote branch
-
Create a PR and notify a maintainer and enjoy your day!
- Fastify
- Encapsulation
- Routes
- Plugins
- Logging
- Validation & Serialization
- Hooks
- Swagger Specification
- JSON Schema Specification
.
├── .github # Github specific files (dependabot, workflows... etc.)
├── .husky # husky dir (Readonly)
├── data # contains data for seeding the data
├── server # contains the main files for the backend
│ ├── config # stores configurations (server, logger, env vars... etc.)
│ ├── models # Objection.js models
│ ├── plugins # Custom plugins (auth, security, cache, db... etc.)
│ ├── routes # routes must be place here and versioned
│ │ └── v1 # example version
│ │ ├── accounts # exports subroutes under '/accounts/'
│ │ │ ├── index.js # exports routes login, register and token (and others)
│ │ │ ├── login # example route, mapped to '/api/v1/accounts/login'
│ │ │ │ ├── index.js
│ │ │ │ └── spec.json # JSON schema spec of the login route
│ │ │ ├── register # example route, mapped to '/api/v1/accounts/register'
│ │ │ │ ├── index.js
│ │ │ │ └── spec.json # JSON schema spec of the register route
│ │ │ └── token # example route, mapped to '/api/v1/accounts/token'
│ │ │ ├── index.js
│ │ │ └── spec.json # JSON schema spec of the token route
│ │ └── index.js # exports accounts routes (and others)
│ └── static # contains static assets (robots.txt)
└── tests # written tests go here
- Node.js
- Optional:
docker
&docker-compose
$ yarn dev
# run in development
$ yarn start
# run in production
$ yarn lint
# check for errors
$ yarn fix
# fix any errors
$ yarn test
# run tests
Most tests are ran using our CI (GitHub Actions), but to replicate testing, run the following:
$ docker-compose -f docker-compose.ci.yml up -d
# should download the images and run them in their respective ports
$ export $(cat .env.testing) && npm run test
# inject the testing env vars and run tests
See .env.template
See LICENSE.md