git / moonbite-network / templates/development.html · raw

{% extends "base.html" %}

{% block body_class %}mb-v2{% endblock %}

{% block title %}Build on MoonBite — developer resources & contribution guide{% endblock %}
{% block meta_description %}MoonBite is open-source. Explore the REST API, run a node, contribute code and tests, or read the design records. Everything you need to build on or contribute to MoonBite.{% endblock %}

{% block content %}
<section class="mb-hero">
    <div class="mb-hero-glow"></div>
    <div class="mb-container">
        <div class="mb-hero-inner">
            <span class="mb-badge"><span class="mb-dot"></span> Open source</span>
            <h1 class="mb-hero-title">Read the code. <span class="mb-gradient-text">Build on it.</span></h1>
            <p class="mb-hero-sub">The source is open, the API is public, and patches are welcome. Whether you want to ship a tool on the chain, sharpen the node, write tests, or just see how the thing works — this is where you start.</p>
            <div class="mb-cta-row">
                <a href="https://moonbite.org/git/moonbite-network" class="btn btn-primary mb-btn-xl" target="_blank" rel="noopener">View the source</a>
                <a href="/developers" class="btn btn-secondary mb-btn-xl">API Reference</a>
            </div>
        </div>
    </div>
</section>

<section class="mb-section">
    <div class="mb-container">
        <div class="mb-section-head mb-reveal">
            <span class="mb-eyebrow">What's available</span>
            <h2 class="mb-section-title">Four ways in</h2>
        </div>
        <div class="mb-grid mb-grid-2">
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Read-only REST API</h3>
                <p class="mb-card-text">Pull blocks, transactions, addresses, and network status over a plain JSON API. No auth on read-only endpoints. The full reference and live examples sit in the developer docs.</p>
                <a href="/developers" class="mb-card-link">API docs →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Run a node</h3>
                <p class="mb-card-text">The full node is what everything else stands on. Run one locally on regtest, testnet, or the live mainnet. Point your app at your own node and stop depending on a shared endpoint.</p>
                <a href="/full-node" class="mb-card-link">Node setup guide →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Source &amp; tests</h3>
                <p class="mb-card-text">The full source is at moonbite.org/git. Clone it, run the tests, send a patch. Good first moves: add test coverage, file a bug with a clean reproduction, or fix the build docs.</p>
                <a href="https://moonbite.org/git/moonbite-network" class="mb-card-link" target="_blank" rel="noopener">Source →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Design records (ADRs)</h3>
                <p class="mb-card-text">Architecture decision records capture every major protocol call — address format, fee cap, block time, emission schedule, and more, with the reasoning attached. Read them before you touch consensus code.</p>
                <a href="https://moonbite.org/git/moonbite-network" class="mb-card-link" target="_blank" rel="noopener">Browse ADRs →</a>
            </div>
        </div>
    </div>
</section>

<section class="mb-section" style="background: var(--bg-secondary); border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);">
    <div class="mb-container">
        <div class="mb-section-head mb-reveal">
            <span class="mb-eyebrow">REST API</span>
            <h2 class="mb-section-title">Query the chain in one line</h2>
            <p class="mb-section-sub">The public seed node exposes a read-only JSON API. No API key, no account, just HTTP. Every response comes back in the same <code>{"status": "success", ...}</code> envelope.</p>
        </div>
        <div class="mb-code mb-reveal">
            <span class="mb-c-comment"># Network status — chain height, peer count, sync state</span><br>
            <span class="mb-c-key">curl</span> https://moonbite.org/api/status<br>
            <br>
            <span class="mb-c-comment"># Latest block</span><br>
            <span class="mb-c-key">curl</span> https://moonbite.org/api/block/latest<br>
            <br>
            <span class="mb-c-comment"># Block by height</span><br>
            <span class="mb-c-key">curl</span> https://moonbite.org/api/block/1000<br>
            <br>
            <span class="mb-c-comment"># Transaction by txid</span><br>
            <span class="mb-c-key">curl</span> https://moonbite.org/api/tx/&lt;txid&gt;<br>
            <br>
            <span class="mb-c-comment"># Address balance &amp; history</span><br>
            <span class="mb-c-key">curl</span> https://moonbite.org/api/address/moon1youraddresshere
        </div>
        <p class="mb-section-sub mb-reveal" style="margin-top: var(--spacing-xl);">The full endpoint list, request and response shapes, and error codes are all in the <a href="/developers" class="link">developer reference</a>.</p>
    </div>
