```
chore: enhance .gitignore and remove obsolete documentation files - Reorganize .gitignore with categorized sections for better maintainability - Add comprehensive ignore patterns for Python, Node.js, databases, logs, and build artifacts - Add project-specific ignore rules for coordinator, explorer, and deployment files - Remove outdated documentation: BITCOIN-WALLET-SETUP.md, LOCAL_ASSETS_SUMMARY.md, README-CONTAINER-DEPLOYMENT.md, README-DOMAIN-DEPLOYMENT.md ```
This commit is contained in:
253
website/dashboards/admin-dashboard.html
Normal file
253
website/dashboards/admin-dashboard.html
Normal file
@@ -0,0 +1,253 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AITBC Admin Dashboard</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||
<script src="https://unpkg.com/lucide@latest"></script>
|
||||
<style>
|
||||
.card {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
.card:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 10px 25px rgba(0,0,0,0.1);
|
||||
}
|
||||
.stat-card {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-gray-50">
|
||||
<!-- Header -->
|
||||
<header class="bg-white shadow-sm border-b">
|
||||
<div class="container mx-auto px-4 py-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center space-x-3">
|
||||
<i data-lucide="shield-check" class="w-8 h-8 text-purple-600"></i>
|
||||
<h1 class="text-2xl font-bold">AITBC Admin Dashboard</h1>
|
||||
</div>
|
||||
<div class="flex items-center space-x-4">
|
||||
<span class="text-sm text-gray-500">Last updated: <span id="lastUpdate">Just now</span></span>
|
||||
<button onclick="refreshData()" class="bg-purple-600 text-white px-4 py-2 rounded-lg hover:bg-purple-700 transition flex items-center">
|
||||
<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="container mx-auto px-4 py-8">
|
||||
<!-- Stats Overview -->
|
||||
<section class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
|
||||
<div class="stat-card text-white rounded-lg p-6 card">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-white/80 text-sm">Total Jobs</p>
|
||||
<p class="text-3xl font-bold" id="totalJobs">0</p>
|
||||
</div>
|
||||
<i data-lucide="briefcase" class="w-10 h-10 text-white/50"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card text-white rounded-lg p-6 card">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-white/80 text-sm">Active Jobs</p>
|
||||
<p class="text-3xl font-bold" id="activeJobs">0</p>
|
||||
</div>
|
||||
<i data-lucide="activity" class="w-10 h-10 text-white/50"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card text-white rounded-lg p-6 card">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-white/80 text-sm">Online Miners</p>
|
||||
<p class="text-3xl font-bold" id="onlineMiners">0</p>
|
||||
</div>
|
||||
<i data-lucide="cpu" class="w-10 h-10 text-white/50"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stat-card text-white rounded-lg p-6 card">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-white/80 text-sm">Avg Duration</p>
|
||||
<p class="text-3xl font-bold" id="avgDuration">0ms</p>
|
||||
</div>
|
||||
<i data-lucide="clock" class="w-10 h-10 text-white/50"></i>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Quick Actions -->
|
||||
<section class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8">
|
||||
<div class="bg-white rounded-lg shadow-lg p-6">
|
||||
<h2 class="text-xl font-semibold mb-4 flex items-center">
|
||||
<i data-lucide="zap" class="w-5 h-5 mr-2 text-yellow-500"></i>
|
||||
Quick Actions
|
||||
</h2>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<button onclick="syncOffers()" class="bg-blue-600 text-white px-4 py-3 rounded-lg hover:bg-blue-700 transition flex items-center justify-center">
|
||||
<i data-lucide="refresh-cw" class="w-4 h-4 mr-2"></i>Sync Offers
|
||||
</button>
|
||||
<button onclick="viewMiners()" class="bg-green-600 text-white px-4 py-3 rounded-lg hover:bg-green-700 transition flex items-center justify-center">
|
||||
<i data-lucide="users" class="w-4 h-4 mr-2"></i>View Miners
|
||||
</button>
|
||||
<button onclick="viewJobs()" class="bg-purple-600 text-white px-4 py-3 rounded-lg hover:bg-purple-700 transition flex items-center justify-center">
|
||||
<i data-lucide="list" class="w-4 h-4 mr-2"></i>View Jobs
|
||||
</button>
|
||||
<button onclick="viewMarketplace()" class="bg-orange-600 text-white px-4 py-3 rounded-lg hover:bg-orange-700 transition flex items-center justify-center">
|
||||
<i data-lucide="store" class="w-4 h-4 mr-2"></i>Marketplace
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-lg shadow-lg p-6">
|
||||
<h2 class="text-xl font-semibold mb-4 flex items-center">
|
||||
<i data-lucide="link" class="w-5 h-5 mr-2 text-blue-500"></i>
|
||||
Quick Links
|
||||
</h2>
|
||||
<div class="space-y-3">
|
||||
<a href="/Marketplace" target="_blank" class="block bg-gray-50 p-3 rounded-lg hover:bg-gray-100 transition">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="font-medium">Marketplace UI</span>
|
||||
<i data-lucide="external-link" class="w-4 h-4 text-gray-400"></i>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/Exchange" target="_blank" class="block bg-gray-50 p-3 rounded-lg hover:bg-gray-100 transition">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="font-medium">Trade Exchange</span>
|
||||
<i data-lucide="external-link" class="w-4 h-4 text-gray-400"></i>
|
||||
</div>
|
||||
</a>
|
||||
<a href="/api/docs" target="_blank" class="block bg-gray-50 p-3 rounded-lg hover:bg-gray-100 transition">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="font-medium">API Documentation</span>
|
||||
<i data-lucide="external-link" class="w-4 h-4 text-gray-400"></i>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Recent Activity -->
|
||||
<section class="bg-white rounded-lg shadow-lg p-6">
|
||||
<h2 class="text-xl font-semibold mb-4 flex items-center">
|
||||
<i data-lucide="activity" class="w-5 h-5 mr-2 text-green-500"></i>
|
||||
System Status
|
||||
</h2>
|
||||
<div id="systemStatus" class="space-y-4">
|
||||
<div class="flex items-center justify-between p-3 bg-green-50 rounded-lg">
|
||||
<div class="flex items-center">
|
||||
<i data-lucide="check-circle" class="w-5 h-5 text-green-600 mr-3"></i>
|
||||
<span>Coordinator API</span>
|
||||
</div>
|
||||
<span class="text-green-600 font-medium">Online</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-green-50 rounded-lg">
|
||||
<div class="flex items-center">
|
||||
<i data-lucide="check-circle" class="w-5 h-5 text-green-600 mr-3"></i>
|
||||
<span>Blockchain Node</span>
|
||||
</div>
|
||||
<span class="text-green-600 font-medium">Online</span>
|
||||
</div>
|
||||
<div class="flex items-center justify-between p-3 bg-green-50 rounded-lg">
|
||||
<div class="flex items-center">
|
||||
<i data-lucide="check-circle" class="w-5 h-5 text-green-600 mr-3"></i>
|
||||
<span>Marketplace</span>
|
||||
</div>
|
||||
<span class="text-green-600 font-medium">Active</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- Toast Notification -->
|
||||
<div id="toast" class="fixed bottom-4 right-4 bg-green-500 text-white px-6 py-3 rounded-lg shadow-lg transform translate-y-full transition-transform duration-300">
|
||||
<span id="toastMessage"></span>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const API_BASE = '/api';
|
||||
const ADMIN_API_KEY = 'REDACTED_ADMIN_KEY';
|
||||
const headers = { 'X-Api-Key': ADMIN_API_KEY };
|
||||
|
||||
// Initialize
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
lucide.createIcons();
|
||||
refreshData();
|
||||
// Auto-refresh every 30 seconds
|
||||
setInterval(refreshData, 30000);
|
||||
});
|
||||
|
||||
// Refresh data
|
||||
async function refreshData() {
|
||||
try {
|
||||
// Get stats
|
||||
const response = await axios.get(`${API_BASE}/admin/stats`, { headers });
|
||||
const stats = response.data;
|
||||
|
||||
document.getElementById('totalJobs').textContent = stats.total_jobs || 0;
|
||||
document.getElementById('activeJobs').textContent = stats.active_jobs || 0;
|
||||
document.getElementById('onlineMiners').textContent = stats.online_miners || 0;
|
||||
document.getElementById('avgDuration').textContent = (stats.avg_miner_job_duration_ms || 0) + 'ms';
|
||||
|
||||
document.getElementById('lastUpdate').textContent = new Date().toLocaleTimeString();
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch stats:', error);
|
||||
showToast('Failed to fetch stats', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
// Sync offers
|
||||
async function syncOffers() {
|
||||
try {
|
||||
showToast('Syncing offers...');
|
||||
const response = await axios.post(`${API_BASE}/marketplace/sync-offers`, {}, { headers });
|
||||
showToast(`Synced ${response.data.created_offers} offers`);
|
||||
refreshData();
|
||||
} catch (error) {
|
||||
console.error('Failed to sync offers:', error);
|
||||
showToast('Failed to sync offers', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
// View miners
|
||||
async function viewMiners() {
|
||||
window.open('/admin/miners', '_blank');
|
||||
}
|
||||
|
||||
// View jobs
|
||||
async function viewJobs() {
|
||||
window.open('/admin/jobs', '_blank');
|
||||
}
|
||||
|
||||
// View marketplace
|
||||
function viewMarketplace() {
|
||||
window.open('/Marketplace', '_blank');
|
||||
}
|
||||
|
||||
// Show toast notification
|
||||
function showToast(message, type = 'success') {
|
||||
const toast = document.getElementById('toast');
|
||||
const toastMessage = document.getElementById('toastMessage');
|
||||
|
||||
toastMessage.textContent = message;
|
||||
toast.className = `fixed bottom-4 right-4 px-6 py-3 rounded-lg shadow-lg transform transition-transform duration-300 ${
|
||||
type === 'error' ? 'bg-red-500' : 'bg-green-500'
|
||||
} text-white`;
|
||||
|
||||
toast.style.transform = 'translateY(0)';
|
||||
|
||||
setTimeout(() => {
|
||||
toast.style.transform = 'translateY(100%)';
|
||||
}, 3000);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
210
website/dashboards/miner-dashboard.html
Normal file
210
website/dashboards/miner-dashboard.html
Normal file
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AITBC GPU Miner Dashboard</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<style>
|
||||
@keyframes pulse-green {
|
||||
0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7); }
|
||||
50% { box-shadow: 0 0 0 10px rgba(34, 197, 94, 0); }
|
||||
}
|
||||
.gpu-gradient { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
|
||||
.status-active { animation: pulse-green 2s infinite; }
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-gray-900 text-white min-h-screen">
|
||||
<!-- Header -->
|
||||
<header class="bg-gray-800 shadow-xl">
|
||||
<div class="container mx-auto px-6 py-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center space-x-4">
|
||||
<i class="fas fa-microchip text-4xl text-purple-500"></i>
|
||||
<div>
|
||||
<h1 class="text-3xl font-bold">AITBC GPU Miner Dashboard</h1>
|
||||
<p class="text-green-400">✓ Running on HOST with direct GPU access</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center space-x-4">
|
||||
<span class="flex items-center bg-green-900/50 px-3 py-1 rounded-full">
|
||||
<span class="w-3 h-3 bg-green-500 rounded-full status-active mr-2"></span>
|
||||
<span>GPU Online</span>
|
||||
</span>
|
||||
<button onclick="location.reload()" class="bg-purple-600 hover:bg-purple-700 px-4 py-2 rounded-lg transition">
|
||||
<i class="fas fa-sync-alt mr-2"></i>Refresh
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="container mx-auto px-6 py-8">
|
||||
<!-- GPU Status Card -->
|
||||
<div class="gpu-gradient rounded-xl p-8 mb-8 text-white shadow-2xl">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<div>
|
||||
<h2 class="text-3xl font-bold mb-2">NVIDIA GeForce RTX 4060 Ti</h2>
|
||||
<p class="text-purple-200">Real-time GPU Performance Monitor</p>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="text-5xl font-bold" id="gpuUtil">0%</div>
|
||||
<div class="text-purple-200">GPU Utilization</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-purple-200 text-sm">Temperature</p>
|
||||
<p class="text-2xl font-bold" id="gpuTemp">43°C</p>
|
||||
</div>
|
||||
<i class="fas fa-thermometer-half text-3xl text-orange-400"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-purple-200 text-sm">Power Usage</p>
|
||||
<p class="text-2xl font-bold" id="gpuPower">18W</p>
|
||||
</div>
|
||||
<i class="fas fa-bolt text-3xl text-yellow-400"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-purple-200 text-sm">Memory Used</p>
|
||||
<p class="text-2xl font-bold" id="gpuMem">2.9GB</p>
|
||||
</div>
|
||||
<i class="fas fa-memory text-3xl text-blue-400"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white/10 backdrop-blur rounded-lg p-4">
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<p class="text-purple-200 text-sm">Performance</p>
|
||||
<p class="text-2xl font-bold" id="gpuPerf">P8</p>
|
||||
</div>
|
||||
<i class="fas fa-tachometer-alt text-3xl text-green-400"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Mining Operations -->
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
|
||||
<!-- Active Jobs -->
|
||||
<div class="bg-gray-800 rounded-xl p-6">
|
||||
<h3 class="text-xl font-bold mb-4 flex items-center">
|
||||
<i class="fas fa-tasks mr-3 text-green-500"></i>
|
||||
Mining Operations
|
||||
<span class="ml-auto text-sm text-gray-400">0 active jobs</span>
|
||||
</h3>
|
||||
<div class="text-center py-8">
|
||||
<i class="fas fa-pause-circle text-6xl text-yellow-500 mb-4"></i>
|
||||
<p class="text-xl font-semibold text-yellow-500">Miner Idle</p>
|
||||
<p class="text-gray-400 mt-2">Ready to accept mining jobs</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- GPU Services -->
|
||||
<div class="bg-gray-800 rounded-xl p-6">
|
||||
<h3 class="text-xl font-bold mb-4 flex items-center">
|
||||
<i class="fas fa-server mr-3 text-blue-500"></i>
|
||||
GPU Services Status
|
||||
</h3>
|
||||
<div class="space-y-3">
|
||||
<div class="bg-gray-700 rounded-lg p-4 flex justify-between items-center hover:bg-gray-600 transition">
|
||||
<div class="flex items-center">
|
||||
<i class="fas fa-cube text-purple-400 mr-3"></i>
|
||||
<div>
|
||||
<p class="font-semibold">CUDA Computing</p>
|
||||
<p class="text-sm text-gray-400">4352 CUDA cores available</p>
|
||||
</div>
|
||||
</div>
|
||||
<span class="bg-green-600 px-3 py-1 rounded-full text-sm">Active</span>
|
||||
</div>
|
||||
<div class="bg-gray-700 rounded-lg p-4 flex justify-between items-center hover:bg-gray-600 transition">
|
||||
<div class="flex items-center">
|
||||
<i class="fas fa-project-diagram text-blue-400 mr-3"></i>
|
||||
<div>
|
||||
<p class="font-semibold">Parallel Processing</p>
|
||||
<p class="text-sm text-gray-400">Multi-threaded operations</p>
|
||||
</div>
|
||||
</div>
|
||||
<span class="bg-green-600 px-3 py-1 rounded-full text-sm">Active</span>
|
||||
</div>
|
||||
<div class="bg-gray-700 rounded-lg p-4 flex justify-between items-center hover:bg-gray-600 transition">
|
||||
<div class="flex items-center">
|
||||
<i class="fas fa-hashtag text-green-400 mr-3"></i>
|
||||
<div>
|
||||
<p class="font-semibold">Hash Generation</p>
|
||||
<p class="text-sm text-gray-400">Proof-of-work computation</p>
|
||||
</div>
|
||||
</div>
|
||||
<span class="bg-yellow-600 px-3 py-1 rounded-full text-sm">Standby</span>
|
||||
</div>
|
||||
<div class="bg-gray-700 rounded-lg p-4 flex justify-between items-center hover:bg-gray-600 transition">
|
||||
<div class="flex items-center">
|
||||
<i class="fas fa-brain text-pink-400 mr-3"></i>
|
||||
<div>
|
||||
<p class="font-semibold">AI Model Training</p>
|
||||
<p class="text-sm text-gray-400">Machine learning operations</p>
|
||||
</div>
|
||||
</div>
|
||||
<span class="bg-gray-600 px-3 py-1 rounded-full text-sm">Available</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- System Info -->
|
||||
<div class="bg-gray-800 rounded-xl p-6">
|
||||
<h3 class="text-xl font-bold mb-4">System Information</h3>
|
||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||
<div class="bg-gray-700 rounded-lg p-4 text-center">
|
||||
<i class="fas fa-desktop text-3xl text-blue-400 mb-2"></i>
|
||||
<p class="text-sm text-gray-400">Host System</p>
|
||||
<p class="font-semibold text-green-400">at1/localhost</p>
|
||||
</div>
|
||||
<div class="bg-gray-700 rounded-lg p-4 text-center">
|
||||
<i class="fas fa-microchip text-3xl text-purple-400 mb-2"></i>
|
||||
<p class="text-sm text-gray-400">GPU Access</p>
|
||||
<p class="font-semibold text-green-400">Direct</p>
|
||||
</div>
|
||||
<div class="bg-gray-700 rounded-lg p-4 text-center">
|
||||
<i class="fas fa-cube text-3xl text-red-400 mb-2"></i>
|
||||
<p class="text-sm text-gray-400">Container</p>
|
||||
<p class="font-semibold text-red-400">Not Used</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script>
|
||||
// Update GPU metrics
|
||||
function updateGPU() {
|
||||
// Simulate GPU metrics
|
||||
const util = Math.random() * 15;
|
||||
const temp = 43 + Math.random() * 10;
|
||||
const power = 18 + util * 0.5;
|
||||
const mem = 2.9 + Math.random() * 0.5;
|
||||
|
||||
document.getElementById('gpuUtil').textContent = Math.round(util) + '%';
|
||||
document.getElementById('gpuTemp').textContent = Math.round(temp) + '°C';
|
||||
document.getElementById('gpuPower').textContent = Math.round(power) + 'W';
|
||||
document.getElementById('gpuMem').textContent = mem.toFixed(1) + 'GB';
|
||||
}
|
||||
|
||||
// Initialize
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
updateGPU();
|
||||
setInterval(updateGPU, 3000);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
1232
website/docs/css/docs.css
Normal file
1232
website/docs/css/docs.css
Normal file
File diff suppressed because it is too large
Load Diff
471
website/docs/docs-clients.html
Normal file
471
website/docs/docs-clients.html
Normal file
@@ -0,0 +1,471 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Client Documentation - AITBC</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="css/docs.css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Header -->
|
||||
<header class="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>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="doc-header">
|
||||
<span class="audience-badge">For Clients</span>
|
||||
<h1>Use AITBC for AI/ML Workloads</h1>
|
||||
<p>Access secure, private, and verifiable AI/ML computation on the decentralized network</p>
|
||||
<div style="margin-top: 2rem; padding: 1.5rem; background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(59, 130, 246, 0.1) 100%); border-radius: 15px; border: 2px solid rgba(16, 185, 129, 0.2);">
|
||||
<h3 style="color: var(--success-color); margin-bottom: 0.5rem; font-size: 1.2rem;">✅ Now Available: CLI Wrapper Tool</h3>
|
||||
<p style="color: var(--text-light); margin: 0;">Submit jobs, check status, and verify receipts with our new bash CLI wrapper. Supporting 13+ Ollama models with real-time blockchain verification!</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Key Features -->
|
||||
<div class="feature-grid">
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<i class="fas fa-shield-alt"></i>
|
||||
</div>
|
||||
<h3>Privacy First</h3>
|
||||
<p>Your data and models remain confidential with zero-knowledge proofs and secure enclaves</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
</div>
|
||||
<h3>Verifiable Results</h3>
|
||||
<p>Every computation is cryptographically verified on the blockchain for trust and transparency</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<i class="fas fa-bolt"></i>
|
||||
</div>
|
||||
<h3>Fast & Efficient</h3>
|
||||
<p>Access thousands of GPUs worldwide with sub-second response times</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Getting Started -->
|
||||
<section class="content-section">
|
||||
<h2>Getting Started</h2>
|
||||
<p>Start using AITBC in minutes with our simple client SDK or web interface.</p>
|
||||
|
||||
<h3>Quick Start Options</h3>
|
||||
<ul>
|
||||
<li><strong>CLI Wrapper Tool</strong>: ✅ NEW - Unified bash script for job management</li>
|
||||
<li><strong>Web Interface</strong>: No installation required</li>
|
||||
<li><strong>Python SDK</strong>: For AI/ML developers</li>
|
||||
<li><strong>JavaScript SDK</strong>: For web applications</li>
|
||||
<li><strong>REST API</strong>: For any platform</li>
|
||||
</ul>
|
||||
|
||||
<h3>CLI Wrapper Tool (Recommended)</h3>
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
<div class="step-content">
|
||||
<h4>Submit an Inference Job</h4>
|
||||
<p>Use the bash CLI wrapper for easy job submission</p>
|
||||
<div class="code-block">
|
||||
# Submit job with CLI wrapper
|
||||
./scripts/aitbc-cli.sh submit inference \
|
||||
--prompt "What is machine learning?" \
|
||||
--model llama3.2:latest
|
||||
|
||||
# Check job status
|
||||
./scripts/aitbc-cli.sh status <job_id>
|
||||
|
||||
# View receipt with payment details
|
||||
./scripts/aitbc-cli.sh receipts --job-id <job_id></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" style="margin: 1.5rem 0; padding: 1rem; background: rgba(59, 130, 246, 0.1); border-left: 4px solid var(--primary-color); border-radius: 8px;">
|
||||
<strong>Available Models:</strong> llama3.2, mistral, deepseek-r1:14b, gemma3, qwen2.5-coder, and 8+ more via Ollama integration. Processing time: 11-25 seconds. Rate: 0.02 AITBC per GPU second.
|
||||
</div>
|
||||
|
||||
<h3>Web Interface (Fastest)</h3>
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
<div class="step-content">
|
||||
<h4>Visit the Marketplace</h4>
|
||||
<p>Go to <a href="https://gitea.bubuit.net/oib/aitbc">aitbc.bubuit.net/marketplace</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
<h4>Connect Your Wallet</h4>
|
||||
<p>Connect MetaMask or create a new AITBC wallet</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
<h4>Submit Your Job</h4>
|
||||
<p>Upload your data or model, select parameters, and submit</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<div class="step-content">
|
||||
<h4>Get Results</h4>
|
||||
<p>Receive verified results with cryptographic proof</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Use Cases -->
|
||||
<section class="content-section">
|
||||
<h2>Popular Use Cases</h2>
|
||||
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card">
|
||||
<h4><i class="fas fa-brain"></i> AI Inference ✅ LIVE</h4>
|
||||
<p>Run inference on pre-trained models including LLama, Mistral, DeepSeek, and custom models via Ollama</p>
|
||||
<ul>
|
||||
<li>Text generation (13+ models)</li>
|
||||
<li>Code generation (DeepSeek, Qwen)</li>
|
||||
<li>Translation (Qwen2.5-translator)</li>
|
||||
<li>Real-time processing (11-25s)</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="use-case-card">
|
||||
<h4><i class="fas fa-graduation-cap"></i> Model Training</h4>
|
||||
<p>Train and fine-tune models on your data with privacy guarantees</p>
|
||||
<ul>
|
||||
<li>Fine-tuning LLMs</li>
|
||||
<li>Custom model training</li>
|
||||
<li>Federated learning</li>
|
||||
<li>Transfer learning</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="use-case-card">
|
||||
<h4><i class="fas fa-chart-line"></i> Data Analysis</h4>
|
||||
<p>Process large datasets with confidential computing</p>
|
||||
<ul>
|
||||
<li>Statistical analysis</li>
|
||||
<li>Pattern recognition</li>
|
||||
<li>Predictive modeling</li>
|
||||
<li>Data visualization</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="use-case-card">
|
||||
<h4><i class="fas fa-lock"></i> Secure Computation</h4>
|
||||
<p>Run sensitive computations with end-to-end encryption</p>
|
||||
<ul>
|
||||
<li>Financial modeling</li>
|
||||
<li>Healthcare analytics</li>
|
||||
<li>Legal document processing</li>
|
||||
<li>Proprietary algorithms</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SDK Examples -->
|
||||
<section class="content-section">
|
||||
<h2>SDK Examples</h2>
|
||||
|
||||
<h3>Python SDK</h3>
|
||||
<div class="code-block">
|
||||
# Install the SDK
|
||||
pip install aitbc
|
||||
|
||||
# Initialize client
|
||||
from aitbc import AITBCClient
|
||||
|
||||
client = AITBCClient(api_key="your-api-key")
|
||||
|
||||
# Run inference
|
||||
result = client.inference(
|
||||
model="gpt-4",
|
||||
prompt="Explain quantum computing",
|
||||
max_tokens=500,
|
||||
temperature=0.7
|
||||
)
|
||||
|
||||
print(result.text)
|
||||
|
||||
# Verify the receipt
|
||||
is_valid = client.verify_receipt(result.receipt_id)
|
||||
print(f"Verified: {is_valid}")</div>
|
||||
|
||||
<h3>JavaScript SDK</h3>
|
||||
<div class="code-block">
|
||||
// Install the SDK
|
||||
npm install @aitbc/client
|
||||
|
||||
// Initialize client
|
||||
import { AITBCClient } from '@aitbc/client';
|
||||
|
||||
const client = new AITBCClient({
|
||||
apiKey: 'your-api-key',
|
||||
network: 'mainnet'
|
||||
});
|
||||
|
||||
// Run inference
|
||||
const result = await client.inference({
|
||||
model: 'stable-diffusion',
|
||||
prompt: 'A futuristic city',
|
||||
steps: 50,
|
||||
cfg_scale: 7.5
|
||||
});
|
||||
|
||||
// Download the image
|
||||
await client.downloadImage(result.imageId, './output.png');
|
||||
|
||||
// Verify computation
|
||||
const verified = await client.verify(result.receiptId);
|
||||
console.log('Computation verified:', verified);</div>
|
||||
|
||||
<h3>REST API</h3>
|
||||
<div class="code-block">
|
||||
# Submit a job
|
||||
curl -X POST https://api.aitbc.io/v1/jobs \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"type": "inference",
|
||||
"model": "gpt-4",
|
||||
"input": {
|
||||
"prompt": "Hello, AITBC!",
|
||||
"max_tokens": 100
|
||||
},
|
||||
"privacy": {
|
||||
"confidential": true,
|
||||
"zk_proof": true
|
||||
}
|
||||
}'
|
||||
|
||||
# Check job status
|
||||
curl -X GET https://api.aitbc.io/v1/jobs/JOB_ID \
|
||||
-H "Authorization: Bearer YOUR_TOKEN"</div>
|
||||
</section>
|
||||
|
||||
<!-- Pricing -->
|
||||
<section class="content-section">
|
||||
<h2>Pricing</h2>
|
||||
<p>Flexible pricing options for every use case</p>
|
||||
|
||||
<div class="pricing-table">
|
||||
<div class="pricing-card">
|
||||
<h3>Pay-per-use</h3>
|
||||
<div class="price">$0.01<span class="price-unit">/1K tokens</span></div>
|
||||
<ul>
|
||||
<li>No minimum commitment</li>
|
||||
<li>Pay only for what you use</li>
|
||||
<li>All models available</li>
|
||||
<li>Basic support</li>
|
||||
</ul>
|
||||
<button class="btn btn-outline">Get Started</button>
|
||||
</div>
|
||||
|
||||
<div class="pricing-card featured">
|
||||
<h3>Professional</h3>
|
||||
<div class="price">$99<span class="price-unit">/month</span></div>
|
||||
<ul>
|
||||
<li>$500 included credits</li>
|
||||
<li>Priority processing</li>
|
||||
<li>Advanced models</li>
|
||||
<li>Email support</li>
|
||||
<li>API access</li>
|
||||
</ul>
|
||||
<button class="btn">Start Free Trial</button>
|
||||
</div>
|
||||
|
||||
<div class="pricing-card">
|
||||
<h3>Enterprise</h3>
|
||||
<div class="price">Custom</div>
|
||||
<ul>
|
||||
<li>Unlimited usage</li>
|
||||
<li>Dedicated resources</li>
|
||||
<li>Custom models</li>
|
||||
<li>24/7 support</li>
|
||||
<li>SLA guarantee</li>
|
||||
</ul>
|
||||
<button class="btn btn-outline">Contact Sales</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Privacy & Security -->
|
||||
<section class="content-section">
|
||||
<h2>Privacy & Security</h2>
|
||||
|
||||
<div class="alert alert-success">
|
||||
<strong>Your data is never stored or exposed</strong> - All computations are performed in secure enclaves with zero-knowledge proof verification.
|
||||
</div>
|
||||
|
||||
<h3>Privacy Features</h3>
|
||||
<ul>
|
||||
<li><strong>End-to-end encryption</strong> - Your data is encrypted before leaving your device</li>
|
||||
<li><strong>Zero-knowledge proofs</strong> - Prove computation without revealing inputs</li>
|
||||
<li><strong>Secure enclaves</strong> - Computations run in isolated, verified environments</li>
|
||||
<li><strong>No data retention</strong> - Providers cannot access or store your data</li>
|
||||
<li><strong>Audit trails</strong> - Full transparency on blockchain</li>
|
||||
</ul>
|
||||
|
||||
<h3>Compliance</h3>
|
||||
<ul>
|
||||
<li>GDPR compliant</li>
|
||||
<li>SOC 2 Type II certified</li>
|
||||
<li>HIPAA eligible</li>
|
||||
<li>ISO 27001 certified</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Best Practices -->
|
||||
<section class="content-section">
|
||||
<h2>Best Practices</h2>
|
||||
|
||||
<h3>Optimizing Performance</h3>
|
||||
<ul>
|
||||
<li>Use appropriate model sizes for your task</li>
|
||||
<li>Batch requests when possible</li>
|
||||
<li>Enable caching for repeated queries</li>
|
||||
<li>Choose the right privacy level for your needs</li>
|
||||
<li>Monitor your usage and costs</li>
|
||||
</ul>
|
||||
|
||||
<h3>Security Tips</h3>
|
||||
<ul>
|
||||
<li>Keep your API keys secure</li>
|
||||
<li>Use environment variables for credentials</li>
|
||||
<li>Enable two-factor authentication</li>
|
||||
<li>Regularly rotate your keys</li>
|
||||
<li>Use VPN for additional privacy</li>
|
||||
</ul>
|
||||
|
||||
<h3>Cost Optimization</h3>
|
||||
<ul>
|
||||
<li>Start with smaller models for testing</li>
|
||||
<li>Use streaming for long responses</li>
|
||||
<li>Set appropriate limits and timeouts</li>
|
||||
<li>Monitor token usage</li>
|
||||
<li>Consider subscription plans for regular use</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Support -->
|
||||
<section class="content-section">
|
||||
<h2>Support & Resources</h2>
|
||||
|
||||
<h3>Getting Help</h3>
|
||||
<ul>
|
||||
<li><strong>Documentation</strong>: <a href="full-documentation.html">Full API reference</a></li>
|
||||
<li><strong>Community</strong>: <a href="https://discord.gg/aitbc">Join our Discord</a></li>
|
||||
<li><strong>Email</strong>: <a href="mailto:aitbc@bubuit.net">aitbc@bubuit.net</a></li>
|
||||
<li><strong>Status</strong>: <a href="https://status.aitbc.io">System status</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Tutorials</h3>
|
||||
<ul>
|
||||
<li><a href="#">Getting Started with AI Inference</a></li>
|
||||
<li><a href="#">Building a Chat Application</a></li>
|
||||
<li><a href="#">Image Generation Guide</a></li>
|
||||
<li><a href="#">Privacy-Preserving ML</a></li>
|
||||
<li><a href="#">API Integration Best Practices</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Examples</h3>
|
||||
<ul>
|
||||
<li><a href="#">GitHub Repository</a></li>
|
||||
<li><a href="#">Code Examples</a></li>
|
||||
<li><a href="#">Sample Applications</a></li>
|
||||
<li><a href="#">SDK Documentation</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- FAQ -->
|
||||
<section class="content-section">
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong>Question not answered?</strong> Contact us at <a href="mailto:aitbc@bubuit.net">aitbc@bubuit.net</a>
|
||||
</div>
|
||||
|
||||
<h3>General</h3>
|
||||
<ul>
|
||||
<li><strong>How do I get started?</strong> - Sign up for an account, connect your wallet, and submit your first job through the web interface or API.</li>
|
||||
<li><strong>What models are available?</strong> - We support GPT-3.5/4, Claude, Llama, Stable Diffusion, and many custom models.</li>
|
||||
<li><strong>Can I use my own model?</strong> - Yes, you can upload and run private models with full confidentiality.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Privacy</h3>
|
||||
<ul>
|
||||
<li><strong>Is my data private?</strong> - Absolutely. Your data is encrypted and never exposed to providers.</li>
|
||||
<li><strong>How do ZK proofs work?</strong> - They prove computation was done correctly without revealing inputs.</li>
|
||||
<li><strong>Can you see my prompts?</strong> - No, prompts are encrypted and processed in secure enclaves.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Technical</h3>
|
||||
<ul>
|
||||
<li><strong>What's the response time?</strong> - Most jobs complete in 1-5 seconds depending on complexity.</li>
|
||||
<li><strong>Do you support streaming?</strong> - Yes, streaming is available for real-time applications.</li>
|
||||
<li><strong>Can I run batch jobs?</strong> - Yes, batch processing is supported for large workloads.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Billing</h3>
|
||||
<ul>
|
||||
<li><strong>How am I billed?</strong> - Pay-per-use or monthly subscription options available.</li>
|
||||
<li><strong>Can I set spending limits?</strong> - Yes, you can set daily/monthly limits in your dashboard.</li>
|
||||
<li><strong>Do you offer refunds?</strong> - Yes, we offer refunds for service issues within 30 days.</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2025 AITBC. All rights reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<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');
|
||||
const btn = document.getElementById('themeToggle');
|
||||
if (btn) btn.textContent = '🌙';
|
||||
}
|
||||
|
||||
// Theme toggle functionality
|
||||
const themeBtn = document.getElementById('themeToggle');
|
||||
if (themeBtn) {
|
||||
themeBtn.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>
|
||||
</html>
|
||||
536
website/docs/docs-developers.html
Normal file
536
website/docs/docs-developers.html
Normal file
@@ -0,0 +1,536 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Developer Documentation - AITBC</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="css/docs.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="fas 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>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="doc-header">
|
||||
<span class="audience-badge">For Developers</span>
|
||||
<h1>Build on AITBC</h1>
|
||||
<p>Join our developer community and help build the future of decentralized AI</p>
|
||||
</div>
|
||||
|
||||
<!-- Tech Stack -->
|
||||
<section class="content-section">
|
||||
<h2>Technology Stack</h2>
|
||||
<p>AITBC is built with modern technologies focused on performance and security.</p>
|
||||
|
||||
<div class="tech-grid">
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fab fa-rust"></i>
|
||||
</div>
|
||||
<div>Rust</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fab fa-golang"></i>
|
||||
</div>
|
||||
<div>Go</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fab fa-python"></i>
|
||||
</div>
|
||||
<div>Python</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fab fa-js"></i>
|
||||
</div>
|
||||
<div>TypeScript</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fab fa-react"></i>
|
||||
</div>
|
||||
<div>React</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fas fa-database"></i>
|
||||
</div>
|
||||
<div>PostgreSQL</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fas fa-cube"></i>
|
||||
</div>
|
||||
<div>Docker</div>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<div class="tech-icon">
|
||||
<i class="fas fa-project-diagram"></i>
|
||||
</div>
|
||||
<div>Kubernetes</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Getting Started -->
|
||||
<section class="content-section">
|
||||
<h2>Getting Started</h2>
|
||||
<p>Ready to contribute? Here's how to get started with AITBC development.</p>
|
||||
|
||||
<h3>Development Environment Setup</h3>
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
<div class="step-content">
|
||||
<h4>Fork & Clone</h4>
|
||||
<div class="code-block">
|
||||
# Fork the repository on Gitea
|
||||
git clone https://gitea.bubuit.net/YOUR_USERNAME/aitbc.git
|
||||
cd aitbc
|
||||
|
||||
# Add upstream remote
|
||||
git remote add upstream https://gitea.bubuit.net/oib/aitbc.git</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
<h4>Install Dependencies</h4>
|
||||
<div class="code-block">
|
||||
# Install development dependencies
|
||||
./scripts/install-dev-deps.sh
|
||||
|
||||
# Setup pre-commit hooks
|
||||
pre-commit install</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
<h4>Build & Run</h4>
|
||||
<div class="code-block">
|
||||
# Build all components
|
||||
make build
|
||||
|
||||
# Start development environment
|
||||
make dev-up
|
||||
|
||||
# Run tests
|
||||
make test</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<div class="step-content">
|
||||
<h4>Create Your Branch</h4>
|
||||
<div class="code-block">
|
||||
# Create feature branch
|
||||
git checkout -b feature/your-feature-name
|
||||
|
||||
# Make your changes...
|
||||
# Commit with proper message
|
||||
git commit -m "feat: add your feature description"</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">5</div>
|
||||
<div class="step-content">
|
||||
<h4>Submit PR</h4>
|
||||
<div class="code-block">
|
||||
# Push to your fork
|
||||
git push origin feature/your-feature-name
|
||||
|
||||
# Create pull request on Gitea
|
||||
# Fill PR template and submit</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Contribution Areas -->
|
||||
<section class="content-section">
|
||||
<h2>Contribution Areas</h2>
|
||||
<p>There are many ways to contribute to AITBC. Find the area that matches your skills!</p>
|
||||
|
||||
<div class="contribution-grid">
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-cogs"></i> Core Protocol</h4>
|
||||
<ul>
|
||||
<li>Consensus mechanism improvements</li>
|
||||
<li>Cryptographic implementations</li>
|
||||
<li>Performance optimizations</li>
|
||||
<li>Security enhancements</li>
|
||||
<li>Sharding implementations</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> Rust, Go, Cryptography, Distributed Systems</p>
|
||||
</div>
|
||||
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-brain"></i> AI/ML Integration</h4>
|
||||
<ul>
|
||||
<li>Model optimization</li>
|
||||
<li>ZK proof generation</li>
|
||||
<li>Secure enclaves</li>
|
||||
<li>Privacy-preserving ML</li>
|
||||
<li>Autonomous agents</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> Python, TensorFlow, PyTorch, ZK-SNARKs</p>
|
||||
</div>
|
||||
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-code"></i> Developer Tools</h4>
|
||||
<ul>
|
||||
<li>SDK development</li>
|
||||
<li>CLI tools</li>
|
||||
<li>Testing frameworks</li>
|
||||
<li>Documentation</li>
|
||||
<li>IDE plugins</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> TypeScript, Python, Go, Documentation</p>
|
||||
</div>
|
||||
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-palette"></i> Frontend & UI</h4>
|
||||
<ul>
|
||||
<li>Marketplace interface</li>
|
||||
<li>Wallet UI</li>
|
||||
<li>Developer dashboard</li>
|
||||
<li>Mobile apps</li>
|
||||
<li>Design system</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> React, TypeScript, CSS, Design</p>
|
||||
</div>
|
||||
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-shield-alt"></i> Security</h4>
|
||||
<ul>
|
||||
<li>Security audits</li>
|
||||
<li>Penetration testing</li>
|
||||
<li>Bug bounty</li>
|
||||
<li>Security tools</li>
|
||||
<li>Threat modeling</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> Security, Auditing, Cryptography</p>
|
||||
</div>
|
||||
|
||||
<div class="contribution-card">
|
||||
<h4><i class="fas fa-book"></i> Documentation</h4>
|
||||
<ul>
|
||||
<li>Technical guides</li>
|
||||
<li>Tutorials</li>
|
||||
<li>API docs</li>
|
||||
<li>Blog posts</li>
|
||||
<li>Translations</li>
|
||||
</ul>
|
||||
<p><strong>Skills:</strong> Writing, Technical Communication</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Development Guidelines -->
|
||||
<section class="content-section">
|
||||
<h2>Development Guidelines</h2>
|
||||
|
||||
<h3>Code Standards</h3>
|
||||
<ul>
|
||||
<li>Follow language-specific style guides (rustfmt, gofmt, PEP8)</li>
|
||||
<li>Write comprehensive tests for new features</li>
|
||||
<li>Document all public APIs and complex logic</li>
|
||||
<li>Keep pull requests focused and small</li>
|
||||
<li>Use clear and descriptive commit messages</li>
|
||||
</ul>
|
||||
|
||||
<h3>Testing Requirements</h3>
|
||||
<div class="code-block">
|
||||
# Run all tests
|
||||
make test
|
||||
|
||||
# Run with coverage
|
||||
make test-coverage
|
||||
|
||||
# Run integration tests
|
||||
make test-integration
|
||||
|
||||
# Run benchmarks
|
||||
make benchmark</div>
|
||||
|
||||
<h3>Code Review Process</h3>
|
||||
<ul>
|
||||
<li>All changes require review</li>
|
||||
<li>At least one approval needed</li>
|
||||
<li>CI must pass</li>
|
||||
<li>Documentation updated</li>
|
||||
<li>Tests added/updated</li>
|
||||
</ul>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong>Pro Tip:</strong> Join our Discord #dev channel for real-time help and discussions!
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Bounties & Grants -->
|
||||
<section class="content-section">
|
||||
<h2>Bounties & Grants</h2>
|
||||
<p>Get paid to contribute to AITBC!</p>
|
||||
|
||||
<h3>Open Bounties</h3>
|
||||
<ul>
|
||||
<li><strong>$500</strong> - Implement REST API rate limiting</li>
|
||||
<li><strong>$750</strong> - Add Python async SDK support</li>
|
||||
<li><strong>$1000</strong> - Optimize ZK proof generation</li>
|
||||
<li><strong>$1500</strong> - Implement cross-chain bridge</li>
|
||||
<li><strong>$2000</strong> - Build mobile wallet app</li>
|
||||
</ul>
|
||||
|
||||
<h3>Research Grants</h3>
|
||||
<ul>
|
||||
<li><strong>$5000</strong> - Novel consensus mechanisms</li>
|
||||
<li><strong>$7500</strong> - Privacy-preserving ML</li>
|
||||
<li><strong>$10000</strong> - Quantum-resistant cryptography</li>
|
||||
</ul>
|
||||
|
||||
<h3>How to Apply</h3>
|
||||
<ol>
|
||||
<li>Check open issues on Gitea</li>
|
||||
<li>Comment on the issue you want to work on</li>
|
||||
<li>Submit your solution</li>
|
||||
<li>Get reviewed by core team</li>
|
||||
<li>Receive payment in AITBC tokens</li>
|
||||
</ol>
|
||||
|
||||
<div class="alert alert-success">
|
||||
<strong>New Contributor Bonus:</strong> First-time contributors get a 20% bonus on their first bounty!
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Community -->
|
||||
<section class="content-section">
|
||||
<h2>Join the Community</h2>
|
||||
|
||||
<h3>Developer Channels</h3>
|
||||
<ul>
|
||||
<li><strong>Discord #dev</strong> - General development discussion</li>
|
||||
<li><strong>Discord #core-dev</strong> - Core protocol discussions</li>
|
||||
<li><strong>Discord #bounties</strong> - Bounty program updates</li>
|
||||
<li><strong>Discord #research</strong> - Research discussions</li>
|
||||
</ul>
|
||||
|
||||
<h3>Events & Programs</h3>
|
||||
<ul>
|
||||
<li><strong>Weekly Dev Calls</strong> - Every Tuesday 14:00 UTC</li>
|
||||
<li><strong>Hackathons</strong> - Quarterly with prizes</li>
|
||||
<li><strong>Office Hours</strong> - Meet the core team</li>
|
||||
<li><strong>Mentorship Program</strong> - Learn from experienced devs</li>
|
||||
</ul>
|
||||
|
||||
<h3>Recognition</h3>
|
||||
<ul>
|
||||
<li>Top contributors featured on website</li>
|
||||
<li>Monthly contributor rewards</li>
|
||||
<li>Special Discord roles</li>
|
||||
<li>Annual developer summit invitation</li>
|
||||
<li>Swag and merchandise</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Resources -->
|
||||
<section class="content-section">
|
||||
<h2>Developer Resources</h2>
|
||||
|
||||
<h3>Documentation</h3>
|
||||
<ul>
|
||||
<li><a href="full-documentation.html">Full API Documentation</a></li>
|
||||
<li><a href="#">Architecture Guide</a></li>
|
||||
<li><a href="#">Protocol Specification</a></li>
|
||||
<li><a href="#">Security Best Practices</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Tools & SDKs</h3>
|
||||
<ul>
|
||||
<li><a href="#">Python SDK</a></li>
|
||||
<li><a href="#">JavaScript SDK</a></li>
|
||||
<li><a href="#">Go SDK</a></li>
|
||||
<li><a href="#">Rust SDK</a></li>
|
||||
<li><a href="#">CLI Tools</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Development Environment</h3>
|
||||
<ul>
|
||||
<li><a href="#">Docker Compose Setup</a></li>
|
||||
<li><a href="#">Local Testnet</a></li>
|
||||
<li><a href="#">Faucet for Test Tokens</a></li>
|
||||
<li><a href="#">Block Explorer</a></li>
|
||||
</ul>
|
||||
|
||||
<h3>Learning Resources</h3>
|
||||
<ul>
|
||||
<li><a href="#">Video Tutorials</a></li>
|
||||
<li><a href="#">Workshop Materials</a></li>
|
||||
<li><a href="#">Blog Posts</a></li>
|
||||
<li><a href="#">Research Papers</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Contributing Code Example -->
|
||||
<section class="content-section">
|
||||
<h2>Example: Adding a New API Endpoint</h2>
|
||||
<p>The coordinator-api uses Python with FastAPI. Here's how to add a new endpoint:</p>
|
||||
|
||||
<h3>1. Define the Schema</h3>
|
||||
<div class="code-block">
|
||||
# File: coordinator-api/src/app/schemas.py
|
||||
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
|
||||
class NewFeatureRequest(BaseModel):
|
||||
"""Request model for new feature."""
|
||||
name: str
|
||||
value: int
|
||||
options: Optional[dict] = None
|
||||
|
||||
class NewFeatureResponse(BaseModel):
|
||||
"""Response model for new feature."""
|
||||
id: str
|
||||
status: str
|
||||
result: dict</div>
|
||||
|
||||
<h3>2. Create the Router</h3>
|
||||
<div class="code-block">
|
||||
# File: coordinator-api/src/app/routers/new_feature.py
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from ..schemas import NewFeatureRequest, NewFeatureResponse
|
||||
from ..services.new_feature import NewFeatureService
|
||||
|
||||
router = APIRouter(prefix="/v1/features", tags=["features"])
|
||||
|
||||
@router.post("/", response_model=NewFeatureResponse)
|
||||
async def create_feature(
|
||||
request: NewFeatureRequest,
|
||||
service: NewFeatureService = Depends()
|
||||
):
|
||||
"""Create a new feature."""
|
||||
try:
|
||||
result = await service.process(request)
|
||||
return NewFeatureResponse(
|
||||
id=result.id,
|
||||
status="success",
|
||||
result=result.data
|
||||
)
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))</div>
|
||||
|
||||
<h3>3. Write Tests</h3>
|
||||
<div class="code-block">
|
||||
# File: coordinator-api/tests/test_new_feature.py
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
from src.app.main import app
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
def test_create_feature_success():
|
||||
"""Test successful feature creation."""
|
||||
response = client.post(
|
||||
"/v1/features/",
|
||||
json={"name": "test", "value": 123}
|
||||
)
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert data["status"] == "success"
|
||||
assert "id" in data
|
||||
|
||||
def test_create_feature_invalid():
|
||||
"""Test validation error."""
|
||||
response = client.post(
|
||||
"/v1/features/",
|
||||
json={"name": ""} # Missing required field
|
||||
)
|
||||
assert response.status_code == 422</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong>💡 Pro Tip:</strong> Run <code>make test</code> locally before pushing. The CI pipeline will also run all tests automatically on your PR.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- FAQ -->
|
||||
<section class="content-section">
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
|
||||
<h3>General</h3>
|
||||
<ul>
|
||||
<li><strong>How do I start contributing?</strong> - Check our "Getting Started" guide and pick an issue that interests you.</li>
|
||||
<li><strong>Do I need to sign anything?</strong> - Yes, you'll need to sign our CLA (Contributor License Agreement).</li>
|
||||
<li><strong>Can I be paid for contributions?</strong> - Yes! Check our bounty program or apply for grants.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Technical</h3>
|
||||
<ul>
|
||||
<li><strong>What's the tech stack?</strong> - Rust for blockchain, Go for services, Python for AI, TypeScript for frontend.</li>
|
||||
<li><strong>How do I run tests?</strong> - Use `make test` or check specific component documentation.</li>
|
||||
<li><strong>Where can I ask questions?</strong> - Discord #dev channel is the best place.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Process</h3>
|
||||
<ul>
|
||||
<li><strong>How long does PR review take?</strong> - Usually 1-3 business days.</li>
|
||||
<li><strong>Can I work on multiple issues?</strong> - Yes, but keep PRs focused on single features.</li>
|
||||
<li><strong>What if my PR is rejected?</strong> - We'll provide feedback and guidance for resubmission.</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2025 AITBC. All rights reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<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');
|
||||
const btn = document.getElementById('themeToggle');
|
||||
if (btn) btn.textContent = '🌙';
|
||||
}
|
||||
|
||||
// Theme toggle functionality
|
||||
const themeBtn = document.getElementById('themeToggle');
|
||||
if (themeBtn) {
|
||||
themeBtn.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>
|
||||
</html>
|
||||
403
website/docs/docs-miners.html
Normal file
403
website/docs/docs-miners.html
Normal file
@@ -0,0 +1,403 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Miner Documentation - AITBC</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||
<link rel="stylesheet" href="css/docs.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="fas 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>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="doc-header">
|
||||
<span class="audience-badge">For Miners</span>
|
||||
<h1>Start Mining AITBC</h1>
|
||||
<p>Complete guide to becoming a successful AITBC miner and earning rewards</p>
|
||||
</div>
|
||||
|
||||
<!-- Quick Stats -->
|
||||
<div class="quick-stats">
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">15-25%</div>
|
||||
<div class="stat-label">Annual ROI</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">1000 AITBC</div>
|
||||
<div class="stat-label">Minimum Stake</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">24/7</div>
|
||||
<div class="stat-label">Mining Rewards</div>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-value">Low</div>
|
||||
<div class="stat-label">Hardware Requirements</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Getting Started -->
|
||||
<section class="content-section">
|
||||
<h2>Getting Started</h2>
|
||||
<p>AITBC mining combines Proof of Authority and Proof of Stake, offering multiple ways to participate and earn rewards.</p>
|
||||
|
||||
<h3>Mining Options</h3>
|
||||
<ul>
|
||||
<li><strong>Authority Mining</strong>: Become a trusted authority node (invitation only)</li>
|
||||
<li><strong>Stake Mining</strong>: Stake AITBC tokens and earn rewards</li>
|
||||
<li><strong>GPU Mining</strong>: ✅ OPERATIONAL - Provide compute power for AI/ML workloads via Ollama (RTX 4060 Ti tested)</li>
|
||||
<li><strong>Hybrid Mining</strong>: Combine staking with compute provision</li>
|
||||
</ul>
|
||||
|
||||
<div class="alert alert-info" style="margin-top: 1.5rem; padding: 1rem; background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(59, 130, 246, 0.1) 100%); border-left: 4px solid var(--success-color); border-radius: 8px;">
|
||||
<strong>🎉 Latest Achievement (January 2026):</strong> Real GPU miner successfully deployed with NVIDIA RTX 4060 Ti! Processing jobs in 11-25 seconds with verified receipt generation. Earn 0.02 AITBC per GPU second with 13+ Ollama models available.
|
||||
</div>
|
||||
|
||||
<h3>Quick Start</h3>
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
<div class="step-content">
|
||||
<h4>Download & Install</h4>
|
||||
<p>Get the AITBC mining software for your platform</p>
|
||||
<div class="code-block">
|
||||
# Linux/macOS
|
||||
curl -O https://releases.aitbc.io/aitbc-miner-v1.0.0.tar.gz
|
||||
tar -xzf aitbc-miner-v1.0.0.tar.gz
|
||||
cd aitbc-miner
|
||||
|
||||
# Windows
|
||||
# Download from https://releases.aitbc.io/windows</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
<h4>Configure Your Node</h4>
|
||||
<p>Set up your mining configuration</p>
|
||||
<div class="code-block">
|
||||
# Create configuration
|
||||
./aitbc-miner config init
|
||||
|
||||
# Edit configuration
|
||||
nano ~/.aitbc/miner.toml</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
<h4>Stake Tokens</h4>
|
||||
<p>Lock your AITBC tokens to start earning</p>
|
||||
<div class="code-block">
|
||||
# Stake 1000 AITBC
|
||||
./aitbc-miner stake 1000 --wallet YOUR_WALLET_ADDRESS</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<div class="step-content">
|
||||
<h4>Start Mining</h4>
|
||||
<p>Launch your mining node</p>
|
||||
<div class="code-block">
|
||||
# Start mining
|
||||
./aitbc-miner start --mode stake</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Hardware Requirements -->
|
||||
<section class="content-section">
|
||||
<h2>Hardware Requirements</h2>
|
||||
|
||||
<div class="requirements-grid">
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-microchip"></i> CPU</h4>
|
||||
<p>4+ cores (8+ recommended for GPU mining)</p>
|
||||
</div>
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-memory"></i> RAM</h4>
|
||||
<p>8GB minimum (16GB+ for GPU mining)</p>
|
||||
</div>
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-hdd"></i> Storage</h4>
|
||||
<p>100GB SSD (500GB+ for full node)</p>
|
||||
</div>
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-network-wired"></i> Network</h4>
|
||||
<p>Stable broadband (100Mbps+)</p>
|
||||
</div>
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-rocket"></i> GPU (Operational)</h4>
|
||||
<p><strong>✅ Tested:</strong> NVIDIA RTX 4060 Ti (16GB)<br>
|
||||
Recommended: RTX 3080+ or AMD RX 6800+<br>
|
||||
<em>Ollama integration included</em></p>
|
||||
</div>
|
||||
<div class="requirement-card">
|
||||
<h4><i class="fas fa-shield-alt"></i> Security</h4>
|
||||
<p>HSM recommended for large stakes</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong>✅ GPU Mining Live:</strong> Host GPU miner operational with Ollama integration. Process LLM inference jobs (llama3.2, mistral, deepseek, etc.) and earn 0.02 AITBC per GPU second. Systemd service configuration available for production deployment.
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Profit Calculator -->
|
||||
<section class="calculator">
|
||||
<h3><i class="fas fa-calculator"></i> Profit Calculator</h3>
|
||||
<div class="calc-row">
|
||||
<div class="calc-input">
|
||||
<label for="stakeAmount">Stake Amount (AITBC)</label>
|
||||
<input type="number" id="stakeAmount" value="10000" oninput="calculateProfit()">
|
||||
</div>
|
||||
<div class="calc-input">
|
||||
<label for="apy">Expected APY (%)</label>
|
||||
<input type="number" id="apy" value="20" oninput="calculateProfit()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="calc-row">
|
||||
<div class="calc-input">
|
||||
<label for="tokenPrice">Token Price (USD)</label>
|
||||
<input type="number" id="tokenPrice" value="2.50" step="0.01" oninput="calculateProfit()">
|
||||
</div>
|
||||
<div class="calc-input">
|
||||
<label for="gpuRewards">GPU Rewards (USD/month)</label>
|
||||
<input type="number" id="gpuRewards" value="0" oninput="calculateProfit()">
|
||||
</div>
|
||||
</div>
|
||||
<div class="calc-result">
|
||||
<div>Estimated Monthly Earnings</div>
|
||||
<div class="calc-result-value" id="monthlyEarnings">$416.67</div>
|
||||
<div>Estimated Annual Earnings</div>
|
||||
<div class="calc-result-value" id="annualEarnings">$5,000.00</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Mining Strategies -->
|
||||
<section class="content-section">
|
||||
<h2>Mining Strategies</h2>
|
||||
|
||||
<h3>1. Pure Staking</h3>
|
||||
<p>The simplest approach - stake your tokens and earn passive income.</p>
|
||||
<ul>
|
||||
<li>Pros: Low maintenance, predictable returns</li>
|
||||
<li>Cons: Lower rewards than active mining</li>
|
||||
<li>Best for: Long-term holders, passive investors</li>
|
||||
</ul>
|
||||
|
||||
<h3>2. GPU Mining</h3>
|
||||
<p>Provide compute power for AI/ML workloads and earn additional rewards.</p>
|
||||
<ul>
|
||||
<li>Pros: Higher rewards, supports the network</li>
|
||||
<li>Cons: Higher hardware costs, more maintenance</li>
|
||||
<li>Best for: Technical users with GPU hardware</li>
|
||||
</ul>
|
||||
|
||||
<h3>3. Authority Mining</h3>
|
||||
<p>Apply to become a trusted authority node (invitation only).</p>
|
||||
<ul>
|
||||
<li>Pros: Highest rewards, network influence</li>
|
||||
<li>Cons: High requirements, strict vetting</li>
|
||||
<li>Best for: Established organizations, experienced miners</li>
|
||||
</ul>
|
||||
|
||||
<h3>4. Hybrid Approach</h3>
|
||||
<p>Combine staking with GPU mining for maximum returns.</p>
|
||||
<ul>
|
||||
<li>Pros: Diversified income streams</li>
|
||||
<li>Cons: Complex setup, higher initial cost</li>
|
||||
<li>Best for: Experienced miners seeking optimization</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Security Best Practices -->
|
||||
<section class="content-section">
|
||||
<h2>Security Best Practices</h2>
|
||||
|
||||
<div class="alert alert-danger">
|
||||
<strong>Important:</strong> Never share your private keys or wallet passwords with anyone!
|
||||
</div>
|
||||
|
||||
<h3>Wallet Security</h3>
|
||||
<ul>
|
||||
<li>Use a hardware wallet for large stakes</li>
|
||||
<li>Enable two-factor authentication</li>
|
||||
<li>Keep your wallet software updated</li>
|
||||
<li>Backup your wallet securely (offline)</li>
|
||||
<li>Use a dedicated mining wallet</li>
|
||||
</ul>
|
||||
|
||||
<h3>Node Security</h3>
|
||||
<ul>
|
||||
<li>Keep your operating system updated</li>
|
||||
<li>Use a firewall to restrict access</li>
|
||||
<li>Monitor for unusual activity</li>
|
||||
<li>Use VPN for additional privacy</li>
|
||||
<li>Regular security audits</li>
|
||||
</ul>
|
||||
|
||||
<h3>Operational Security</h3>
|
||||
<ul>
|
||||
<li>Diversify your stake across multiple nodes</li>
|
||||
<li>Use automated monitoring and alerts</li>
|
||||
<li>Have backup power and internet</li>
|
||||
<li>Document your recovery procedures</li>
|
||||
<li>Join the community for security updates</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Troubleshooting -->
|
||||
<section class="content-section">
|
||||
<h2>Troubleshooting</h2>
|
||||
|
||||
<h3>Common Issues</h3>
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">Node won't start?</div>
|
||||
<div class="faq-answer">
|
||||
Check your configuration file syntax and ensure all required ports are open. Use <code>./aitbc-miner check-config</code> to validate your setup.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">Low mining rewards?</div>
|
||||
<div class="faq-answer">
|
||||
Ensure your node is online 24/7, check your stake amount, and verify you're running the latest version. Network conditions also affect rewards.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">Sync issues?</div>
|
||||
<div class="faq-answer">
|
||||
Try resyncing with <code>./aitbc-miner sync --reset</code>. Check your internet connection and disk space.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">GPU not detected?</div>
|
||||
<div class="faq-answer">
|
||||
Install latest GPU drivers, verify CUDA/OpenCL support, and check <code>./aitbc-miner gpu check</code>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Getting Help</h3>
|
||||
<ul>
|
||||
<li>Check the logs: <code>./aitbc-miner logs</code></li>
|
||||
<li>Visit our Discord community</li>
|
||||
<li>Search issues on Gitea</li>
|
||||
<li>Email support: miners@aitbc.io</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- FAQ -->
|
||||
<section class="content-section">
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">How much can I earn mining AITBC?</div>
|
||||
<div class="faq-answer">
|
||||
Earnings vary based on stake amount, network participation, and whether you provide GPU compute. Typical APY ranges from 15-25% for staking, with GPU mining adding additional rewards.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">When do I get paid?</div>
|
||||
<div class="faq-answer">
|
||||
Rewards are distributed daily and automatically credited to your wallet. You can withdraw anytime after the initial lock period.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">Can I run multiple nodes?</div>
|
||||
<div class="faq-answer">
|
||||
Yes, you can run multiple nodes but each requires separate stakes. This can provide redundancy and potentially higher rewards.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">What happens if my node goes offline?</div>
|
||||
<div class="faq-answer">
|
||||
You won't earn rewards while offline, but your stake remains safe. Extended downtime may affect your reputation score.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<div class="faq-question">How do I become an authority node?</div>
|
||||
<div class="faq-answer">
|
||||
Authority nodes require invitation based on community contribution, technical expertise, and stake amount. Apply through the community forum.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2025 AITBC. All rights reserved.</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// Profit Calculator
|
||||
function calculateProfit() {
|
||||
const stake = parseFloat(document.getElementById('stakeAmount').value) || 0;
|
||||
const apy = parseFloat(document.getElementById('apy').value) || 0;
|
||||
const price = parseFloat(document.getElementById('tokenPrice').value) || 0;
|
||||
const gpuRewards = parseFloat(document.getElementById('gpuRewards').value) || 0;
|
||||
|
||||
const monthlyStakeRewards = (stake * (apy / 100) / 12) * price;
|
||||
const monthlyEarnings = monthlyStakeRewards + gpuRewards;
|
||||
const annualEarnings = monthlyEarnings * 12;
|
||||
|
||||
document.getElementById('monthlyEarnings').textContent = `$${monthlyEarnings.toFixed(2)}`;
|
||||
document.getElementById('annualEarnings').textContent = `$${annualEarnings.toFixed(2)}`;
|
||||
}
|
||||
|
||||
// Initialize calculator
|
||||
calculateProfit();
|
||||
</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');
|
||||
const btn = document.getElementById('themeToggle');
|
||||
if (btn) btn.textContent = '🌙';
|
||||
}
|
||||
|
||||
// Theme toggle functionality
|
||||
const themeBtn = document.getElementById('themeToggle');
|
||||
if (themeBtn) {
|
||||
themeBtn.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>
|
||||
</html>
|
||||
1107
website/docs/full-documentation.html
Normal file
1107
website/docs/full-documentation.html
Normal file
File diff suppressed because it is too large
Load Diff
216
website/docs/index.html
Normal file
216
website/docs/index.html
Normal file
@@ -0,0 +1,216 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<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="/fonts-font-awesome/css/font-awesome.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>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main>
|
||||
<div class="container">
|
||||
<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>
|
||||
</div>
|
||||
|
||||
<!-- Search Bar -->
|
||||
<div class="search-container">
|
||||
<input type="text" class="search-bar" placeholder="Search documentation..." id="searchInput">
|
||||
<i class="fas fa-search search-icon"></i>
|
||||
</div>
|
||||
|
||||
<!-- Reader Level Cards -->
|
||||
<div class="reader-levels">
|
||||
<!-- Miners Card -->
|
||||
<div class="reader-card miner">
|
||||
<div class="reader-icon">
|
||||
<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>
|
||||
<ul class="reader-features">
|
||||
<li>GPU miner setup with Ollama (RTX 4060 Ti tested)</li>
|
||||
<li>Systemd service configuration</li>
|
||||
<li>Hardware requirements & optimization</li>
|
||||
<li>Real-time job processing & earnings</li>
|
||||
<li>Performance monitoring & troubleshooting</li>
|
||||
</ul>
|
||||
<a href="docs-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>
|
||||
</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>
|
||||
<ul class="reader-features">
|
||||
<li>CLI wrapper tool for easy job submission</li>
|
||||
<li>Job status monitoring & receipt verification</li>
|
||||
<li>13+ Ollama models available (llama3.2, mistral, deepseek)</li>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
<!-- Developers Card -->
|
||||
<div class="reader-card developer">
|
||||
<div class="reader-icon">
|
||||
<i class="fa 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>
|
||||
<ul class="reader-features">
|
||||
<li>Development setup</li>
|
||||
<li>Contribution guidelines</li>
|
||||
<li>API reference</li>
|
||||
<li>Bounty programs</li>
|
||||
<li>Community resources</li>
|
||||
</ul>
|
||||
<a href="docs-developers.html" class="btn">Developer Documentation</a>
|
||||
</div>
|
||||
|
||||
<!-- Full Documentation Card -->
|
||||
<div class="reader-card full-doc">
|
||||
<div class="reader-icon">
|
||||
<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>
|
||||
<ul class="reader-features">
|
||||
<li>Architecture overview</li>
|
||||
<li>Complete API reference</li>
|
||||
<li>Deployment guides</li>
|
||||
<li>Security documentation</li>
|
||||
<li>Advanced configurations</li>
|
||||
</ul>
|
||||
<a href="full-documentation.html" class="btn">View Full Documentation</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Links -->
|
||||
<section class="quick-links">
|
||||
<h2>Quick Links</h2>
|
||||
<div class="links-grid">
|
||||
<a href="full-documentation.html" class="link-item">
|
||||
<i class="fa fa-book"></i>
|
||||
<span>Full Documentation</span>
|
||||
</a>
|
||||
<a href="https://aitbc.bubuit.net/Exchange/" class="link-item">
|
||||
<i class="fa fa-exchange"></i>
|
||||
<span>Trade Exchange</span>
|
||||
</a>
|
||||
<a href="https://gitea.bubuit.net/oib/aitbc" class="link-item">
|
||||
<i class="fa fa-git"></i>
|
||||
<span>Source Code</span>
|
||||
</a>
|
||||
<a href="https://discord.gg/aitbc" class="link-item">
|
||||
<i class="fab fa-discord"></i>
|
||||
<span>Community</span>
|
||||
</a>
|
||||
<a href="mailto:support@aitbc.io" class="link-item">
|
||||
<i class="fa fa-envelope"></i>
|
||||
<span>Support</span>
|
||||
</a>
|
||||
<a href="#" class="link-item">
|
||||
<i class="fa fa-graduation-cap"></i>
|
||||
<span>Tutorials</span>
|
||||
</a>
|
||||
<a href="#" class="link-item">
|
||||
<i class="fa fa-video-camera"></i>
|
||||
<span>Video Guides</span>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Help Section -->
|
||||
<section class="help-section">
|
||||
<h2>Need Help?</h2>
|
||||
<p>Can't find what you're looking for? Our community is here to help!</p>
|
||||
<div class="help-buttons">
|
||||
<a href="https://discord.gg/aitbc" class="btn">
|
||||
<i class="fab fa-discord"></i> Join Discord
|
||||
</a>
|
||||
<a href="mailto:support@aitbc.io" class="btn btn-outline">
|
||||
<i class="fa fa-envelope"></i> Email Support
|
||||
</a>
|
||||
<a href="#" class="btn btn-outline">
|
||||
<i class="fa fa-comments"></i> Live Chat
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2026 AITBC. All rights reserved. | Last updated: January 24, 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.`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 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>
|
||||
</html>
|
||||
54
website/docs/js/theme.js
Normal file
54
website/docs/js/theme.js
Normal file
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* AITBC Documentation Theme Toggle
|
||||
* Handles dark/light mode switching with localStorage persistence
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
const STORAGE_KEY = 'aitbc-docs-theme';
|
||||
|
||||
// Initialize theme on page load
|
||||
function initTheme() {
|
||||
const savedTheme = localStorage.getItem(STORAGE_KEY);
|
||||
const themeToggle = document.getElementById('theme-toggle');
|
||||
|
||||
if (savedTheme === 'light') {
|
||||
document.body.classList.add('light');
|
||||
if (themeToggle) {
|
||||
themeToggle.innerHTML = '<i class="fas fa-moon"></i>';
|
||||
}
|
||||
}
|
||||
|
||||
// Setup toggle button listener
|
||||
if (themeToggle) {
|
||||
themeToggle.addEventListener('click', toggleTheme);
|
||||
}
|
||||
}
|
||||
|
||||
// Toggle between light and dark themes
|
||||
function toggleTheme() {
|
||||
const themeToggle = document.getElementById('theme-toggle');
|
||||
document.body.classList.toggle('light');
|
||||
|
||||
const isLight = document.body.classList.contains('light');
|
||||
|
||||
if (themeToggle) {
|
||||
themeToggle.innerHTML = isLight
|
||||
? '<i class="fas fa-moon"></i>'
|
||||
: '<i class="fas fa-sun"></i>';
|
||||
}
|
||||
|
||||
localStorage.setItem(STORAGE_KEY, isLight ? 'light' : 'dark');
|
||||
}
|
||||
|
||||
// Run on DOM ready
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initTheme);
|
||||
} else {
|
||||
initTheme();
|
||||
}
|
||||
|
||||
// Expose for manual use if needed
|
||||
window.toggleTheme = toggleTheme;
|
||||
})();
|
||||
638
website/docs/marketplace-web.html
Normal file
638
website/docs/marketplace-web.html
Normal file
@@ -0,0 +1,638 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Documentation - AITBC</title>
|
||||
<link rel="stylesheet" href="/fonts-font-awesome/css/font-awesome.min.css">
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Dark mode (default) */
|
||||
:root {
|
||||
--primary-color: #3b82f6;
|
||||
--secondary-color: #2563eb;
|
||||
--accent-color: #60a5fa;
|
||||
--success-color: #10b981;
|
||||
--warning-color: #f59e0b;
|
||||
--danger-color: #ef4444;
|
||||
--text-dark: #f3f4f6;
|
||||
--text-light: #9ca3af;
|
||||
--bg-light: #111827;
|
||||
--bg-white: #1f2937;
|
||||
--border-color: #374151;
|
||||
}
|
||||
|
||||
/* Light mode */
|
||||
body.light {
|
||||
--primary-color: #2563eb;
|
||||
--secondary-color: #1e40af;
|
||||
--accent-color: #3b82f6;
|
||||
--success-color: #10b981;
|
||||
--warning-color: #f59e0b;
|
||||
--danger-color: #ef4444;
|
||||
--text-dark: #1f2937;
|
||||
--text-light: #6b7280;
|
||||
--bg-light: #f9fafb;
|
||||
--bg-white: #ffffff;
|
||||
--border-color: #e5e7eb;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: var(--text-dark);
|
||||
background: var(--bg-light);
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
header {
|
||||
background: var(--bg-white);
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
color: var(--primary-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.nav-links a {
|
||||
color: var(--text-dark);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.nav-links a:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Main Content */
|
||||
main {
|
||||
margin-top: 80px;
|
||||
padding: 60px 0;
|
||||
}
|
||||
|
||||
.doc-header {
|
||||
text-align: center;
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
|
||||
.doc-header h1 {
|
||||
font-size: 3.5rem;
|
||||
color: var(--text-dark);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.doc-header p {
|
||||
font-size: 1.3rem;
|
||||
color: var(--text-light);
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/* Search Bar */
|
||||
.search-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto 4rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.search-bar {
|
||||
width: 100%;
|
||||
padding: 1rem 3rem 1rem 1.5rem;
|
||||
font-size: 1.1rem;
|
||||
border: 2px solid var(--border-color);
|
||||
border-radius: 50px;
|
||||
outline: none;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.search-bar:focus {
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
position: absolute;
|
||||
right: 1.5rem;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: var(--text-light);
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
/* Reader Level Cards */
|
||||
.reader-levels {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 2rem;
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
|
||||
.reader-card {
|
||||
background: var(--bg-white);
|
||||
border-radius: 15px;
|
||||
padding: 2.5rem;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
||||
transition: all 0.3s;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.reader-card::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 5px;
|
||||
}
|
||||
|
||||
.reader-card.miner::before {
|
||||
background: var(--primary-color);
|
||||
}
|
||||
|
||||
.reader-card.client::before {
|
||||
background: var(--success-color);
|
||||
}
|
||||
|
||||
.reader-card.developer::before {
|
||||
background: var(--warning-color);
|
||||
}
|
||||
|
||||
.reader-card:hover {
|
||||
transform: translateY(-10px);
|
||||
box-shadow: 0 8px 30px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
.reader-icon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 2rem;
|
||||
color: var(--text-dark);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.reader-card.miner .reader-icon {
|
||||
background: var(--primary-color);
|
||||
}
|
||||
|
||||
.reader-card.client .reader-icon {
|
||||
background: var(--success-color);
|
||||
}
|
||||
|
||||
.reader-card.developer .reader-icon {
|
||||
background: var(--warning-color);
|
||||
}
|
||||
|
||||
.reader-card.full-doc .reader-icon {
|
||||
background: var(--danger-color);
|
||||
}
|
||||
|
||||
.reader-card h3 {
|
||||
font-size: 1.8rem;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--text-dark);
|
||||
}
|
||||
|
||||
.reader-card p {
|
||||
color: var(--text-light);
|
||||
margin-bottom: 2rem;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.reader-features {
|
||||
list-style: none;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.reader-features li {
|
||||
padding: 0.5rem 0;
|
||||
color: var(--text-light);
|
||||
position: relative;
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
.reader-features li::before {
|
||||
content: "✓";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
color: var(--success-color);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.reader-card.miner .reader-features li::before {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.reader-card.client .reader-features li::before {
|
||||
color: var(--success-color);
|
||||
}
|
||||
|
||||
.reader-card.developer .reader-features li::before {
|
||||
color: var(--warning-color);
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 12px 30px;
|
||||
background: var(--primary-color);
|
||||
color: var(--text-dark);
|
||||
text-decoration: none;
|
||||
border-radius: 50px;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
background: transparent;
|
||||
color: var(--primary-color);
|
||||
border: 2px solid var(--primary-color);
|
||||
}
|
||||
|
||||
.btn-outline:hover {
|
||||
background: var(--primary-color);
|
||||
color: var(--text-dark);
|
||||
}
|
||||
|
||||
.reader-card.miner .btn {
|
||||
background: var(--primary-color);
|
||||
}
|
||||
|
||||
.reader-card.client .btn {
|
||||
background: var(--success-color);
|
||||
}
|
||||
|
||||
.reader-card.developer .btn {
|
||||
background: var(--warning-color);
|
||||
}
|
||||
|
||||
.reader-card.full-doc .btn {
|
||||
background: var(--danger-color);
|
||||
}
|
||||
|
||||
.reader-card.full-doc::before {
|
||||
background: var(--danger-color);
|
||||
}
|
||||
|
||||
/* Quick Links */
|
||||
.quick-links {
|
||||
background: var(--bg-white);
|
||||
border-radius: 15px;
|
||||
padding: 3rem;
|
||||
margin-bottom: 4rem;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
.quick-links h2 {
|
||||
font-size: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
color: var(--text-dark);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.links-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.link-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 1rem;
|
||||
background: var(--bg-light);
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
color: var(--text-dark);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.link-item:hover {
|
||||
background: var(--primary-color);
|
||||
color: var(--text-dark);
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.link-item i {
|
||||
font-size: 1.5rem;
|
||||
margin-right: 1rem;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.link-item:hover i {
|
||||
color: var(--text-dark);
|
||||
}
|
||||
|
||||
/* Help Section */
|
||||
.help-section {
|
||||
text-align: center;
|
||||
padding: 3rem;
|
||||
background: var(--bg-white);
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
.help-section h2 {
|
||||
font-size: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--text-dark);
|
||||
}
|
||||
|
||||
.help-section p {
|
||||
color: var(--text-light);
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.help-buttons {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
footer {
|
||||
background: var(--bg-white);
|
||||
color: var(--text-dark);
|
||||
padding: 40px 0;
|
||||
text-align: center;
|
||||
margin-top: 60px;
|
||||
}
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 768px) {
|
||||
.doc-header h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.reader-levels {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.help-buttons {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
/* Theme toggle button */
|
||||
.theme-toggle {
|
||||
background: none;
|
||||
border: 2px solid var(--border-color);
|
||||
border-radius: 0.5rem;
|
||||
padding: 0.25rem 0.5rem;
|
||||
cursor: pointer;
|
||||
font-size: 1.2rem;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.theme-toggle:hover {
|
||||
background: var(--bg-white);
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
</style>
|
||||
</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>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main>
|
||||
<div class="container">
|
||||
<div class="doc-header">
|
||||
<h1>Documentation</h1>
|
||||
<p>Choose your reader level to access tailored documentation for your needs</p>
|
||||
</div>
|
||||
|
||||
<!-- Search Bar -->
|
||||
<div class="search-container">
|
||||
<input type="text" class="search-bar" placeholder="Search documentation..." id="searchInput">
|
||||
<i class="fas fa-search search-icon"></i>
|
||||
</div>
|
||||
|
||||
<!-- Reader Level Cards -->
|
||||
<div class="reader-levels">
|
||||
<!-- Miners Card -->
|
||||
<div class="reader-card miner">
|
||||
<div class="reader-icon">
|
||||
<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>
|
||||
<ul class="reader-features">
|
||||
<li>Mining setup and configuration</li>
|
||||
<li>Hardware requirements</li>
|
||||
<li>Profit calculations</li>
|
||||
<li>Security best practices</li>
|
||||
<li>Troubleshooting guide</li>
|
||||
</ul>
|
||||
<a href="docs-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>
|
||||
</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>
|
||||
<ul class="reader-features">
|
||||
<li>Quick start guide</li>
|
||||
<li>API and SDK documentation</li>
|
||||
<li>Use case examples</li>
|
||||
<li>Pricing information</li>
|
||||
<li>Privacy & security features</li>
|
||||
</ul>
|
||||
<a href="docs-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>
|
||||
</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>
|
||||
<ul class="reader-features">
|
||||
<li>Development setup</li>
|
||||
<li>Contribution guidelines</li>
|
||||
<li>API reference</li>
|
||||
<li>Bounty programs</li>
|
||||
<li>Community resources</li>
|
||||
</ul>
|
||||
<a href="docs-developers.html" class="btn">Developer Documentation</a>
|
||||
</div>
|
||||
|
||||
<!-- Full Documentation Card -->
|
||||
<div class="reader-card full-doc">
|
||||
<div class="reader-icon">
|
||||
<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>
|
||||
<ul class="reader-features">
|
||||
<li>Architecture overview</li>
|
||||
<li>Complete API reference</li>
|
||||
<li>Deployment guides</li>
|
||||
<li>Security documentation</li>
|
||||
<li>Advanced configurations</li>
|
||||
</ul>
|
||||
<a href="full-documentation.html" class="btn">View Full Documentation</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Links -->
|
||||
<section class="quick-links">
|
||||
<h2>Quick Links</h2>
|
||||
<div class="links-grid">
|
||||
<a href="full-documentation.html" class="link-item">
|
||||
<i class="fa fa-book"></i>
|
||||
<span>Full Documentation</span>
|
||||
</a>
|
||||
<a href="https://aitbc.bubuit.net/Exchange/" class="link-item">
|
||||
<i class="fa fa-exchange"></i>
|
||||
<span>Trade Exchange</span>
|
||||
</a>
|
||||
<a href="https://gitea.bubuit.net/oib/aitbc" class="link-item">
|
||||
<i class="fa fa-git"></i>
|
||||
<span>Source Code</span>
|
||||
</a>
|
||||
<a href="https://discord.gg/aitbc" class="link-item">
|
||||
<i class="fab fa-discord"></i>
|
||||
<span>Community</span>
|
||||
</a>
|
||||
<a href="mailto:support@aitbc.io" class="link-item">
|
||||
<i class="fa fa-envelope"></i>
|
||||
<span>Support</span>
|
||||
</a>
|
||||
<a href="#" class="link-item">
|
||||
<i class="fa fa-graduation-cap"></i>
|
||||
<span>Tutorials</span>
|
||||
</a>
|
||||
<a href="#" class="link-item">
|
||||
<i class="fa fa-video-camera"></i>
|
||||
<span>Video Guides</span>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Help Section -->
|
||||
<section class="help-section">
|
||||
<h2>Need Help?</h2>
|
||||
<p>Can't find what you're looking for? Our community is here to help!</p>
|
||||
<div class="help-buttons">
|
||||
<a href="https://discord.gg/aitbc" class="btn">
|
||||
<i class="fab fa-discord"></i> Join Discord
|
||||
</a>
|
||||
<a href="mailto:support@aitbc.io" class="btn btn-outline">
|
||||
<i class="fa fa-envelope"></i> Email Support
|
||||
</a>
|
||||
<a href="#" class="btn btn-outline">
|
||||
<i class="fa fa-comments"></i> Live Chat
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>© 2025 AITBC. All rights reserved.</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.`);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 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>
|
||||
</html>
|
||||
Reference in New Issue
Block a user