docs: restructure website, optimize HTML, gitignore private files

Website docs (website/docs/):
- Delete 6 stale -md.html duplicates
- Rename docs-clients/miners/developers → clients/miners/developers.html
- Unify header/nav across all 15 pages (new .site-header pattern)
- Fix 34 dead href=# links with real targets
- Upgrade Font Awesome v4→v6 in index.html
- Replace search stub with live client-side search (15-page index)
- Extract all inline CSS into shared docs.css (+630 lines)
- Extract inline theme JS into shared theme.js
- Strip inline style= attributes from 10+ pages
- Add .announce-banner, .source-links, .search-results CSS classes
- Add Markdown Source links to clients/miners/developers pages
- Update components.html title to Architecture & Components
- Move browser-wallet.html to website/wallet/, leave redirect
- Update all dates to February 2026

Website root:
- Delete 6 root-level duplicate HTML files (160KB saved)
- Rewire index.html and 404.html links

Root README.md:
- Fix 8 broken doc links to new numbered folder structure
- Update copyright to 2026

.gitignore + .example files:
- Gitignore private files: .aitbc.yaml, .env, deploy scripts,
  GPU scripts, service scripts, infra configs, .windsurf/, website README
- Create 7 .example files for GitHub users with sanitized templates
- Untrack 47 previously committed private files

Live server:
- Push all website files to aitbc-cascade:/var/www/html/
- Clean stale admin.html and index.nginx-debian.html
This commit is contained in:
oib
2026-02-13 23:18:52 +01:00
parent 06e48ef34b
commit 07f3a87328
87 changed files with 1699 additions and 17311 deletions

View File