</section>

<section class="mb-section">
    <div class="mb-container">
        <div class="mb-section-head mb-reveal">
            <span class="mb-eyebrow">Contributing</span>
            <h2 class="mb-section-title">How to contribute</h2>
            <p class="mb-section-sub">Standard open-source workflow, no surprises. Here's the short version.</p>
        </div>
        <div class="mb-grid mb-grid-3">
            <div class="mb-feature mb-reveal">
                <h3>Fork &amp; clone</h3>
                <p>Clone the repository from moonbite.org/git, cut a feature branch. Keep branches tight — one concern per patch, not five.</p>
            </div>
            <div class="mb-feature mb-reveal">
                <h3>Run the tests</h3>
                <p>There's a test suite. Run it before and after your change. A patch that breaks existing tests won't merge, and new behaviour should ship with new tests.</p>
            </div>
            <div class="mb-feature mb-reveal">
                <h3>Open a pull request</h3>
                <p>Say what the change does and why. Link the related issue. A tight, honest PR description gets reviewed a lot faster than a vague one.</p>
            </div>
            <div class="mb-feature mb-reveal">
                <h3>File bugs</h3>
                <p>Found something broken? Email support@moonbite.org with a clear reproduction. Include the platform, the node version, and the exact steps that trigger it.</p>
            </div>
            <div class="mb-feature mb-reveal">
                <h3>Improve docs</h3>
                <p>Docs PRs count just as much as code PRs. A clearer setup guide, a better API example, a fixed typo — all of it matters.</p>
            </div>
            <div class="mb-feature mb-reveal">
                <h3>Review open PRs</h3>
                <p>Reviewing someone else's pull request — spotting edge cases, checking the logic, running it locally — is one of the most valuable things you can do here.</p>
            </div>
        </div>
    </div>
</section>

<section class="mb-section" style="background: var(--bg-secondary); border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);">
    <div class="mb-container">
        <div class="mb-section-head mb-reveal">
            <span class="mb-eyebrow">Where to start</span>
            <h2 class="mb-section-title">Good places to begin</h2>
        </div>
        <div class="mb-grid mb-grid-2">
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Understand the design</h3>
                <p class="mb-card-text">Before you write code that touches consensus or protocol logic, read the ADRs. They tell you not just what was decided but why — and that context is how you avoid quietly reintroducing an old bug.</p>
                <a href="/governance" class="mb-card-link">Decision records →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Read the whitepaper</h3>
                <p class="mb-card-text">The whitepaper lays out the high-level goals and protocol properties MoonBite is built around. Read it alongside the ADRs to get the intent behind the details.</p>
                <a href="/whitepaper" class="mb-card-link">Whitepaper →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Explore the API first</h3>
                <p class="mb-card-text">Building an app rather than hacking on the node? The REST API is the fastest path to real data. No build toolchain to fight — just HTTP.</p>
                <a href="/developers" class="mb-card-link">Developer reference →</a>
            </div>
            <div class="mb-card mb-reveal">
                <h3 class="mb-card-title">Run regtest locally</h3>
                <p class="mb-card-text">Regtest lets you mine blocks instantly and test transactions without ever touching the live network. It's the right sandbox for development and integration work.</p>
                <a href="/full-node" class="mb-card-link">Node guide →</a>
            </div>
        </div>
        <div class="mb-banner mb-reveal" style="margin-top: var(--spacing-2xl);">
            <span>MoonBite is an open-source technology project. It is <strong>not an investment or a security</strong>. Writing code, running tests, or building tools on the chain is taking part in a technical project — not a financial one.</span>
        </div>
    </div>
</section>

<section class="mb-section">
    <div class="mb-container">
        {% set notify_title = "Get pinged on real milestones" %}
        {% set notify_text = "One email when something technical actually ships — new API endpoints, node releases, mainnet launch. No noise in between." %}
        {% set notify_source = "development" %}
        {% include "partials/notify_form.html" %}
    </div>
</section>
{% endblock %}