Build on ARCADE

Build with us

ARCADE is open source and grows by what people add to it. Fix something in the main code, publish a game every arcade can open, or run your own site on your own node, the way this one runs.

Contribute to the main code

The code lives at github.com/martinseeger2002/dogecoin-arcade. Changes come in as pull requests: you work on your own copy, then ask for your change to be taken.

  1. Fork the repository. On GitHub, press Fork to make your own copy under your account.
  2. Get it running on your computer. You need git and Python 3.10 or newer.
    git clone https://github.com/YOUR-NAME/dogecoin-arcade.git
    cd dogecoin-arcade
    git remote add upstream https://github.com/martinseeger2002/dogecoin-arcade.git
    python3 -m venv .venv
    .venv/bin/pip install -e ".[dev,web]"
    .venv/bin/python -m pytest
    Tests that need a coin node start a throwaway Pepecoin regtest node as your own user, and skip when there isn't one. Nothing touches real coins.
  3. Read the rules first. AGENTS.md and COLLAB-NOTES.md say how the team works. If your change touches anything that signs, spends or locks coins, read arcade/web/docs/exchange-safety.md too: it lists the rules that keep coins from being taken, and the test behind each one.
  4. One topic per branch, from the newest main.
    git fetch upstream
    git checkout -b fix-short-name upstream/main
  5. Make the change, with a test. A test that fails without your fix and passes with it is the strongest case you can make. Run the tests you touched, and the quick set: tests/test_brand.py tests/test_web.py tests/test_public.py tests/test_docs.py.
  6. Keep commits self-contained. If main moves on, rebase onto it (git rebase upstream/main) rather than merging it in.
  7. Push and open the pull request.
    git push -u origin fix-short-name
    On GitHub, open a pull request into main. Say what you changed, why, and which tests you ran.
  8. How it lands. GitHub's main is a public copy of the maintainer's repository, so an accepted change is applied there as a patch and comes back through main with a new commit id. It then ships in the next signed release, and every arcade's updater installs it.

Good first changes: a clearer message on a page, a missing test, a guide that has fallen behind the code, or support for a coin your community uses (see Adding a chain).

Publish an app or game

Every arcade's Apps tab lists every app anyone has inscribed, on every chain it reads. An app is any HTML page with a card: a game, a video call, a voice room, a shop, a tool. There's nothing to register and nobody to ask. It goes on the tab by saying so in its own JSON.

The full manual is on every arcade at /docs.

Your own site on your own node

An arcade can be the back end for any website. ashvale.party is a game site whose sign-in, saves and players all come from an arcade, and this site reads its live numbers from one. You can do the same with your own domain.

  1. Run an arcade. Run an arcade covers the computer and the one install command. The arcade answers on 127.0.0.1:8420, on the machine itself only.
  2. Point your domain at the machine. Behind Cloudflare, use an A record with the proxy on, SSL set to Full (strict), and a Cloudflare origin certificate on your server.
  3. Put a web server in front. Serve your own pages, and pass everything else to the arcade. With Caddy:
    your-site.example {
    	tls /etc/ssl/your-site.pem /etc/ssl/your-site.key
    	@mine path / /index.html /style.css /img/*
    	handle @mine {
    		root * /var/www/your-site
    		file_server
    	}
    	handle {
    		reverse_proxy 127.0.0.1:8420
    	}
    }
    The web server adds X-Forwarded-For, so the arcade treats every visitor as coming from outside, with its admin pages closed to them.
  4. Add your domain to the arcade's public names. The arcade lets people sign in only on its own names, so add yours to its public_hosts setting (see Remote access). Your visitors then sign in on your domain, with the same account they use on every arcade.
  5. Use what the arcade knows. Your pages can link into the arcade's own pages (the feed, profiles, apps), and a small job on the same machine can read its numbers, the way this site's network stats are made.

Other ways to help