@@ -5,23 +5,23 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/docs.css">
<title>Documentation - AITBC</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
</head>
<body>
<!-- Header -->
<header class="text-white shadow-lg" style="background: var(--bg-white); position: fixed; width: 100%; top: 0; z-index: 1000; box-shadow: 0 1px 3px rgba(0,0,0,0.1);">
<div class="container" style="max-width: 1200px; margin: 0 auto; padding: 0 20px;">
<div style="display: flex; align-items: center; justify-content: space-between; padding: 1rem 0;">
<div style="display: flex; align-items: center; gap: 0.75rem;">
<i class="fa fa-cube" style="font-size: 2rem; color: var(--primary-color);"></i>
<h1 style="font-size: 1.5rem; font-weight: bold; margin: 0; color: var(--text-dark);">AITBC</h1>
</div>
<nav style="display: flex; align-items: center; gap: 1.5rem;">
<a href="/" style="background: transparent !important; color: var(--text-dark) !important; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-weight: 500; text-decoration: none; display: inline-flex; align-items: center;">Home</a>
<a href="/explorer/" style="background: transparent !important; color: var(--text-dark) !important; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-weight: 500; text-decoration: none; display: inline-flex; align-items: center;">Explorer</a>
<a href="/Exchange/" style="background: transparent !important; color: var(--text-dark) !important; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-weight: 500; text-decoration: none; display: inline-flex; align-items: center;">Exchange</a>
<a href="/docs/index.html" style="background: transparent !important; color: var(--text-dark) !important; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-weight: 500; text-decoration: none; display: inline-flex; align-items: center;">Documentation</a>
<button id="themeToggle" class="theme-toggle" style="background: rgba(59, 130, 246, 0.1) !important; color: var(--primary-color) !important; border: 2px solid var(--primary-color); padding: 0.5rem 1rem; border-radius: 0.5rem; cursor: pointer; font-size: 1rem;">🌞</button>
<header class="site-header">
<div class="container">
<div class="header-inner">
<a href="/" class="brand">
<i class="fas fa-cube"></i>
<span>AITBC</span>
</a>
<nav class="header-nav">
<a href="/">Home</a>
<a href="/explorer/">Explorer</a>
<a href="/Exchange/">Exchange</a>
<a href="/docs/index.html" class="active">Docs</a>
<button id="theme-toggle" class="theme-toggle" title="Toggle theme"><i class="fas fa-sun"></i></button>
</nav>
</div>
</div>
@@ -33,16 +33,16 @@
<div class="doc-header">
<h1>Documentation</h1>
<p>Choose your reader level to access tailored documentation for your needs</p>
<div style="margin-top: 2rem; padding: 1.5rem; background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(16, 185, 129, 0.1) 100%); border-radius: 15px; border: 2px solid rgba(59, 130, 246, 0.2);">
<h3 style="color: var(--success-color); margin-bottom: 0.5rem; font-size: 1.2rem;">✅ Latest Update (January 2026)</h3>
<p style="color: var(--text-light); margin: 0;">End-to-end Ollama GPU inference testing completed! Real GPU miner operational with RTX 4060 Ti, processing jobs in 11-25 seconds with verified receipt generation and blockchain recording.</p>
<div class="announce-banner">
<h3>✅ Latest Update (February 2026)</h3>
<p>Documentation fully restructured! 10 numbered sections from Getting Started to Security, optimized content with merged duplicates, and zero broken links. Plus: end-to-end Ollama GPU inference with RTX 4060 Ti operational.</p>
</div>
</div>
<!-- Search Bar -->
<div class="search-container">
<input type="text" class="search-bar" placeholder="Search documentation..." id="searchInput">
<i class="fa fa-search search-icon"></i>
<i class="fas fa-search search-icon"></i>
</div>
<!-- Reader Level Cards -->
@@ -50,7 +50,7 @@
<!-- Miners Card -->
<div class="reader-card miner">
<div class="reader-icon">
<i class="fa fa-hammer"></i>
<i class="fas fa-hammer"></i>
</div>
<h3>Miners</h3>
<p>Learn how to mine AITBC tokens and contribute to network security. Perfect for those looking to earn rewards through staking or providing compute power.</p>
@@ -61,13 +61,13 @@
<li>Real-time job processing & earnings</li>
<li>Performance monitoring & troubleshooting</li>
</ul>
<a href="docs-miners.html" class="btn">Miner Documentation</a>
<a href="miners.html" class="btn">Miner Documentation</a>
</div>
<!-- Clients Card -->
<div class="reader-card client">
<div class="reader-icon">
<i class="fa fa-users"></i>
<i class="fas fa-users"></i>
</div>
<h3>Clients</h3>
<p>Use AITBC for your AI/ML workloads with privacy and verifiable computation. Ideal for businesses and developers using AI services.</p>
@@ -78,13 +78,13 @@
<li>Transparent pricing: 0.02 AITBC/gpu_second</li>
<li>Cryptographic receipts & blockchain verification</li>
</ul>
<a href="docs-clients.html" class="btn">Client Documentation</a>
<a href="clients.html" class="btn">Client Documentation</a>
</div>
<!-- Developers Card -->
<div class="reader-card developer">
<div class="reader-icon">
<i class="fa fa-code"></i>
<i class="fas fa-code"></i>
</div>
<h3>Developers</h3>
<p>Build on AITBC and contribute to the protocol. Designed for developers wanting to extend the platform or integrate with it.</p>
@@ -95,13 +95,13 @@
<li>Bounty programs</li>
<li>Community resources</li>
</ul>
<a href="docs-developers.html" class="btn">Developer Documentation</a>
<a href="developers.html" class="btn">Developer Documentation</a>
</div>
<!-- Full Documentation Card -->
<div class="reader-card full-doc">
<div class="reader-icon">
<i class="fa fa-file-alt"></i>
<i class="fas fa-file-alt"></i>
</div>
<h3>Full Documentation</h3>
<p>Complete technical documentation covering all aspects of the AITBC platform including architecture, APIs, deployment, and advanced features.</p>
@@ -118,26 +118,26 @@
<!-- Components Card -->
<div class="reader-card components">
<div class="reader-icon">
<i class="fa fa-cube"></i>
<i class="fas fa-cube"></i>
</div>
<h3>System Components</h3>
<p>Explore the 7 core components that make up the AITBC platform. Understand how each part works together to create a complete AI blockchain computing solution.</p>
<h3>Architecture &amp; Components</h3>
<p>Explore the system architecture and core components of the AITBC platform. Understand how each part works together from end-to-end flow to individual services.</p>
<ul class="reader-features">
<li>Blockchain Node with PoA/PoS consensus</li>
<li>End-to-end system flow diagram</li>
<li>Coordinator API for job orchestration</li>
<li>Wallet Daemon for secure key management</li>
<li>Miner Daemon for GPU compute</li>
<li>Blockchain Node with PoA/PoS consensus</li>
<li>Marketplace Web for compute trading</li>
<li>Explorer Web for blockchain viewing</li>
<li>Pool Hub for miner coordination</li>
<li>Trade Exchange for BTC-to-AITBC</li>
<li>Wallet for key management &amp; staking</li>
<li>Codebase structure &amp; technical reference</li>
</ul>
<a href="components.html" class="btn">View Components</a>
<a href="components.html" class="btn">View Architecture</a>
</div>
<!-- System Flow Card -->
<div class="reader-card flow">
<div class="reader-icon">
<i class="fa fa-sitemap"></i>
<i class="fas fa-sitemap"></i>
</div>
<h3>System Flow</h3>
<p>Visualize the complete flow of a job submission through the CLI client, detailing each system component, message, RPC call, and port involved.</p>
@@ -157,19 +157,19 @@
<h2>Quick Links</h2>
<div class="links-grid">
<a href="full-documentation.html" class="link-item">
<i class="fa fa-book"></i>
<i class="fas fa-book"></i>
<span>Full Documentation</span>
</a>
<a href="https://github.com/oib/AITBC/tree/main/docs" class="link-item" target="_blank">
<i class="fa fa-file-alt"></i>
<i class="fas fa-file-alt"></i>
<span>Markdown Docs</span>
</a>
<a href="https://aitbc.bubuit.net/Exchange/" class="link-item">
<i class="fa fa-exchange"></i>
<i class="fas fa-exchange"></i>
<span>Trade Exchange</span>
</a>
<a href="https://github.com/oib/AITBC" class="link-item">
<i class="fa fa-git"></i>
<i class="fas fa-git"></i>
<span>Source Code</span>
</a>
<a href="https://discord.gg/aitbc" class="link-item">
@@ -177,7 +177,7 @@
<span>Community</span>
</a>
<a href="mailto:aitbc@bubuit.net" class="link-item">
<i class="fa fa-envelope"></i>
<i class="fas fa-envelope"></i>
<span>Support</span>
</a>
</div>
@@ -192,10 +192,10 @@
<i class="fab fa-discord"></i> Join Discord
</a>
<a href="mailto:aitbc@bubuit.net" class="btn btn-outline">
<i class="fa fa-envelope"></i> Email Support
<i class="fas fa-envelope"></i> Email Support
</a>
<a href="#" class="btn btn-outline">
<i class="fa fa-comments"></i> Live Chat
<a href="https://discord.gg/aitbc" class="btn btn-outline">
<i class="fas fa-comments"></i> Live Chat
</a>
</div>
</section>
@@ -205,44 +205,50 @@
<!-- Footer -->
<footer>
<div class="container">
<p>&copy; 2026 AITBC. All rights reserved. | Last updated: January 24, 2026</p>
<p>&copy; 2026 AITBC. All rights reserved. | Last updated: February 13, 2026</p>
</div>
</footer>
<script>
// Search functionality
document.getElementById('searchInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
const searchTerm = e.target.value.toLowerCase();
if (searchTerm) {
// Simple search logic - in real implementation, this would search actual docs
alert(`Searching for: ${searchTerm}\n\nIn a full implementation, this would search through all documentation pages and show relevant results.`);
}
// Client-side search across doc pages
const docPages = [
{ title: 'Miner Documentation', desc: 'GPU mining, registration, earnings, Ollama setup', url: 'miners.html' },
{ title: 'Client Documentation', desc: 'Job submission, wallet, pricing, API reference', url: 'clients.html' },
{ title: 'Developer Documentation', desc: 'SDKs, APIs, contributing, bounties', url: 'developers.html' },
{ title: 'Full Documentation', desc: 'Architecture, installation, APIs, security, reference', url: 'full-documentation.html' },
{ title: 'Architecture & Components', desc: 'Blockchain node, coordinator, marketplace, wallet, explorer, pool hub', url: 'components.html' },
{ title: 'System Flow', desc: 'Job submission flow, component interaction, RPC calls', url: 'flowchart.html' },
{ title: 'Coordinator API', desc: 'FastAPI, job management, miner registration, receipts', url: 'coordinator-api.html' },
{ title: 'Blockchain Node', desc: 'PoA consensus, RPC, P2P, devnet, validator', url: 'blockchain-node.html' },
{ title: 'Trade Exchange', desc: 'Bitcoin to AITBC, QR payments, user management', url: 'trade-exchange.html' },
{ title: 'Marketplace Web', desc: 'GPU compute offers, bids, stats dashboard', url: 'marketplace-web.html' },
{ title: 'Wallet Daemon', desc: 'Encrypted keystore, Argon2id, REST API, receipts', url: 'wallet-daemon.html' },
{ title: 'Explorer Web', desc: 'Blocks, transactions, addresses, receipt tracking', url: 'explorer-web.html' },
{ title: 'Pool Hub', desc: 'Miner registry, scoring, Redis, PostgreSQL', url: 'pool-hub.html' },
{ title: 'API Reference', desc: 'REST endpoints, authentication, rate limits', url: 'api.html' },
{ title: 'Browser Wallet', desc: 'Chrome extension, secure crypto wallet', url: 'browser-wallet.html' },
];
document.getElementById('searchInput').addEventListener('input', function(e) {
const q = e.target.value.toLowerCase().trim();
let resultsEl = document.getElementById('searchResults');
if (!resultsEl) {
resultsEl = document.createElement('div');
resultsEl.id = 'searchResults';
resultsEl.className = 'search-results';
this.closest('.search-container').after(resultsEl);
}
if (!q || q.length < 2) { resultsEl.innerHTML = ''; return; }
const matches = docPages.filter(p => p.title.toLowerCase().includes(q) || p.desc.toLowerCase().includes(q));
if (matches.length === 0) {
resultsEl.innerHTML = '<div class="no-results">No results found</div>';
} else {
resultsEl.innerHTML = matches.map(p =>
`<a href="${p.url}"><strong>${p.title}</strong><br><small>${p.desc}</small></a>`
).join('');
}
});
// Add some interactivity
document.querySelectorAll('.reader-card').forEach(card => {
card.addEventListener('mouseenter', function() {
this.style.cursor = 'pointer';
});
});
</script>
<script>
// Check for saved theme preference or default to dark mode
const currentTheme = localStorage.getItem('theme') || 'dark';
if (currentTheme === 'light') {
document.body.classList.add('light');
document.getElementById('themeToggle').textContent = '🌙';
}
// Theme toggle functionality
document.getElementById('themeToggle').addEventListener('click', function() {
document.body.classList.toggle('light');
const isLight = document.body.classList.contains('light');
localStorage.setItem('theme', isLight ? 'light' : 'dark');
this.textContent = isLight ? '🌙' : '🌞';
});
</script></body>
<script src="js/theme.js"></script>
</body>
</html>