Add 'Earn Bitcoin' section#4607
Add 'Earn Bitcoin' section#4607refined-element wants to merge 2 commits intobitcoin-dot-org:masterfrom
Conversation
Addresses issue bitcoin-dot-org#2524 - Add 'Earn Bitcoin' section This PR adds a new page to help users discover ways to earn Bitcoin without purchasing it directly. Categories include: - Freelancing & Microtasks (Microlancer, Stacker News, Jobs4Bitcoins) - Content Creation (Fountain, Publish0x) - Bug Bounties & Open Source (Lightning Bounties, Bitcoin Bounties) - Mining (OCEAN, NiceHash) - Shopping Rewards (Fold, Lolli) Also includes important warnings about common scams. Bounty payment address: btcevangelist@coinos.io
There was a problem hiding this comment.
Pull request overview
This PR adds a new "Earn Bitcoin" page to help users discover ways to earn Bitcoin without purchasing it directly, partially addressing issue #2524.
Changes:
- Added new
_templates/earn.htmltemplate with six categories of Bitcoin earning opportunities (freelancing, content creation, bounties, mining, shopping rewards, and warnings) - Added English translations in
_translations/en.ymlfor the earn page content and URL mapping
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
_templates/earn.html |
New page template featuring categorized lists of Bitcoin earning platforms and services with external links |
_translations/en.yml |
Added translation strings for the earn page (title, descriptions, service descriptions) and URL mapping entry |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| --- | ||
| # This file is licensed under the MIT License (MIT) available on | ||
| # http://opensource.org/licenses/MIT. | ||
|
|
||
| layout: base | ||
| id: earn | ||
| --- | ||
|
|
||
| <div class="hero"> | ||
| <div class="container hero-container"> | ||
| <h1>{% translate pagetitle %}</h1> | ||
| <p class="summary">{% translate pagedesc %}</p> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="container"> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="freelancing">{% translate freelancing %}</h2> | ||
| <p>{% translate freelancingtext %}</p> | ||
| <ul> | ||
| <li><a href="https://microlancer.io/" target="_blank" rel="noopener">Microlancer</a> - {% translate microlancerdesc %}</li> | ||
| <li><a href="https://stacker.news/" target="_blank" rel="noopener">Stacker News</a> - {% translate stackernewsdesc %}</li> | ||
| <li><a href="https://www.reddit.com/r/Jobs4Bitcoins/" target="_blank" rel="noopener">Jobs4Bitcoins</a> - {% translate jobs4bitcoinsdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="content">{% translate content %}</h2> | ||
| <p>{% translate contenttext %}</p> | ||
| <ul> | ||
| <li><a href="https://fountain.fm/" target="_blank" rel="noopener">Fountain</a> - {% translate fountaindesc %}</li> | ||
| <li><a href="https://www.publish0x.com/" target="_blank" rel="noopener">Publish0x</a> - {% translate publish0xdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="bounties">{% translate bounties %}</h2> | ||
| <p>{% translate bountiestext %}</p> | ||
| <ul> | ||
| <li><a href="https://www.lightningbounties.com/" target="_blank" rel="noopener">Lightning Bounties</a> - {% translate lightningbountiesdesc %}</li> | ||
| <li><a href="https://bitcoinbounties.org/" target="_blank" rel="noopener">Bitcoin Bounties</a> - {% translate bitcoinbountiesdesc %}</li> | ||
| <li><a href="https://github.com/bitcoin-dot-org/bitcoin.org#earn-bitcoin-for-contributing" target="_blank" rel="noopener">Bitcoin.org</a> - {% translate bitcoinorgdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="mining">{% translate mining %}</h2> | ||
| <p>{% translate miningtext %}</p> | ||
| <ul> | ||
| <li><a href="https://ocean.xyz/" target="_blank" rel="noopener">OCEAN</a> - {% translate oceandesc %}</li> | ||
| <li><a href="https://www.nicehash.com/" target="_blank" rel="noopener">NiceHash</a> - {% translate nicehashdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="rewards">{% translate rewards %}</h2> | ||
| <p>{% translate rewardstext %}</p> | ||
| <ul> | ||
| <li><a href="https://foldapp.com/" target="_blank" rel="noopener">Fold</a> - {% translate folddesc %}</li> | ||
| <li><a href="https://www.lolli.com/" target="_blank" rel="noopener">Lolli</a> - {% translate lollidesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="important">{% translate important %}</h2> | ||
| <p>{% translate importanttext %}</p> | ||
| <ul> | ||
| <li>{% translate warning1 %}</li> | ||
| <li>{% translate warning2 %}</li> | ||
| <li>{% translate warning3 %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
Issue #2524 explicitly requests "Add a link to the 'earn' page to the 'Participate' dropdown menu" but this PR does not include the necessary changes to integrate the earn page into the navigation menu. The menu integration requires modifications to _includes/layout/base/head-menu.html (around line 59-66 in the Participate section) and _includes/layout/base/footer-menu.html (around line 100-119 in the Participate section), along with adding a menu-earn translation key. Without these changes, users cannot navigate to the new earn page through the site menus.
| --- | ||
| # This file is licensed under the MIT License (MIT) available on | ||
| # http://opensource.org/licenses/MIT. | ||
|
|
||
| layout: base | ||
| id: earn | ||
| --- | ||
|
|
||
| <div class="hero"> | ||
| <div class="container hero-container"> | ||
| <h1>{% translate pagetitle %}</h1> | ||
| <p class="summary">{% translate pagedesc %}</p> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="container"> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="freelancing">{% translate freelancing %}</h2> | ||
| <p>{% translate freelancingtext %}</p> | ||
| <ul> | ||
| <li><a href="https://microlancer.io/" target="_blank" rel="noopener">Microlancer</a> - {% translate microlancerdesc %}</li> | ||
| <li><a href="https://stacker.news/" target="_blank" rel="noopener">Stacker News</a> - {% translate stackernewsdesc %}</li> | ||
| <li><a href="https://www.reddit.com/r/Jobs4Bitcoins/" target="_blank" rel="noopener">Jobs4Bitcoins</a> - {% translate jobs4bitcoinsdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="content">{% translate content %}</h2> | ||
| <p>{% translate contenttext %}</p> | ||
| <ul> | ||
| <li><a href="https://fountain.fm/" target="_blank" rel="noopener">Fountain</a> - {% translate fountaindesc %}</li> | ||
| <li><a href="https://www.publish0x.com/" target="_blank" rel="noopener">Publish0x</a> - {% translate publish0xdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="bounties">{% translate bounties %}</h2> | ||
| <p>{% translate bountiestext %}</p> | ||
| <ul> | ||
| <li><a href="https://www.lightningbounties.com/" target="_blank" rel="noopener">Lightning Bounties</a> - {% translate lightningbountiesdesc %}</li> | ||
| <li><a href="https://bitcoinbounties.org/" target="_blank" rel="noopener">Bitcoin Bounties</a> - {% translate bitcoinbountiesdesc %}</li> | ||
| <li><a href="https://github.com/bitcoin-dot-org/bitcoin.org#earn-bitcoin-for-contributing" target="_blank" rel="noopener">Bitcoin.org</a> - {% translate bitcoinorgdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="mining">{% translate mining %}</h2> | ||
| <p>{% translate miningtext %}</p> | ||
| <ul> | ||
| <li><a href="https://ocean.xyz/" target="_blank" rel="noopener">OCEAN</a> - {% translate oceandesc %}</li> | ||
| <li><a href="https://www.nicehash.com/" target="_blank" rel="noopener">NiceHash</a> - {% translate nicehashdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="rewards">{% translate rewards %}</h2> | ||
| <p>{% translate rewardstext %}</p> | ||
| <ul> | ||
| <li><a href="https://foldapp.com/" target="_blank" rel="noopener">Fold</a> - {% translate folddesc %}</li> | ||
| <li><a href="https://www.lolli.com/" target="_blank" rel="noopener">Lolli</a> - {% translate lollidesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="important">{% translate important %}</h2> | ||
| <p>{% translate importanttext %}</p> | ||
| <ul> | ||
| <li>{% translate warning1 %}</li> | ||
| <li>{% translate warning2 %}</li> | ||
| <li>{% translate warning3 %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
Issue #2524 requests "Add a 'Earn Bitcoin' button on the home page, possibly next to the 'Buy Bitcoin'" but this PR does not include the necessary changes to add the homepage button. The button integration requires modifications to _includes/templates/index.html (around line 10 where the Buy Bitcoin button is located). While this requirement was listed as "possibly" in the issue, it would significantly improve discoverability of the new earn page and help fulfill the issue's goal of making Bitcoin earning opportunities more accessible.
| earn: | ||
| title: "Earn Bitcoin - Bitcoin" | ||
| pagetitle: "Earn Bitcoin" | ||
| pagedesc: "Not everyone can buy Bitcoin. Discover ways to earn it through work, content creation, and contributions." | ||
| freelancing: "Freelancing & Microtasks" | ||
| freelancingtext: "Complete tasks and freelance work paid in Bitcoin via the Lightning Network." | ||
| microlancerdesc: "Complete small tasks for instant Bitcoin payments via Lightning" | ||
| stackernewsdesc: "Earn sats by posting valuable content and comments" | ||
| jobs4bitcoinsdesc: "Reddit community for finding freelance work paid in Bitcoin" | ||
| content: "Content Creation" | ||
| contenttext: "Create content and get paid in Bitcoin for your work." | ||
| fountaindesc: "Earn Bitcoin for listening to podcasts and creating clips" | ||
| publish0xdesc: "Earn cryptocurrency for writing and reading articles" | ||
| bounties: "Bug Bounties & Open Source" | ||
| bountiestext: "Contribute to open source projects and earn Bitcoin for fixing bugs or adding features." | ||
| lightningbountiesdesc: "Earn sats for fixing GitHub issues via Lightning Network" | ||
| bitcoinbountiesdesc: "Directory of active Bitcoin bounties across projects" | ||
| bitcoinorgdesc: "Earn Bitcoin for contributing to this website" | ||
| mining: "Mining" | ||
| miningtext: "Earn Bitcoin by providing computational power to secure the network." | ||
| oceandesc: "Decentralized Bitcoin mining pool" | ||
| nicehashdesc: "Marketplace for buying and selling hashpower" | ||
| rewards: "Shopping Rewards" | ||
| rewardstext: "Earn Bitcoin back when you shop at participating retailers." | ||
| folddesc: "Earn Bitcoin rewards when shopping with the Fold card" | ||
| lollidesc: "Browser extension that gives Bitcoin back on online purchases" | ||
| important: "Important Warnings" | ||
| importanttext: "Be cautious when earning Bitcoin online:" | ||
| warning1: "Never pay money upfront to earn Bitcoin - legitimate opportunities don't require deposits" | ||
| warning2: "Research any platform thoroughly before providing personal information" | ||
| warning3: "Be skeptical of promises of high returns with little effort" |
There was a problem hiding this comment.
The PR is missing a menu translation key for navigation integration. A menu-earn key should be added in the layout section (around line 1201) to match the pattern used by other pages like menu-buy, menu-sell, etc. For example: menu-earn: "Earn Bitcoin". This is required to integrate the earn page into the navigation menu as requested in issue #2524.
_translations/en.yml
Outdated
| content: "Content Creation" | ||
| contenttext: "Create content and get paid in Bitcoin for your work." | ||
| fountaindesc: "Earn Bitcoin for listening to podcasts and creating clips" | ||
| publish0xdesc: "Earn cryptocurrency for writing and reading articles" |
There was a problem hiding this comment.
The description mentions "Earn cryptocurrency" which is inconsistent with the Bitcoin-focused nature of this page and the rest of the website. This should be changed to "Earn Bitcoin for writing and reading articles" to maintain consistency. Note that Publish0x may support multiple cryptocurrencies, but the page should focus on Bitcoin earning opportunities.
| publish0xdesc: "Earn cryptocurrency for writing and reading articles" | |
| publish0xdesc: "Earn Bitcoin for writing and reading articles" |
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="freelancing">{% translate freelancing %}</h2> | ||
| <p>{% translate freelancingtext %}</p> | ||
| <ul> | ||
| <li><a href="https://microlancer.io/" target="_blank" rel="noopener">Microlancer</a> - {% translate microlancerdesc %}</li> | ||
| <li><a href="https://stacker.news/" target="_blank" rel="noopener">Stacker News</a> - {% translate stackernewsdesc %}</li> | ||
| <li><a href="https://www.reddit.com/r/Jobs4Bitcoins/" target="_blank" rel="noopener">Jobs4Bitcoins</a> - {% translate jobs4bitcoinsdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="content">{% translate content %}</h2> | ||
| <p>{% translate contenttext %}</p> | ||
| <ul> | ||
| <li><a href="https://fountain.fm/" target="_blank" rel="noopener">Fountain</a> - {% translate fountaindesc %}</li> | ||
| <li><a href="https://www.publish0x.com/" target="_blank" rel="noopener">Publish0x</a> - {% translate publish0xdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="bounties">{% translate bounties %}</h2> | ||
| <p>{% translate bountiestext %}</p> | ||
| <ul> | ||
| <li><a href="https://www.lightningbounties.com/" target="_blank" rel="noopener">Lightning Bounties</a> - {% translate lightningbountiesdesc %}</li> | ||
| <li><a href="https://bitcoinbounties.org/" target="_blank" rel="noopener">Bitcoin Bounties</a> - {% translate bitcoinbountiesdesc %}</li> | ||
| <li><a href="https://github.com/bitcoin-dot-org/bitcoin.org#earn-bitcoin-for-contributing" target="_blank" rel="noopener">Bitcoin.org</a> - {% translate bitcoinorgdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="mining">{% translate mining %}</h2> | ||
| <p>{% translate miningtext %}</p> | ||
| <ul> | ||
| <li><a href="https://ocean.xyz/" target="_blank" rel="noopener">OCEAN</a> - {% translate oceandesc %}</li> | ||
| <li><a href="https://www.nicehash.com/" target="_blank" rel="noopener">NiceHash</a> - {% translate nicehashdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="rewards">{% translate rewards %}</h2> | ||
| <p>{% translate rewardstext %}</p> | ||
| <ul> | ||
| <li><a href="https://foldapp.com/" target="_blank" rel="noopener">Fold</a> - {% translate folddesc %}</li> | ||
| <li><a href="https://www.lolli.com/" target="_blank" rel="noopener">Lolli</a> - {% translate lollidesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="important">{% translate important %}</h2> | ||
| <p>{% translate importanttext %}</p> | ||
| <ul> | ||
| <li>{% translate warning1 %}</li> | ||
| <li>{% translate warning2 %}</li> | ||
| <li>{% translate warning3 %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> |
There was a problem hiding this comment.
The layout structure is incorrect. Each card section is placed in its own separate card-row div, which will cause layout issues. Following the pattern used in other similar pages (e.g., support-bitcoin.html lines 17-89, spend-bitcoin.html lines 15-41), all card elements should be placed within a single card-row container. This allows the CSS grid system to properly display cards side-by-side on wider screens and stack them on mobile devices.
_templates/earn.html
Outdated
| <div class="card earn-card"> | ||
| <h2 id="freelancing">{% translate freelancing %}</h2> | ||
| <p>{% translate freelancingtext %}</p> | ||
| <ul> | ||
| <li><a href="https://microlancer.io/" target="_blank" rel="noopener">Microlancer</a> - {% translate microlancerdesc %}</li> | ||
| <li><a href="https://stacker.news/" target="_blank" rel="noopener">Stacker News</a> - {% translate stackernewsdesc %}</li> | ||
| <li><a href="https://www.reddit.com/r/Jobs4Bitcoins/" target="_blank" rel="noopener">Jobs4Bitcoins</a> - {% translate jobs4bitcoinsdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="content">{% translate content %}</h2> | ||
| <p>{% translate contenttext %}</p> | ||
| <ul> | ||
| <li><a href="https://fountain.fm/" target="_blank" rel="noopener">Fountain</a> - {% translate fountaindesc %}</li> | ||
| <li><a href="https://www.publish0x.com/" target="_blank" rel="noopener">Publish0x</a> - {% translate publish0xdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="bounties">{% translate bounties %}</h2> | ||
| <p>{% translate bountiestext %}</p> | ||
| <ul> | ||
| <li><a href="https://www.lightningbounties.com/" target="_blank" rel="noopener">Lightning Bounties</a> - {% translate lightningbountiesdesc %}</li> | ||
| <li><a href="https://bitcoinbounties.org/" target="_blank" rel="noopener">Bitcoin Bounties</a> - {% translate bitcoinbountiesdesc %}</li> | ||
| <li><a href="https://github.com/bitcoin-dot-org/bitcoin.org#earn-bitcoin-for-contributing" target="_blank" rel="noopener">Bitcoin.org</a> - {% translate bitcoinorgdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="mining">{% translate mining %}</h2> | ||
| <p>{% translate miningtext %}</p> | ||
| <ul> | ||
| <li><a href="https://ocean.xyz/" target="_blank" rel="noopener">OCEAN</a> - {% translate oceandesc %}</li> | ||
| <li><a href="https://www.nicehash.com/" target="_blank" rel="noopener">NiceHash</a> - {% translate nicehashdesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> | ||
| <h2 id="rewards">{% translate rewards %}</h2> | ||
| <p>{% translate rewardstext %}</p> | ||
| <ul> | ||
| <li><a href="https://foldapp.com/" target="_blank" rel="noopener">Fold</a> - {% translate folddesc %}</li> | ||
| <li><a href="https://www.lolli.com/" target="_blank" rel="noopener">Lolli</a> - {% translate lollidesc %}</li> | ||
| </ul> | ||
| </div> | ||
| </div> | ||
|
|
||
| <div class="row card-row"> | ||
| <div class="card earn-card"> |
There was a problem hiding this comment.
The CSS class earn-card is used but does not exist in the codebase (verified in _sass/screen.scss). While the base .card class will still apply styling, this class serves no purpose. Consider either: (1) removing earn-card and using only the base card class (like spend-bitcoin.html does), or (2) adding appropriate CSS rules for .earn-card in _sass/screen.scss if custom styling is needed (similar to how .support-card at line 1206 and .buy-card at line 1210 are defined).
- Fix template layout: all cards now in single card-row container - Use support-card CSS class (existing) instead of non-existent earn-card - Remove target="_blank" from links for codebase consistency - Fix Publish0x description: "cryptocurrency" -> "Bitcoin" - Add menu-earn translation key - Add Earn Bitcoin link to header navigation menu (Participate section) - Add Earn Bitcoin link to footer navigation menu Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
This PR adds a new "Earn Bitcoin" page to help users discover ways to earn Bitcoin without purchasing it directly, addressing issue #2524.
Changes include:
_templates/earn.htmlwith categories: Freelancing, Content Creation, Bug Bounties, Mining, Shopping Rewards, and Warnings_translations/en.yml/earnsupport-cardCSS class for consistent stylingAddresses
This PR addresses bounty #2524: "Add 'Earn Bitcoin' section"
#2524
Payment Address
Bitcoin address for bounty payment:
bc1qax8d6etvphms3tqqc7hy52vas4af7ezv4msvqd🤖 Generated with Claude Code