gitmyhub

gumroad

Ruby ★ 9.3k updated 8h ago

Sell stuff and see what sticks

Gumroad is the publicly released source code for the Gumroad creator marketplace, a Ruby on Rails app that lets creators sell digital products directly to buyers with no traditional store setup needed.

RubyRuby on RailsJavaScriptMySQLDockerElasticsearchRedisSidekiqsetup: hardcomplexity 4/5

Gumroad is an e-commerce platform that lets creators sell products directly to buyers without needing a traditional online store setup. This repository contains the full source code for the Gumroad web application, which has been made publicly available by the company.

The application is built with Ruby on Rails on the backend and uses JavaScript for the frontend build system. Running it locally requires several tools to be installed first: a specific version of Ruby, Node.js, Docker (used to run supporting services like the database and cache), MySQL 8, and a few media-processing libraries. The README walks through installing all of those prerequisites step by step for both Mac and Linux, with a separate guide for Windows.

Once the setup is complete, starting the application involves three steps: launching the Docker services with a single make command, setting up the database with a Rails command, and then running the development server. The app then becomes available at localhost:3000. Seller-specific subdomains like seller.localhost:3000 also work automatically in modern browsers without any extra configuration.

The setup includes some documented limitations in local development. Features like Apple Pay require a live HTTPS address rather than a local server, and cross-subdomain cookies behave differently on localhost compared to a real domain. The README explains workarounds for both of these situations.

The project uses RSpec for its test suite. Running the full suite requires the Docker services to be running and a test database to be set up separately. Integration tests run in a real Chrome browser via a tool called Capybara and Selenium. The README also mentions an Elasticsearch dependency that needs its search indexes reset on occasion, and a Sidekiq background job worker that runs alongside the main Rails server.

Where it fits