fix: rebrand Forgejo → Our Git, make all repos public

- Navbar: 'Our Code' links to Forgejo org
- Homepage: 'Our Git' card in Our Network
- /build: All 17 repos with Our Git + GitLab + Codeberg + Radicle mirrors
- Footer: 'Our Git (primary)' + all mirrors
- All 17 repos made public on Forgejo
This commit is contained in:
Crypto Rug Munch 2026-07-09 19:35:35 +07:00
parent 72c22c066a
commit 606617d760
12 changed files with 129 additions and 51 deletions

View file

@ -60,13 +60,8 @@ const config: Config = {
navbar: {
hideOnScroll: false,
style: 'dark',
logo: {
alt: 'Rug Munch Media',
src: 'img/logo.png',
srcDark: 'img/logo.png',
width: 160,
height: 40,
},
title: 'Rug Munch Media',
logo: undefined,
items: [
{ to: '/about', label: 'About', position: 'left' },
{
@ -85,7 +80,7 @@ const config: Config = {
{ to: '/blog', label: 'Blog', position: 'left' },
{
href: 'https://git.rugmunch.io/RugMunchMedia',
label: 'Forgejo',
label: 'Our Code',
position: 'right',
className: 'navbar-forgejo-link',
},
@ -120,7 +115,7 @@ const config: Config = {
{
title: 'Code',
items: [
{ label: 'Forgejo (primary)', href: 'https://git.rugmunch.io/RugMunchMedia' },
{ label: 'Our Git (primary)', href: 'https://git.rugmunch.io/RugMunchMedia' },
{ label: 'GitLab (mirror)', href: 'https://gitlab.com/cryptorugmuncher' },
{ label: 'Codeberg (mirror)', href: 'https://codeberg.org/cryptorugmunch' },
{ label: 'Radicle (P2P)', href: 'https://radicle.network/nodes/iris.radicle.network/rad:z4WHF6sDhmfqQvmigQSPYezNgy9c6' },

View file

@ -44,6 +44,8 @@ body {
.navbar__title {
font-weight: 700;
letter-spacing: -0.02em;
color: #00FF88 !important;
font-size: 1.05rem;
}
.navbar__link {

View file

@ -1,35 +0,0 @@
---
title: Build With Us
description: Open-source repos, contributing guides, and development infrastructure.
---
import Link from '@docusaurus/Link';
# Build With Us
Everything we build is open-source. Audit it. Fork it. Run your own.
## Our Repos
| Repository | Description | Forgejo | GitLab | Codeberg | Radicle |
|-----------|-------------|---------|--------|----------|---------|
| rmi-backend | FastAPI + SQLAlchemy + Redis | [forgejo](https://git.rugmunch.io/RugMunchMedia/rmi-backend) | [gitlab](https://gitlab.com/cryptorugmuncher/rugmuncher-backend) | [codeberg](https://codeberg.org/cryptorugmunch/rugmuncher-backend) | `rad:z39...` |
| rmi-frontend | React 19 + Vite + Tailwind | [forgejo](https://git.rugmunch.io/RugMunchMedia/rmi-frontend) | [gitlab](https://gitlab.com/cryptorugmuncher/rmi-frontend) | [codeberg](https://codeberg.org/cryptorugmunch/rmi-frontend) | `rad:z23...` |
| degenfeed-web | Next.js multi-protocol aggregator | [forgejo](https://git.rugmunch.io/RugMunchMedia/degenfeed-web) | [gitlab](https://gitlab.com/cryptorugmuncher/degenfeed-web) | [codeberg](https://codeberg.org/cryptorugmunch/degenfeed-web) | `rad:z4H...` |
| pryscraper | Python CLI + API | [forgejo](https://git.rugmunch.io/RugMunchMedia/pryscraper) | [gitlab](https://gitlab.com/cryptorugmuncher/pryscraper) | [codeberg](https://codeberg.org/cryptorugmunch/pryscraper) | `rad:z1e...` |
| walletpress | Python + WordPress plugin | [forgejo](https://git.rugmunch.io/RugMunchMedia/walletpress) | [gitlab](https://gitlab.com/cryptorugmuncher/walletpress) | [codeberg](https://codeberg.org/cryptorugmunch/walletpress) | `rad:z2s...` |
| fleet-infra | Nginx, systemd, compose | [forgejo](https://git.rugmunch.io/RugMunchMedia/fleet-infra) | [gitlab](https://gitlab.com/cryptorugmuncher/fleet-infra) | [codeberg](https://codeberg.org/cryptorugmunch/fleet-infra) | `rad:zAZ...` |
| standards | Fleet docs + conventions | [forgejo](https://git.rugmunch.io/RugMunchMedia/standards) | [gitlab](https://gitlab.com/cryptorugmuncher/standards) | [codeberg](https://codeberg.org/cryptorugmunch/standards) | `rad:z4W...` |
Four-way decentralized backup. No single point of failure.
## Contributing
1. Fork on Forgejo
2. Create a `feat/*` or `fix/*` branch
3. Submit a PR with conventional commits
4. All code AGPL-3.0 or MIT
---
<Link to="/" className="rmi-btn rmi-btn--secondary">← Home</Link>

110
src/pages/build.tsx Normal file
View file

@ -0,0 +1,110 @@
import Layout from '@theme/Layout';
import Link from '@docusaurus/Link';
const active = [
{ name: 'rmi-backend', desc: 'RMI Backend — FastAPI, 410+ routes, 32 token detectors, wallet forensics', lang: 'Python', rad: 'z39AoyTctFAhNdA17ouoxGmMbSzRS' },
{ name: 'rmi-frontend', desc: 'RMI Frontend — React 19, Vite, Tailwind, Radix', lang: 'TypeScript', rad: 'z233BhVGiPF9ZvBRoowpBap1ieebr' },
{ name: 'pryscraper', desc: 'Pry — Web scraper, 190+ endpoints, MCP server, Cloudflare bypass', lang: 'Python', rad: 'z1esLwZc3HHxjgYcdKkQhVLu5bcs' },
{ name: 'walletpress', desc: 'WalletPress — 55-chain wallet engine, WordPress plugin, x402 marketplace', lang: 'Python', rad: 'z2s2wiPPHJXx2prvP5nPVgpkkzjwz' },
{ name: 'degenfeed-web', desc: 'DegenFeed — Multi-protocol social aggregator (Nostr, Farcaster, Bluesky, Mastodon, Lens, Threads, RSS)', lang: 'TypeScript', rad: 'z4HA4VujocEo1b3jTFwNk5qEGgF3V' },
{ name: 'cryptorugmunch-com', desc: 'This website — Docusaurus 3, black + neon green, Cloudflare Pages', lang: 'TypeScript', rad: '' },
];
const infra = [
{ name: 'standards', desc: 'Fleet standards — AGENTS.md, CONVENTIONS.md, TOOLCHAIN.md, GUARDRAILS.md, templates', lang: 'Docs', rad: 'z4WHF6sDhmfqQvmigQSPYezNgy9c6' },
{ name: 'fleet-infra', desc: 'Infrastructure as code — nginx, systemd, docker-compose, scripts, cron', lang: 'Shell', rad: 'zAZaNc5wuKbh7ySJJsxBprguyUNd' },
{ name: 'fleet-template', desc: 'Canonical repo scaffold — pre-commit, CI/CD, Makefile, .agentrules template', lang: 'Meta', rad: 'z2WWhLuxRETPfnDp8TkUGFFi43JFK' },
];
const legacy = [
{ name: 'rugmunchbot', desc: 'Telegram bot — /scan, /portfolio, /simulate, /chart, /watch' },
{ name: 'rmi-local-services', desc: 'BGE-M3 embeddings, Ghost + n8n + RugFeed Poster' },
{ name: 'rmi-docs', desc: 'Product documentation — ARCHITECTURE.md, ADRs, MCP docs, audit reports' },
{ name: 'rugcharts', desc: 'Chart frontend + backend — real-time price charts' },
{ name: 'rugmaps', desc: 'Visual map of wallet relationships and token flows' },
{ name: 'x402-gateway', desc: 'Payment/settlement layer for x402 protocol APIs' },
{ name: 'rmi-rag', desc: 'Retrieval-augmented generation for risk explanations' },
{ name: 'rmi-mcp-x402', desc: 'Model Context Protocol server — AI agent access to RMI data' },
];
function glName(name: string) { return name === 'rmi-backend' ? 'rugmuncher-backend' : name; }
function RepoCard({ repo, active }: { repo: any; active: boolean }) {
return (
<div style={{ background: '#111118', border: '1px solid #222233', borderRadius: 10, padding: '20px 24px' }}>
<div style={{ display: 'flex', alignItems: 'baseline', gap: 10, flexWrap: 'wrap', marginBottom: 6 }}>
<a href={`https://git.rugmunch.io/RugMunchMedia/${repo.name}`} target="_blank" rel="noopener" style={{ fontSize: active ? '1rem' : '0.9rem', fontWeight: active ? 700 : 600, color: active ? '#E8E8ED' : '#888899', textDecoration: 'none' }}>
{repo.name}
</a>
{repo.lang && <span style={{ fontSize: '0.65rem', color: '#00FF88', background: 'rgba(0,255,136,0.08)', padding: '2px 8px', borderRadius: 3, fontWeight: 600 }}>{repo.lang}</span>}
{!repo.lang && <span style={{ fontSize: '0.6rem', color: '#555566', background: 'rgba(85,85,102,0.12)', padding: '1px 6px', borderRadius: 3 }}>internal</span>}
</div>
<p style={{ fontSize: '0.82rem', color: '#888899', margin: '0 0 8px', lineHeight: 1.5 }}>{repo.desc}</p>
<div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', fontSize: '0.7rem' }}>
<a href={`https://git.rugmunch.io/RugMunchMedia/${repo.name}`} target="_blank" style={{ color: '#00FF88', textDecoration: 'none', fontWeight: 600 }}>Our Git</a>
<a href={`https://gitlab.com/cryptorugmuncher/${glName(repo.name)}`} target="_blank" style={{ color: '#888899', textDecoration: 'none' }}>GitLab</a>
<a href={`https://codeberg.org/cryptorugmunch/${glName(repo.name)}`} target="_blank" style={{ color: '#888899', textDecoration: 'none' }}>Codeberg</a>
{repo.rad && <a href={`https://radicle.network/nodes/iris.radicle.network/rad:${repo.rad}`} target="_blank" style={{ color: '#888899', textDecoration: 'none' }}>Radicle</a>}
</div>
</div>
);
}
export default function Build() {
return (
<Layout title="Build With Us" description="All 17 repos on our own git. Mirrored to GitLab, Codeberg, Radicle.">
<div style={{ background: '#0A0A0F', padding: '60px 24px 80px', maxWidth: 1000, margin: '0 auto' }}>
<h1 style={{ fontSize: '2rem', fontWeight: 800, marginBottom: 8, color: '#E8E8ED' }}>Built in the Open</h1>
<p style={{ color: '#888899', fontSize: '0.9rem', marginBottom: 40, maxWidth: 600, lineHeight: 1.6 }}>
Every line of code we write is public. Audit it. Fork it. Run your own.
Primary hosting on our own git at{' '}
<a href="https://git.rugmunch.io/RugMunchMedia" target="_blank" style={{ color: '#00FF88' }}>git.rugmunch.io</a>.
Mirrored to GitLab, Codeberg, and Radicle P2P for decentralized backup.
</p>
<h2 style={{ fontSize: '1.3rem', fontWeight: 700, marginBottom: 20, color: '#E8E8ED' }}>Active Products</h2>
<div style={{ display: 'grid', gap: 14, marginBottom: 40 }}>
{active.map(r => <RepoCard key={r.name} repo={r} active />)}
</div>
<h2 style={{ fontSize: '1.3rem', fontWeight: 700, marginBottom: 20, color: '#E8E8ED' }}>Fleet Infrastructure</h2>
<div style={{ display: 'grid', gap: 14, marginBottom: 40 }}>
{infra.map(r => <RepoCard key={r.name} repo={r} active />)}
</div>
<h2 style={{ fontSize: '1.3rem', fontWeight: 700, marginBottom: 20, color: '#E8E8ED' }}>Legacy & Internal</h2>
<div style={{ display: 'grid', gap: 14, marginBottom: 40 }}>
{legacy.map(r => <RepoCard key={r.name} repo={r} active={false} />)}
</div>
<div style={{ marginTop: 50, padding: 32, background: '#111118', border: '1px solid #222233', borderRadius: 12 }}>
<h3 style={{ fontSize: '1.1rem', fontWeight: 700, marginBottom: 12, color: '#E8E8ED' }}>Four-Way Decentralized Backup</h3>
<p style={{ fontSize: '0.82rem', color: '#888899', marginBottom: 16, lineHeight: 1.6 }}>
Every repo is pushed to four independent hosts. If any one goes down, the code survives.
</p>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(140px, 1fr))', gap: 12 }}>
{[
{ name: 'Our Git', url: 'https://git.rugmunch.io/RugMunchMedia', desc: 'Self-hosted. All 17 repos. Source of truth.', border: '#00FF88' },
{ name: 'GitLab', url: 'https://gitlab.com/cryptorugmuncher', desc: 'Weekly mirror. Public.', border: '#222233' },
{ name: 'Codeberg', url: 'https://codeberg.org/cryptorugmunch', desc: 'Weekly mirror. EU-hosted.', border: '#222233' },
{ name: 'Radicle', url: 'https://radicle.network', desc: 'P2P network. Can\'t be taken down.', border: '#222233' },
].map(m => (
<a key={m.name} href={m.url} target="_blank" rel="noopener" style={{ textDecoration: 'none' }}>
<div style={{ border: `1px solid ${m.border}`, borderRadius: 8, padding: 14, textAlign: 'center', background: 'rgba(0,255,136,0.02)' }}>
<div style={{ fontSize: '0.85rem', fontWeight: 600, color: '#E8E8ED', marginBottom: 3 }}>{m.name}</div>
<div style={{ fontSize: '0.68rem', color: '#555566' }}>{m.desc}</div>
</div>
</a>
))}
</div>
</div>
<div style={{ marginTop: 40, textAlign: 'center' }}>
<Link to="/" style={{ color: '#00FF88', fontSize: '0.8rem', fontWeight: 500, textDecoration: 'none' }}> Home</Link>
</div>
</div>
</Layout>
);
}

View file

@ -145,19 +145,25 @@ import Link from '@docusaurus/Link';
</p>
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))', gap: 16 }}>
<a href="https://git.rugmunch.io/RugMunchMedia" target="_blank" rel="noopener noreferrer" style={{ textDecoration: 'none' }}>
<div style={{ background: '#111118', border: '1px solid #00FF88', borderRadius: 10, padding: 20, textAlign: 'center' }}>
<div style={{ fontSize: '1.3rem', marginBottom: 6, color: '#00FF88' }}>⊞</div>
<div style={{ fontSize: '0.85rem', fontWeight: 600, color: '#E8E8ED', marginBottom: 3 }}>Our Git</div>
<div style={{ fontSize: '0.72rem', color: '#555566' }}>All source code. 17 repos.</div>
</div>
</a>
{[
{ name: 'Forgejo', url: 'https://git.rugmunch.io/RugMunchMedia', desc: 'All source code. Every commit.', icon: '⊞' },
{ name: 'DegenFeed', url: 'https://degenfeed.xyz', desc: 'Social aggregator live site', icon: '◇' },
{ name: 'rugmunch.io', url: 'https://rugmunch.io', desc: 'Rug Munch Intelligence portal', icon: '◎' },
{ name: 'Telegram Bot', url: 'https://t.me/rugmunchbot', desc: 'Scan tokens from Telegram', icon: '✈' },
{ name: 'GitLab Mirror', url: 'https://gitlab.com/cryptorugmuncher', desc: 'External git mirror', icon: '⎔' },
{ name: 'Codeberg Mirror', url: 'https://codeberg.org/cryptorugmunch', desc: 'External git mirror', icon: '⛰' },
{ name: 'GitLab Mirror', url: 'https://gitlab.com/cryptorugmuncher', desc: 'External mirror', icon: '⎔' },
{ name: 'Codeberg Mirror', url: 'https://codeberg.org/cryptorugmunch', desc: 'External mirror', icon: '⛰' },
{ name: 'Radicle P2P', url: 'https://radicle.network/nodes/iris.radicle.network/rad:z4WHF6sDhmfqQvmigQSPYezNgy9c6', desc: 'Decentralized backup', icon: '⬡' },
].map(site => (
<a key={site.name} href={site.url} target="_blank" rel="noopener noreferrer" style={{ textDecoration: 'none' }}>
<div style={{
background: '#111118', border: '1px solid #222233', borderRadius: 10, padding: 20, textAlign: 'center',
transition: 'border-color 0.15s'
}}>
<div style={{ background: '#111118', border: '1px solid #222233', borderRadius: 10, padding: 20, textAlign: 'center' }}>
<div style={{ fontSize: '1.3rem', marginBottom: 6, color: '#00FF88' }}>{site.icon}</div>
<div style={{ fontSize: '0.85rem', fontWeight: 600, color: '#E8E8ED', marginBottom: 3 }}>{site.name}</div>
<div style={{ fontSize: '0.72rem', color: '#555566' }}>{site.desc}</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 238 KiB

Before After
Before After

BIN
static/img/logo-full.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

BIN
static/img/logo-nav.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before After
Before After

BIN
static/img/og-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 KiB