Rafiki is an open source package that exposes a comprehensive set of Interledger APIs. It's intended to be run by wallet providers, allowing them to offer Interledger functionality to their users.
Rafiki is made up of several components including an Interledger connector, a high-throughput accounting database, and an API which can be accessed directly by users to implement Interledger applications.
Rafiki also allows for delegated access, offering OAuth-based flows to grant third-party applications access to Interledger functionality on a user's account.
Never heard of Interledger before, or you would like to learn more? Here are some good places to start:
- Good first issues
- Interledger Explainer Video
- Interledger Website
- Payment pointers
- Web monetization
- Coil developers
Please read the contribution guidelines before submitting contributions. All contributions must adhere to our code of conduct.
Our planning calls are open to our community. We have them every Monday at 16:00 GMT, via Google Meet.
Google Meet joining info
Video call link: https://meet.google.com/rdx-xoqn-iiq
Or dial: (US) +1 408-831-2432 PIN: 472 676 485#
More phone numbers: https://tel.meet/rdx-xoqn-iiq?pin=3263008843276
# install node 16
nvm install lts/gallium
nvm use lts/gallium
# install pnpm
corepack enable
# if moving from yarn run
pnpm clean
# install dependencies
pnpm i
# build all the packages in the repo:
pnpm -r build
# build specific package (backend):
pnpm --filter backend build
# run individual tests
pnpm --filter backend test
pnpm --filter auth test
pnpm --filter open-api test
# run all tests
pnpm -r --workspace-concurrency=1 test
# pull in latest openapi specs for auth server:
pnpm --filter auth fetch-schemas
# format and lint code:
pnpm format
# check lint and formatting
pnpm checks
# verify code formatting:
pnpm check:format
# verify lint
pnpm check:lint
The infrastructure/local directory contains resources for setting up Rafiki in common configurations.
# set up two instances of Rafiki
pnpm localenv up -d
# seed the postgres databases with the auth data creating an admin token
pnpm localenv:seed:auth
# tear down
pnpm localenv down
# delete database volumes (containers must be removed first with e.g. pnpm localenv down)
pnpm localenv:dbvolumes:remove
The local environment consists of a primary Rafiki instance and a secondary Rafiki instance, each with
its own docker compose files (primary, secondary).
The primary docker-compose.yml
includes the main Rafiki services backend
, auth
, and rates
, as well
as the required data stores tigerbeetle, redis, and postgres, so it can be run on its own.
The peer-docker-compose.yml
includes only the Rafiki services, not the data stores. It uses the
data stores created by the primary Rafiki instance so it can't be run by itself.
The pnpm run localenv
command starts both the primary instance and the secondary.