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
|
|
@ -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' },
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ body {
|
|||
.navbar__title {
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
color: #00FF88 !important;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.navbar__link {
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 238 KiB |
BIN
static/img/logo-full.png
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
static/img/logo-nav.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
static/img/og-image.png
Normal file
|
After Width: | Height: | Size: 694 KiB |