[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7656":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},7656,"gumroad","antiwork\u002Fgumroad","antiwork","Sell stuff and see what sticks","https:\u002F\u002Fgumroad.com",null,"Ruby",9214,1949,81,5,0,7,38,153,34,108.87,"MIT License",false,"main",[],"2026-06-12 04:00:35","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource srcset=\"https:\u002F\u002Fpublic-files.gumroad.com\u002Flogo\u002Fgumroad-dark.svg\" media=\"(prefers-color-scheme: dark)\">\n    \u003Csource srcset=\"https:\u002F\u002Fpublic-files.gumroad.com\u002Flogo\u002Fgumroad.svg\" media=\"(prefers-color-scheme: light)\">\n    \u003Cimg src=\"https:\u002F\u002Fpublic-files.gumroad.com\u002Flogo\u002Fgumroad.svg\" width=\"714\" alt=\"Gumroad logo\">\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Sell your stuff. See what sticks.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgumroad.com\">Gumroad\u003C\u002Fa> 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.\n\u003C\u002Fp>\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Configuration](#configuration)\n  - [Running Locally](#running-locally)\n- [Development](#development)\n  - [Logging in](#logging-in)\n  - [Resetting Elasticsearch indices](#resetting-elasticsearch-indices)\n  - [Push Notifications](#push-notifications)\n  - [Common Development Tasks](#common-development-tasks)\n  - [Linting](#linting)\n\n## Getting Started\n\n### Prerequisites\n\n> 💡 If you're on Windows, follow our [Windows setup guide](docs\u002Fdevelopment\u002Fwindows.md) instead.\n\nBefore you begin, ensure you have the following installed:\n\n#### Ruby\n\n- https:\u002F\u002Fwww.ruby-lang.org\u002Fen\u002Fdocumentation\u002Finstallation\u002F\n- Install the version listed in [the .ruby-version file](.\u002F.ruby-version)\n\n#### Node.js\n\n- https:\u002F\u002Fnodejs.org\u002Fen\u002Fdownload\n- Install the version listed in [the .node-version file](.\u002F.node-version)\n\n#### Docker\n\nWe use Docker to setup the services for development environment.\n\n- For MacOS: Download the Docker app from the [Docker website](https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop)\n- For Linux:\n\n```bash\nsudo wget -qO- https:\u002F\u002Fget.docker.com\u002F | sh\nsudo usermod -aG docker $(whoami)\n```\n\n#### MySQL & Percona Toolkit\n\nInstall a local version of MySQL 8.0.x to match the version running in production.\n\nThe 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.\n\n- For MacOS:\n\n```bash\nbrew install mysql@8.0 percona-toolkit\nbrew link --force mysql@8.0\n\n# to use Homebrew's `openssl`:\nbrew install openssl\nbundle config --global build.mysql2 --with-opt-dir=\"$(brew --prefix openssl)\"\n\n# ensure MySQL is not running as a service\nbrew services stop mysql@8.0\n```\n\n- For Linux:\n  - MySQL:\n    - https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.0\u002Fen\u002Flinux-installation.html\n    - `apt install libmysqlclient-dev`\n  - Percona Toolkit: https:\u002F\u002Fwww.percona.com\u002Fdoc\u002Fpercona-toolkit\u002FLATEST\u002Finstallation.html\n\n#### Image Processing Libraries\n\n##### ImageMagick\n\nWe use `imagemagick` for preview editing.\n\n- For MacOS: `brew install imagemagick`\n- For Linux: `sudo apt-get install imagemagick`\n\n##### libvips\n\nFor newer image formats we use `libvips` for image processing with ActiveStorage.\n\n- For MacOS: `brew install libvips`\n- For Linux: `sudo apt-get install libvips-dev`\n\n#### FFmpeg\n\nWe use `ffprobe` that comes with `FFmpeg` package to fetch metadata from video files.\n\n- For MacOS: `brew install ffmpeg`\n- For Linux: `sudo apt-get install ffmpeg`\n\n#### PDFtk\n\nWe use [pdftk](https:\u002F\u002Fwww.pdflabs.com\u002Ftools\u002Fpdftk-server\u002F) to stamp PDF files with the Gumroad logo and the buyers' emails.\n\n- For MacOS: Download from [here](https:\u002F\u002Fwww.pdflabs.com\u002Ftools\u002Fpdftk-the-pdf-toolkit\u002Fpdftk_server-2.02-mac_osx-10.11-setup.pkg)\n  - **Note:** pdftk may be blocked by Apple's firewall. If this happens, go to Settings > Privacy & Security and click \"Open Anyways\" to allow the installation.\n- For Linux: `sudo apt-get install pdftk`\n\n#### wkhtmltopdf\n\nWhile generating invoices, to convert HTML to PDF, PDFKit expects [wkhtmltopdf](https:\u002F\u002Fwkhtmltopdf.org\u002F) to be installed on your system. [Download](https:\u002F\u002Fwkhtmltopdf.org\u002Fdownloads.html) and install the version 0.12.6 for your platform.\n\n- **Note** similar to pdftk, this may also be blocked by Apple's firewall on MacOS. Follow a similar process as above.\n\n### Installation\n\n#### Bundler and gems\n\nWe use Bundler to install Ruby gems.\n\n```shell\ngem install bundler\n```\n\nInstall gems:\n\n```shell\nbundle install\n```\n\nAlso make sure to install `dotenv` as it is required for some console commands:\n\n```shell\ngem install dotenv\n```\n\n#### npm and Node.js dependencies\n\nMake sure the correct version of `npm` is enabled:\n\n```shell\ncorepack enable\n```\n\nInstall dependencies:\n\n```shell\nnpm install\n```\n\n### Configuration\n\n#### Set up Custom credentials\n\nApp can be booted without any custom credentials. But if you would like to use services that require custom credentials (e.g. S3, Stripe, Resend, etc.), you can copy the `.env.example` file to `.env` and fill in the values.\n\n### Running Locally\n\n#### Start Docker services\n\nIf you installed Docker Desktop (on a Mac or Windows machine), you can run the following command to start the Docker services:\n\n```shell\nmake local\n```\n\nIf you are on Linux, or installed Docker via a package manager on a mac, you may have to manually give docker superuser access to open ports 80 and 443. To do that, use `sudo make local` instead.\n\nThis command will not terminate. You run this in one tab and start the application in another tab.\nIf you want to run Docker services in the background, use `LOCAL_DETACHED=true make local` instead.\n\n#### Set up the database\n\n```shell\nbin\u002Frails db:prepare\n```\n\nFor Linux (Debian \u002F Ubuntu) you might need the following:\n\n- `apt install libxslt-dev libxml2-dev`\n\n#### Start the application\n\n```shell\nbin\u002Fdev\n```\n\nThis starts the Rails server, the JavaScript build system, and a Sidekiq worker.\n\nYou can now access the application at `https:\u002F\u002Fgumroad.dev`.\n\n## Development\n\n### Logging in\n\nYou can log in with the username `seller@gumroad.com` and the password `password`. The two-factor authentication code is `000000`.\n\nRead more about logging in as a user with a different team role at [Users & authentication](docs\u002Fusers.md).\n\n### Resetting Elasticsearch indices\n\nYou will need to explicitly reindex Elasticsearch to populate the indices after setup, otherwise you will see `index_not_found_exception` errors when you visit the dev application. You can reset them using:\n\n```ruby\n# Run this in a rails console:\nDevTools.delete_all_indices_and_reindex_all\n```\n\n### Push Notifications\n\nTo send push notifications:\n\n```shell\nINITIALIZE_RPUSH_APPS=true bundle exec rpush start -e development -f\n```\n\n### Common Development Tasks\n\n#### Rails console:\n\n```shell\nbin\u002Frails c\n```\n\n#### Rake tasks:\n\n```shell\nbin\u002Frake task_name\n```\n\n### Linting\n\nWe use ESLint for JS, and Rubocop for Ruby. Your editor should support displaying and fixing issues reported by these inline, and CI will automatically check and fix (if possible) these.\n\nIf you'd like, you can run `git config --local core.hooksPath .githooks` to check for these locally when committing.\n\n## Common Issues\n\n### macOS Error When Running Tests (Related to `fork()`)\n\n```\nobjc[11912]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called.\nobjc[11912]: +[__NSCFConstantString initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.\n```\n\nThis issue occurs on macOS due to how the `fork()` system call interacts with multithreaded Objective-C applications—commonly triggered when Spring is enabled during testing.\n\n#### How to Fix:\n\nTemporarily disable Spring before running your tests to avoid this error.\n\n```bash\nexport DISABLE_SPRING=1\nbin\u002Frspec spec\u002Frequests\u002Fbalance_pages_spec.rb\n```\n\nThis will disable Spring for the current session, allowing the tests to run without triggering the `fork()`-related crash.\n","Gumroad 是一个电子商务平台，使创作者能够直接向消费者销售产品。其核心功能包括支持多种数字和实体商品的销售、内置的支付处理系统以及强大的分析工具，帮助卖家了解销售表现。该项目采用 Ruby 语言开发，并使用了 Elasticsearch 等技术来优化搜索体验。适合希望简化在线销售流程的内容创作者、艺术家或小型企业使用，特别是那些寻求直接与客户建立联系并从中获利的人群。通过 Gumroad，用户可以轻松地创建自己的店铺页面，上传作品，并开始销售，无需复杂的设置过程。",2,"2026-06-11 03:13:34","top_language"]