A voluntary, non-partisan collective whose aim is to offer legal, peaceful and sovereign tools to as many citizens as possible, to enable banking emancipation and resilience.
- Features
- Tech Stack
- Getting Started
- Available Commands
- Merchant Data
- Map Routing
- Internationalization
- Tutorials
- Assets and Media
- Running Tests
- Contributing
- Security
- License
- Interactive map of merchants accepting Bitcoin, Monero, and Δ 1 (June)
- Directory of professionals who accept these cryptocurrencies
- Dedicated Pro Space to assist businesses in offering crypto payments in-store
- Blog and tutorials section to educate users and merchants
- Ruby on Rails 8 β Full-stack web framework optimized for productivity.
- Solid Queue β Active Job adapter using the database as a durable queue backend.
- Solid Cable β Action Cable adapter backed by the database.
- Solid Cache β In-database caching engine integrated with Rails.
- SQLite β Lightweight, serverless SQL database.
- Hotwire β Modern HTML-over-the-wire framework for reactive UIs.
- Importmap β Load JavaScript modules directly in the browser, no bundler required.
- Slim β Lightweight templating engine with clean syntax.
- DaisyUI β Tailwind CSS component library for building UI elements quickly.
- Kamal β Lightweight Docker-based deployment tool maintained by the Rails team.
- RSpec β Behavior-driven development testing framework for Ruby and Rails.
- Rubocop β Ruby code linter and formatter following community conventions.
-
Ruby >= 3.4.4
Recommended installation method: mise β a minimal, fast, and dependable Ruby installer.
See the official Rails guide for details: Installing Ruby on Rails -
SQLite 3
$ git clone https://github.com/Unbanked0/bank_exit
$ cd bank_exit
$ bin/setup
Tip
Website is now ready to be accessed at http://localhost:3000 ! π
To initially populate the database with merchants data, run the command in a Rails console:
β― bin/rails console
bank-exit(dev)> FetchMerchants.call
Warning
This process would take few hours because an individual geocoding call is involved for each row to get the country code.
To speed up process, comment the Merchants::AssignCountry.call
in the FetchMerchants service to skip the country data.
bin/dev
β Start processes defined in Procfile (web and css)bin/rails server
β Start the Rails server onlybin/rails db:migrate
β Run migrations to databasebin/rails sitemap:refresh:no_ping
β Regenerate the sitemapbundle exec chusaku
β Annotate Rails controllers with route info
Merchant data that populate the map are retrieved dynamically from the Overpass API.
A recurring task, managed by SolidQueue, runs every 6 hours to automatically refresh merchants data.
A manual refresh button is still possible in the maps#index
page.
Itinerary is calculated by the OSRM Routing API that detects the fastest way by car.
Adresses autocomplete are fetched from the Nominatim API through the geocoder gem.
Refer to the Wiki article to add or update a new locale.
Refer to the Wiki article to add or update a tutorial article.
- Background images are coming from Unsplash.
- SVG icons are taken from Lucide icons.
- Map markers are extracted from spritesheet.svg.
- Contact brands icons are coming from official website or Wikipedia.
Before submitting any changes, please ensure the test suite passes:
$ bin/rspec
We welcome contributions!
- Please read CONTRIBUTING.md before submitting a pull request.
- Look for issues labeled
good first issue
orhelp wanted
.
This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3). See the LICENSE file for the full license text and details.
The AGPLv3 license ensures that the source code and any modifications remain open and that users interacting with the software over a network can receive the source code.