{"id":13668833,"url":"https://github.com/GaloyMoney/blink","last_synced_at":"2025-04-27T01:32:03.694Z","repository":{"id":36997896,"uuid":"348296522","full_name":"GaloyMoney/blink","owner":"GaloyMoney","description":"bitcoin banking infrastructure","archived":false,"fork":false,"pushed_at":"2025-04-20T16:57:37.000Z","size":61098,"stargazers_count":383,"open_issues_count":124,"forks_count":147,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-20T17:40:25.888Z","etag":null,"topics":["bitcoin","community-banking","cryptocurrency","lightning-network","payments"],"latest_commit_sha":null,"homepage":"https://galoy.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GaloyMoney.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-16T10:02:03.000Z","updated_at":"2025-04-20T16:57:41.000Z","dependencies_parsed_at":"2023-09-28T11:06:40.262Z","dependency_job_id":"be8af02d-6328-4df8-929c-85f254549130","html_url":"https://github.com/GaloyMoney/blink","commit_stats":null,"previous_names":["galoymoney/blink"],"tags_count":1572,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaloyMoney%2Fblink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaloyMoney%2Fblink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaloyMoney%2Fblink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GaloyMoney%2Fblink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GaloyMoney","download_url":"https://codeload.github.com/GaloyMoney/blink/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251077102,"owners_count":21532607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","community-banking","cryptocurrency","lightning-network","payments"],"created_at":"2024-08-02T08:00:50.417Z","updated_at":"2025-04-27T01:31:58.673Z","avatar_url":"https://github.com/GaloyMoney.png","language":"TypeScript","funding_links":[],"categories":["Tech components"],"sub_categories":["Backend"],"readme":"# Galoy\n\n[![Mattermost](https://img.shields.io/badge/chat-on%20mattermost-blue?style=social\u0026logo=mattermost)](https://chat.galoy.io)\n[![GitHub Repo stars](https://img.shields.io/github/stars/GaloyMoney/galoy?style=social)](https://github.com/GaloyMoney/galoy/stargazers)\n[![Twitter Follow](https://img.shields.io/twitter/follow/GaloyMoney?style=social)](https://twitter.com/GaloyMoney)\n\n## 💡 Get help\n[Q\u0026A](https://github.com/GaloyMoney/galoy/discussions) or [Mattermost 💬](https://chat.galoy.io)\n\n## TLDR\n\nGaloy is an opinionated Bitcoin banking platform.\n\nThis repo represents the main API that brings all functionality together.\n\n## Responsible Disclosure\n\nFound critical bugs/vulnerabilities?\nPlease contact our team by email at security@galoy.io . \n\n## Get Started\n\nWant to try it out and contribute? Check out the [dev documentation](./docs/DEVELOPMENT_ENVIRONMENT.md) to deploy locally with a docker-compose script.\n\nIf you have questions, you can [join our Workspace](https://chat.galoy.io)\n\nFor an overview of all relevant repositories checkout [awesome-galoy](https://github.com/GaloyMoney/awesome-galoy).\n\n## Galoy-Backend features\n\n- GraphQL API:\n  - Public API following industry best practices\n  - [Schema for end clients](./core/api/src/graphql/public/schema.graphql)\n    - [Reference](https://dev.galoy.io/public-api-reference.html)\n    - [Documentation for the Blink hosted instance](https://dev.blink.sv)\n  - [Schema for admin activities](./core/api/src/graphql/admin/schema.graphql)\n    - [Reference](https://dev.galoy.io/admin-api-reference.html)\n- Authentication:\n  - Dedicated REST API to obtain an authentication token by logging in with:\n    - phone by receiving a code via SMS or Whatsapp using Twilio\n    - email by receiving a code via email\n  - OAuth is integrated to be used in the Dashboard (example: [Blink Dashboard](https://dashboard.blink.sv))\n  - Account scoped API keys can be created in the Dashboard with custom permissions and expiry\n- Internal ledger:\n  - Records all account activity via double entry accounting\n  - Supports several fiat currencies\n  - CSV based export of all accounting data\n- Contact list for frequent transaction partners\n- Price\n  - Sub-second [price data](https://github.com/GaloyMoney/price) polled from the largest exchanges to record USD value at settlement\n  - Historical price data can be queried for display for different time frames\n- Send / Receive BTC payments\n  - External settlement via lightning or onchain\n  - Automatic internal settlement when payer \u0026 payee are on the same galoy instance\n  - Fees can be applied for sending / receiving for all settlement methods\n  - Support for tipping via [dedicated web-frontend](https://github.com/GaloyMoney/galoy-pay)\n  - Include memos to payments\n  - Advanced onchain functions via [Bria](https://github.com/GaloyMoney/bria)\n    - advanced fee estimation\n    - automatic transaction batching\n    - automated CPFP to avoid stuck payments\n    - PSBT based remote signing\n- Lightning Network\n  - Support for clearnet and Tor\n  - Support for invoices with and without a specified amount\n  - Route probing to pre-display an accurate fee and mitigate attacks based on expensive routing\n  - Static Channel Backup backup to S3 and Google Cloud storage\n  - Automatic liquidity management\n    - Balancing of channels between the internal nodes\n    - Submarine swaps\n- Custodial storage of all user assets\n  - Limited funds stored in hot-wallet (keys kept on servers)\n  - Threshold based rebalancing to cold-storage (keys stored on offline hardware devices)\n- Security:\n  - [Velocity check](https://www.linkedin.com/pulse/velocity-checks-fraud-prevention-scott-stone/) based on user verification level\n  - Spam protection for sharing memos\n  - Configurable 2fa for payments (in progress)\n  - DDoS prevention\n    - via rate limiting infront of critical APIs\n    - via geetest CAPTCHA\n- Resilience\n  - Databases (PostgreSQl, MongoDB and Redis) are run by default in high availability/resilience mode. If one pod/node goes down, there is an automatic failover on another pod/node.\n- Production ready\n  - Supports horizontal scaling and highly available deployments via k8s\n  - Client side load balancing across multiple LND nodes\n  - Out-of-the-box dashboards for KPIs deployed to Grafana showing metrics exported via Prometheus\n  - Quick response times thanks to the pagination of large data sets\n  - Returning error codes for full translation capability of the frontend\n  - Instrumentation enabled for real-time insights into production runtime ([opentelemetry](https://opentelemetry.io) / [honeycomb](https://www.honeycomb.io))\n- User onboarding (optional)\n  - Gamification via user quiz that pays out sats\n  - Map of in-network merchants\n- Notifications\n  - Mobile clients can receive notifications of balance changes in real-time\n  - Optional notification of balance for active end users\n\n## Local Development Setup\n\nRunning the Galoy software locally can be done in a variety of ways, but this abbreviated section will focus on a single method for\ngetting your environment ready to run the stack.\nFor more information and options on running Galoy locally, see the [development environment documentation](./docs/DEVELOPMENT_ENVIRONMENT.md).\n\n### (1) Choose a Supported Platform\n\nCurrently developing on MacOS and Linux is supported.\n\n### (2) Install Dependencies\n\nInstall dependencies on your chosen platform.\n\n- **1)** [`nix` with flakes enabled](https://github.com/DeterminateSystems/nix-installer)\n- **2)** `docker` from [Docker Desktop](https://www.docker.com/products/docker-desktop/) or [Docker Engine](https://docs.docker.com/engine/)\n- **3a)** [`direnv`](https://direnv.net) version `\u003e= 2.30` installed\n- **3b)** [`direnv` hooked into your shell](https://direnv.net/docs/hook.html)\n\nFor `nix`, we highly recommend using the [Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer).\n\nFor `docker`, the Docker Desktop version corresponding to your native architecture should be used.\n\nFor `direnv`, you can install it with [your package manager of choice](https://direnv.net/docs/installation.html).\nHowever, if you're unsure which installation method to use or your package manager does not provide a compatible version,\nyou can use `nix` itself (e.g. `nix profile install nixpkgs#direnv`).\n\n\u003e We recommend using [the upstream docs for hooking `direnv` into your shell](https://direnv.net/docs/hook.html), but here is an example on how to do it\n\u003e on a system where `zsh` is the default shell.\n\u003e In this example, the following is added to the end of `~/.zshrc`.\n\u003e\n\u003e ```zsh\n\u003e if [ $(command -v direnv) ]; then\n\u003e    eval \"$(direnv hook zsh)\"\n\u003e fi\n\u003e ```\n\n### (3) Enter the Repository Directory\n\nAll commands need to be run from the `nix` environment.\nSince `direnv` is installed _and_ hooked into your shell, you can `cd` into\nthe repository and `nix` will bootstrap the environment for you using the flake.\n\n_Please note: you may notice a large download of dependencies when entering the repository for the first time._\n\n### (4) Running the Stack\n\nWe use [**buck2**](https://github.com/facebook/buck2) to run the stack, run and build individual services and libraries, perform lints and tests, etc.\n\n_Before continuing, you should stop any locally running services to avoid conflicting ports with the stack.\nSome of the services that will run include, but are not limited to the following: PostgreSQL, OpenTelemetry, MongoDB.\n\nCheck if you are ready to run the stack before continuing.\n\n```bash\nbuck2 run dev:healthcheck\n```\n\nYou may notice some checks related to resource limits.\nOn macOS and in WSL2 in particular, we recommend significantly increasing the file descriptor limit for `buck2` to work as intended (e.g. `ulimit -n 10240`).\n_Please note: the new file descriptor limit may not persist to future sessions._\n\nOnce ready, we can build relevant services and run the entire stack locally.\n\n```bash\nbuck2 run dev:up\n```\n\nOnce Tilt starts, you can check on the status of all services by accessing the UI through the given port on your local host (e.g. [http://localhost:10350/](http://localhost:10350/)).\nEvery service should eventually have a green checkmark next to them, which ensures that they are in \"ready\" states.\n\n\n### (5) Test account credentials\n\nFor account login on regtest, you can input any random mobile number and then use `000000` as the OTP.\n\n### (6) Troubleshooting in Tilt\n\nIf some services fail to start, you can restart them on the Tilt dashboard.\n\n### (7) Tearing Down the Stack\n\nThe following command will stop all running services and containers.\nIt will also remove the containers and, consequentially, the data held in them.\n\n```bash\nbuck2 run dev:down\n```\n\n## Run integration tests with Galoy as a dependency?\n\nTake a look at the [Quickstart](./quickstart) if you want to take it for a spin.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGaloyMoney%2Fblink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGaloyMoney%2Fblink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGaloyMoney%2Fblink/lists"}