Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/interledger/rafiki
An open-source, comprehensive Interledger service for wallet providers, enabling them to provide Interledger functionality to their users.
https://github.com/interledger/rafiki
hacktoberfest hacktoberfest-accepted hacktoberfest2022 ilp interledger rafiki webmonetization
Last synced: 6 days ago
JSON representation
An open-source, comprehensive Interledger service for wallet providers, enabling them to provide Interledger functionality to their users.
- Host: GitHub
- URL: https://github.com/interledger/rafiki
- Owner: interledger
- License: apache-2.0
- Created: 2021-04-12T19:05:57.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-04T01:13:05.000Z (8 days ago)
- Last Synced: 2025-01-04T02:26:00.476Z (8 days ago)
- Topics: hacktoberfest, hacktoberfest-accepted, hacktoberfest2022, ilp, interledger, rafiki, webmonetization
- Language: TypeScript
- Homepage: https://rafiki.dev/
- Size: 202 MB
- Stars: 305
- Watchers: 20
- Forks: 88
- Open Issues: 94
-
Metadata Files:
- Readme: README.md
- Contributing: .github/contributing.md
- License: LICENSE
- Code of conduct: .github/code_of_conduct.md
Awesome Lists containing this project
- awesome-sustainable-finance - rafiki - An open-source, comprehensive Interledger service for wallet providers, enabling them to provide Interledger functionality to their users. (Social Finance / Financial Inclusion)
- awesome-sustainable-finance - rafiki - An open-source, comprehensive Interledger service for wallet providers, enabling them to provide Interledger functionality to their users. (Open Source Frameworks (Models and Tools) / Social Finance)
README
# Rafiki
![Rafiki](https://github.com/interledger/rafiki/assets/20246798/528b1978-0e02-4bc4-a6b4-e8e81d2f3c3a)
## What is Rafiki?
Rafiki is open source software that provides an efficient solution for an [account servicing entity](https://rafiki.dev/resources/glossary#account-servicing-entity-ase) to enable Interledger functionality on its users' accounts.
This includes
- sending and receiving payments (via [SPSP](https://rafiki.dev/resources/glossary#simple-payment-setup-protocol-spsp) and [Open Payments](https://rafiki.dev/overview/concepts/open-payments))
- allowing third-party access to initiate payments and view transaction data (via [Open Payments](https://rafiki.dev/overview/concepts/open-payments))**❗ Rafiki is intended to be run by account servicing entities only and should not be used in production by non-regulated entities.**
Rafiki is made up of several components, including an Interledger connector, a high-throughput accounting database called [TigerBeetle](https://rafiki.dev/overview/concepts/accounting#tigerbeetle), and several APIs:
- the [Admin APIs](https://rafiki.dev/apis/graphql/admin-api-overview) to create [peering relationships](https://rafiki.dev/overview/concepts/interledger#peers),
add supported [assets](https://rafiki.dev/overview/concepts/accounting#assets), and issue [wallet addresses](https://rafiki.dev/resources/glossary#wallet-address)
- the [Open Payments](https://rafiki.dev/overview/concepts/open-payments) API to allow third parties (with the account holder's consent) to initiate payments and to view the transaction history
- the [SPSP](https://rafiki.dev/resources/glossary#simple-payment-setup-protocol-spsp) API for simple Interledger PaymentsAdditionally, this package also includes a reference implementation of a [GNAP](https://rafiki.dev/resources/glossary#grant-negotiation-and-authorization-protocol-gnap) authorization server, which handles the access control for the Open Payment API. For more information on the architecture, check out the [Architecture documentation](https://rafiki.dev/resources/architecture).
### New to Interledger?
Never heard of Interledger before? Or would you like to learn more? Here are some excellent places to start:
- [Interledger Website](https://interledger.org/)
- [Interledger Specs](https://interledger.org/rfcs/0027-interledger-protocol-4/)
- [Interledger Explainer Video](https://twitter.com/Interledger/status/1567916000074678272)
- [Open Payments](https://openpayments.dev/)
- [Web monetization](https://webmonetization.org/)## Contributing
Please read the [contribution guidelines](.github/contributing.md) before submitting contributions. All contributions must adhere to our [code of conduct](.github/code_of_conduct.md).
## Community Calls
Our Rafiki community calls are open to our community members. We have them every Tuesday at 14:30 GMT, via Google Meet.
**Google Meet joining info**
Video call link: https://meet.google.com/sms-fwny-ezc
Or dial: (GB) +44 20 3956 0467 PIN: 140 111 239#
More phone numbers: https://tel.meet/sms-fwny-ezc?pin=5321780226087
[Add to Google Calendar](https://calendar.google.com/calendar/event?action=TEMPLATE&tmeid=YjN1NW5ibDloN2dua2IwM2thOWlrZXRvMTVfMjAyMzA0MTdUMTUwMDAwWiBjX2NqMDI3Z21oc3VqazkxZXZpMjRkOXB2bXQ0QGc&tmsrc=c_cj027gmhsujk91evi24d9pvmt4%40group.calendar.google.com&scp=ALL)
## Local Development Environment
### Prerequisites
- [Docker](https://docs.docker.com/get-docker/)
- [NVM](https://github.com/nvm-sh/nvm)### Environment Setup
```sh
# install node from `./.nvmrc`
nvm install
nvm use# install pnpm
corepack enable# if moving from yarn run
pnpm clean# install dependencies
pnpm i
```### Local Development
The Rafiki local environment is the best way to explore Rafiki locally. The [localenv](localenv) directory contains instructions for setting up a local playground. Please refer to the README for each individual package for more details.
### Useful commands
```sh
# build all the packages in the repo:
pnpm -r build# build specific package (e.g. backend):
pnpm --filter backend build# generate types from specific package GraphQL schema:
pnpm --filter backend generate# run individual tests (e.g. backend)
pnpm --filter backend test# run all tests
pnpm -r --workspace-concurrency=1 test# format and lint code:
pnpm format# check lint and formatting
pnpm checks# verify code formatting:
pnpm check:prettier# verify lint
pnpm check:lint
```