10,131
stars
+11
2,117
forks
105
watchers
7,678
prs
0
issues
1,000
releases
0
discussions
README
See what sticks.
Gumroad is an e-commerce platform that enables creators to sell products directly to consumers. This repository contains the source code for the Gumroad web application.
Contributing
We don't run an inbound review queue on this repo. To contribute a change: fork the repo, open the pull request on your own fork, then email [email protected] with a link to it. We read every submission and merge the ones we want on our side, keeping your authorship — though we can't promise a reply to each one or a timeline.
Your PR still has to meet the same bar as our own work — visual evidence for anything user-facing, QA steps, test results, and an AI disclosure naming the model. See CONTRIBUTING.md for the full guidelines and the substitutions that apply when working from a fork.
Table of Contents
- Contributing
- Getting Started
- Prerequisites
- Installation
- Configuration
- Running Locally
- Testing
- Dependencies
- Integration tests
- Development
- Logging in
- Resetting Elasticsearch indices
- Push Notifications
- Common Development Tasks
- Linting
Getting Started
Prerequisites
💡 If you're on Windows, follow our Windows setup guide instead.
Before you begin, ensure you have the following installed:
Ruby
- https://www.ruby-lang.org/en/documentation/installation/
- Install the version listed in the .ruby-version file
Node.js
- https://nodejs.org/en/download
- Install the version listed in the .node-version file
Docker
We use Docker to setup the services for development environment.
- For MacOS: Download the Docker app from the Docker website
- For Linux:
bash
sudo wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
MySQL & Percona Toolkit
Install a local version of MySQL 8.4.x to match the version running in production.
The local version of MySQL is a dependency of the Ruby mysql2 gem. You do not need to start an instance of the MySQL service locally. The app will connect to a MySQL instance running in the Docker container.
- For MacOS:
bash
brew install [email protected] percona-toolkit
brew link --force [email protected]
to use Homebrew's openssl:
brew install openssl
bundle config --global build.mysql2 --with-opt-dir="$(brew --prefix openssl)"
ensure MySQL is not running as a service
brew services stop [email protected]
- For Linux:
- MySQL:
- https://dev.mysql.com/doc/refman/8.4/en/linux-installation.html
- apt install libmysqlclient-dev
- Percona Toolkit: https://www.percona.com/doc/percona-toolkit/LATEST/installation.html
ImageMagick
We use imagemagick for preview editing.
- For MacOS: brew install imagemagick
- For Linux: sudo apt-get install imagemagick
FFmpeg
We use ffprobe that comes with FFmpeg package to fetch metadata from video files.
- For MacOS: brew install ffmpeg
- For Linux: sudo apt-get install ffmpeg
PDFtk
We use pdftk to stamp PDF files with the Gumroad logo and the buyers' emails.
- For MacOS: Download from here
- Latest release
v2026.11.08.11 v2026.11.08.11 2026-11-08What's Changed Internal Let sellers set profile sections and Discover category before publishing by @gumclaw in https://github.com/antiwork/gumroad/pull/9043 Full Changelog: https://github.com/antiwork/gumroad/compare/v2026.11.08.10...v2026.11.08.11