|
|
<!DOCTYPE html> |
|
|
<html lang="ar" dir="rtl"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Auto-Guardian - دليل الإعداد الشامل</title> |
|
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
|
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Arabic:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> |
|
|
<style> |
|
|
:root { |
|
|
--bg-primary: #0f172a; |
|
|
--bg-secondary: #1e293b; |
|
|
--bg-tertiary: #334155; |
|
|
--text-primary: #f1f5f9; |
|
|
--text-secondary: #94a3b8; |
|
|
--text-muted: #64748b; |
|
|
--border-color: #334155; |
|
|
--accent-blue: #3b82f6; |
|
|
--accent-purple: #8b5cf6; |
|
|
--accent-cyan: #06b6d4; |
|
|
--success: #10b981; |
|
|
--warning: #f59e0b; |
|
|
--danger: #ef4444; |
|
|
--shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3); |
|
|
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4); |
|
|
--transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
|
|
} |
|
|
|
|
|
* { |
|
|
margin: 0; |
|
|
padding: 0; |
|
|
box-sizing: border-box; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: 'Noto Sans Arabic', -apple-system, sans-serif; |
|
|
background: var(--bg-primary); |
|
|
color: var(--text-primary); |
|
|
line-height: 1.8; |
|
|
overflow-x: hidden; |
|
|
} |
|
|
|
|
|
|
|
|
.hero { |
|
|
background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-primary) 100%); |
|
|
padding: 80px 40px; |
|
|
text-align: center; |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.hero::before { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
right: 0; |
|
|
bottom: 0; |
|
|
background: |
|
|
radial-gradient(circle at 20% 80%, rgba(59, 130, 246, 0.1) 0%, transparent 50%), |
|
|
radial-gradient(circle at 80% 20%, rgba(139, 92, 246, 0.1) 0%, transparent 50%); |
|
|
pointer-events: none; |
|
|
} |
|
|
|
|
|
.hero-content { |
|
|
position: relative; |
|
|
z-index: 1; |
|
|
max-width: 800px; |
|
|
margin: 0 auto; |
|
|
} |
|
|
|
|
|
.hero-badge { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
background: rgba(59, 130, 246, 0.2); |
|
|
border: 1px solid rgba(59, 130, 246, 0.3); |
|
|
padding: 8px 20px; |
|
|
border-radius: 50px; |
|
|
font-size: 14px; |
|
|
color: var(--accent-blue); |
|
|
margin-bottom: 24px; |
|
|
} |
|
|
|
|
|
.hero-title { |
|
|
font-size: 48px; |
|
|
font-weight: 700; |
|
|
margin-bottom: 16px; |
|
|
background: linear-gradient(135deg, var(--text-primary), var(--accent-blue)); |
|
|
-webkit-background-clip: text; |
|
|
-webkit-text-fill-color: transparent; |
|
|
background-clip: text; |
|
|
} |
|
|
|
|
|
.hero-subtitle { |
|
|
font-size: 18px; |
|
|
color: var(--text-muted); |
|
|
margin-bottom: 40px; |
|
|
} |
|
|
|
|
|
.hero-actions { |
|
|
display: flex; |
|
|
gap: 16px; |
|
|
justify-content: center; |
|
|
flex-wrap: wrap; |
|
|
} |
|
|
|
|
|
.btn { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
padding: 14px 28px; |
|
|
border-radius: 12px; |
|
|
font-size: 15px; |
|
|
font-weight: 600; |
|
|
cursor: pointer; |
|
|
transition: var(--transition); |
|
|
border: none; |
|
|
font-family: inherit; |
|
|
text-decoration: none; |
|
|
} |
|
|
|
|
|
.btn-primary { |
|
|
background: linear-gradient(135deg, var(--accent-blue), var(--accent-purple)); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.btn-primary:hover { |
|
|
transform: translateY(-3px); |
|
|
box-shadow: var(--shadow-lg); |
|
|
} |
|
|
|
|
|
.btn-secondary { |
|
|
background: var(--bg-tertiary); |
|
|
color: var(--text-primary); |
|
|
border: 1px solid var(--border-color); |
|
|
} |
|
|
|
|
|
.btn-secondary:hover { |
|
|
background: var(--bg-secondary); |
|
|
border-color: var(--accent-blue); |
|
|
} |
|
|
|
|
|
|
|
|
.progress-section { |
|
|
background: var(--bg-secondary); |
|
|
padding: 60px 40px; |
|
|
} |
|
|
|
|
|
.section-header { |
|
|
text-align: center; |
|
|
margin-bottom: 48px; |
|
|
} |
|
|
|
|
|
.section-title { |
|
|
font-size: 32px; |
|
|
font-weight: 700; |
|
|
margin-bottom: 12px; |
|
|
} |
|
|
|
|
|
.section-subtitle { |
|
|
font-size: 16px; |
|
|
color: var(--text-muted); |
|
|
} |
|
|
|
|
|
.steps-container { |
|
|
max-width: 900px; |
|
|
margin: 0 auto; |
|
|
} |
|
|
|
|
|
.step { |
|
|
display: flex; |
|
|
gap: 24px; |
|
|
margin-bottom: 32px; |
|
|
padding: 24px; |
|
|
background: var(--bg-primary); |
|
|
border-radius: 16px; |
|
|
border: 1px solid var(--border-color); |
|
|
transition: var(--transition); |
|
|
opacity: 0.5; |
|
|
} |
|
|
|
|
|
.step.active { |
|
|
opacity: 1; |
|
|
border-color: var(--accent-blue); |
|
|
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); |
|
|
} |
|
|
|
|
|
.step.completed { |
|
|
opacity: 1; |
|
|
border-color: var(--success); |
|
|
} |
|
|
|
|
|
.step-number { |
|
|
width: 48px; |
|
|
height: 48px; |
|
|
border-radius: 50%; |
|
|
background: var(--bg-tertiary); |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
font-size: 18px; |
|
|
font-weight: 700; |
|
|
flex-shrink: 0; |
|
|
transition: var(--transition); |
|
|
} |
|
|
|
|
|
.step.active .step-number { |
|
|
background: var(--accent-blue); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.step.completed .step-number { |
|
|
background: var(--success); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
.step-content { |
|
|
flex: 1; |
|
|
} |
|
|
|
|
|
.step-title { |
|
|
font-size: 20px; |
|
|
font-weight: 600; |
|
|
margin-bottom: 8px; |
|
|
} |
|
|
|
|
|
.step-description { |
|
|
font-size: 14px; |
|
|
color: var(--text-muted); |
|
|
margin-bottom: 16px; |
|
|
} |
|
|
|
|
|
.step-code { |
|
|
background: var(--bg-secondary); |
|
|
border-radius: 8px; |
|
|
padding: 16px; |
|
|
font-family: 'JetBrains Mono', monospace; |
|
|
font-size: 13px; |
|
|
overflow-x: auto; |
|
|
border: 1px solid var(--border-color); |
|
|
} |
|
|
|
|
|
.step-files { |
|
|
display: flex; |
|
|
flex-wrap: wrap; |
|
|
gap: 8px; |
|
|
margin-top: 12px; |
|
|
} |
|
|
|
|
|
.file-tag { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
gap: 6px; |
|
|
padding: 6px 12px; |
|
|
background: var(--bg-tertiary); |
|
|
border-radius: 6px; |
|
|
font-size: 12px; |
|
|
font-family: 'JetBrains Mono', monospace; |
|
|
} |
|
|
|
|
|
.step-checklist { |
|
|
list-style: none; |
|
|
margin-top: 12px; |
|
|
} |
|
|
|
|
|
.step-checklist li { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
padding: 8px 0; |
|
|
font-size: 14px; |
|
|
} |
|
|
|
|
|
.check-icon { |
|
|
width: 20px; |
|
|
height: 20px; |
|
|
border-radius: 50%; |
|
|
border: 2px solid var(--border-color); |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
font-size: 12px; |
|
|
} |
|
|
|
|
|
.step.completed .check-icon { |
|
|
background: var(--success); |
|
|
border-color: var(--success); |
|
|
color: white; |
|
|
} |
|
|
|
|
|
|
|
|
.structure-section { |
|
|
padding: 60px 40px; |
|
|
} |
|
|
|
|
|
.tree-container { |
|
|
max-width: 700px; |
|
|
margin: 0 auto; |
|
|
background: var(--bg-secondary); |
|
|
border-radius: 16px; |
|
|
padding: 24px; |
|
|
border: 1px solid var(--border-color); |
|
|
} |
|
|
|
|
|
.tree { |
|
|
font-family: 'JetBrains Mono', monospace; |
|
|
font-size: 14px; |
|
|
line-height: 2; |
|
|
} |
|
|
|
|
|
.tree-line { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
padding-right: 20px; |
|
|
} |
|
|
|
|
|
.tree-folder { |
|
|
color: var(--warning); |
|
|
} |
|
|
|
|
|
.tree-file { |
|
|
color: var(--accent-cyan); |
|
|
} |
|
|
|
|
|
.tree-badge { |
|
|
background: var(--accent-purple); |
|
|
color: white; |
|
|
padding: 2px 8px; |
|
|
border-radius: 4px; |
|
|
font-size: 10px; |
|
|
margin-right: auto; |
|
|
} |
|
|
|
|
|
|
|
|
.features-section { |
|
|
background: var(--bg-secondary); |
|
|
padding: 60px 40px; |
|
|
} |
|
|
|
|
|
.features-grid { |
|
|
display: grid; |
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); |
|
|
gap: 24px; |
|
|
max-width: 1200px; |
|
|
margin: 0 auto; |
|
|
} |
|
|
|
|
|
.feature-card { |
|
|
background: var(--bg-primary); |
|
|
border-radius: 16px; |
|
|
padding: 32px; |
|
|
border: 1px solid var(--border-color); |
|
|
transition: var(--transition); |
|
|
} |
|
|
|
|
|
.feature-card:hover { |
|
|
transform: translateY(-4px); |
|
|
border-color: var(--accent-blue); |
|
|
} |
|
|
|
|
|
.feature-icon { |
|
|
width: 56px; |
|
|
height: 56px; |
|
|
border-radius: 14px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
font-size: 28px; |
|
|
margin-bottom: 20px; |
|
|
} |
|
|
|
|
|
.feature-icon.security { background: rgba(239, 68, 68, 0.2); } |
|
|
.feature-icon.auto { background: rgba(59, 130, 246, 0.2); } |
|
|
.feature-icon.dashboard { background: rgba(16, 185, 129, 0.2); } |
|
|
.feature-icon.multi { background: rgba(139, 92, 246, 0.2); } |
|
|
|
|
|
.feature-title { |
|
|
font-size: 20px; |
|
|
font-weight: 600; |
|
|
margin-bottom: 12px; |
|
|
} |
|
|
|
|
|
.feature-description { |
|
|
font-size: 14px; |
|
|
color: var(--text-muted); |
|
|
} |
|
|
|
|
|
|
|
|
.faq-section { |
|
|
padding: 60px 40px; |
|
|
} |
|
|
|
|
|
.faq-container { |
|
|
max-width: 800px; |
|
|
margin: 0 auto; |
|
|
} |
|
|
|
|
|
.faq-item { |
|
|
background: var(--bg-secondary); |
|
|
border-radius: 12px; |
|
|
margin-bottom: 16px; |
|
|
overflow: hidden; |
|
|
border: 1px solid var(--border-color); |
|
|
} |
|
|
|
|
|
.faq-question { |
|
|
padding: 20px 24px; |
|
|
font-size: 16px; |
|
|
font-weight: 600; |
|
|
cursor: pointer; |
|
|
display: flex; |
|
|
justify-content: space-between; |
|
|
align-items: center; |
|
|
transition: var(--transition); |
|
|
} |
|
|
|
|
|
.faq-question:hover { |
|
|
background: var(--bg-tertiary); |
|
|
} |
|
|
|
|
|
.faq-answer { |
|
|
padding: 0 24px 20px; |
|
|
font-size: 14px; |
|
|
color: var(--text-muted); |
|
|
display: none; |
|
|
} |
|
|
|
|
|
.faq-item.open .faq-answer { |
|
|
display: block; |
|
|
} |
|
|
|
|
|
.faq-toggle { |
|
|
transition: var(--transition); |
|
|
} |
|
|
|
|
|
.faq-item.open .faq-toggle { |
|
|
transform: rotate(180deg); |
|
|
} |
|
|
|
|
|
|
|
|
.footer { |
|
|
background: var(--bg-secondary); |
|
|
padding: 40px; |
|
|
text-align: center; |
|
|
border-top: 1px solid var(--border-color); |
|
|
} |
|
|
|
|
|
.footer-text { |
|
|
font-size: 14px; |
|
|
color: var(--text-muted); |
|
|
} |
|
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
.hero { |
|
|
padding: 40px 20px; |
|
|
} |
|
|
|
|
|
.hero-title { |
|
|
font-size: 32px; |
|
|
} |
|
|
|
|
|
.step { |
|
|
flex-direction: column; |
|
|
} |
|
|
|
|
|
.hero-actions { |
|
|
flex-direction: column; |
|
|
} |
|
|
|
|
|
.btn { |
|
|
width: 100%; |
|
|
justify-content: center; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@keyframes fadeIn { |
|
|
from { opacity: 0; transform: translateY(20px); } |
|
|
to { opacity: 1; transform: translateY(0); } |
|
|
} |
|
|
|
|
|
.step { |
|
|
animation: fadeIn 0.5s ease forwards; |
|
|
} |
|
|
|
|
|
.step:nth-child(1) { animation-delay: 0.1s; } |
|
|
.step:nth-child(2) { animation-delay: 0.2s; } |
|
|
.step:nth-child(3) { animation-delay: 0.3s; } |
|
|
.step:nth-child(4) { animation-delay: 0.4s; } |
|
|
.step:nth-child(5) { animation-delay: 0.5s; } |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
|
|
|
<section class="hero"> |
|
|
<div class="hero-content"> |
|
|
<div class="hero-badge"> |
|
|
<span>🚀</span> |
|
|
<span>دليل الإعداد الشامل</span> |
|
|
</div> |
|
|
<h1 class="hero-title">ابدأ مع Auto-Guardian</h1> |
|
|
<p class="hero-subtitle"> |
|
|
نظام الفحص الأمني التلقائي للكود. اتبع الخطوات أدناه لتفعيل النظام بالكامل والحصول على لوحة تحكم تفاعلية تعرض حالة أمان مستودعك. |
|
|
</p> |
|
|
<div class="hero-actions"> |
|
|
<button class="btn btn-primary" onclick="scrollToSection('steps')"> |
|
|
<span>📋</span> |
|
|
<span>بدء الإعداد</span> |
|
|
</button> |
|
|
<a href="index.html" class="btn btn-secondary"> |
|
|
<span>🎨</span> |
|
|
<span>معاينة لوحة التحكم</span> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="progress-section" id="steps"> |
|
|
<div class="section-header"> |
|
|
<h2 class="section-title">خطوات الإعداد</h2> |
|
|
<p class="section-subtitle">اتبع هذه الخطوات بالترتيب لتفعيل النظام على مستودعك</p> |
|
|
</div> |
|
|
|
|
|
<div class="steps-container"> |
|
|
|
|
|
<div class="step active" id="step1"> |
|
|
<div class="step-number">1</div> |
|
|
<div class="step-content"> |
|
|
<h3 class="step-title">إنشاء المستودع أو نسخ القالب</h3> |
|
|
<p class="step-description"> |
|
|
أولاً، تحتاج إلى إنشاء مستودع جديد. يمكنك استخدام هذا المشروع كقالب لإنشاء مستودع جديد، أو نسخ الملفات يدوياً إلى مستودع موجود. |
|
|
</p> |
|
|
<div class="step-checklist"> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>اذهب إلى <strong>GitHub</strong وسجل الدخول</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>زر <strong>Use this template</strong> لإنشاء مستودع جديد</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>أو انسخ الملفات يدوياً إذا كان لديك مستودع موجود</span> |
|
|
</li> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="step" id="step2"> |
|
|
<div class="step-number">2</div> |
|
|
<div class="step-content"> |
|
|
<h3 class="step-title">رفع الملفات</h3> |
|
|
<p class="step-description"> |
|
|
بعد إنشاء المستودع، تحتاج إلى رفع جميع الملفات. الهيكل التالي يجب أن يكون موجوداً في مستودعك: |
|
|
</p> |
|
|
<div class="step-files"> |
|
|
<span class="file-tag">📁 .github/workflows/scan-and-deploy.yml</span> |
|
|
<span class="file-tag">📁 scripts/aggregate_results.py</span> |
|
|
<span class="file-tag">📁 scripts/generate_report.py</span> |
|
|
<span class="file-tag">📁 dashboard/public/data/latest.json</span> |
|
|
<span class="file-tag">📁 dashboard/index.html</span> |
|
|
<span class="file-tag">📄 README.md</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="step" id="step3"> |
|
|
<div class="step-number">3</div> |
|
|
<div class="step-content"> |
|
|
<h3 class="step-title">تفعيل GitHub Pages</h3> |
|
|
<p class="step-description"> |
|
|
الآن تحتاج إلى تفعيل GitHub Pages للسماح بنشر لوحة التحكم. اتبع الخطوات التالية: |
|
|
</p> |
|
|
<div class="step-checklist"> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>اذهب إلى <strong>Settings</strong> في مستودعك</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>انقر على <strong>Pages</strong> في القائمة الجانبية</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>في قسم <strong>Build and deployment</strong>:</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span><strong>Source:</strong> اختر <mark>GitHub Actions</mark></span> |
|
|
</li> |
|
|
</div> |
|
|
<div class="step-code"> |
|
|
┌─────────────────────────────────────────────┐ |
|
|
│ Build and deployment │ |
|
|
│ │ |
|
|
│ Source › GitHub Actions │ |
|
|
└─────────────────────────────────────────────┘ |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="step" id="step4"> |
|
|
<div class="step-number">4</div> |
|
|
<div class="step-content"> |
|
|
<h3 class="step-title">تفعيل GitHub Actions</h3> |
|
|
<p class="step-description"> |
|
|
الآن دعنا نتحقق من أن GitHub Actions يعمل. سير العمل سيبدأ تلقائياً عند دفع أي تغيير. |
|
|
</p> |
|
|
<div class="step-checklist"> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>اذهب إلى تبويب <strong>Actions</strong> في المستودع</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>ابحث عن <strong>Auto-Guardian Scan & Deploy</strong></span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>انقر على <strong>Enable workflow</strong> إذا كان معطلاً</span> |
|
|
</li> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="step" id="step5"> |
|
|
<div class="step-number">5</div> |
|
|
<div class="step-content"> |
|
|
<h3 class="step-title">اختبار النظام</h3> |
|
|
<p class="step-description"> |
|
|
للاختبار، قم بدفع أي تغيير بسيط إلى المستودع. سير العمل سيبدأ تلقائياً وسيتم نشر لوحة التحكم بعد اكتمال الفحص. |
|
|
</p> |
|
|
<div class="step-checklist"> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>أنشئ ملفاً جديداً أو عدل ملفاً موجوداً</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>ادفع التغييرات: <code>git add . && git commit -m "test" && git push</code></span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>تحقق من تبويب <strong>Actions</strong> لرؤية تقدم الفحص</span> |
|
|
</li> |
|
|
<li> |
|
|
<span class="check-icon">✓</span> |
|
|
<span>بعد اكتمال الفحص، اذهب إلى <strong>Settings > Pages</strong> للحصول على الرابط</span> |
|
|
</li> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="structure-section"> |
|
|
<div class="section-header"> |
|
|
<h2 class="section-title">هيكل الملفات</h2> |
|
|
<p class="section-subtitle">تأكد من أن جميع الملفات موجودة في الأماكن الصحيحة</p> |
|
|
</div> |
|
|
|
|
|
<div class="tree-container"> |
|
|
<pre class="tree"> |
|
|
<span class="tree-line"><span class="tree-folder">📁</span> auto-guardian/ |
|
|
<span class="tree-line"> 📁 <span class="tree-folder">.github/</span> |
|
|
<span class="tree-line"> 📁 workflows/ |
|
|
<span class="tree-badge">NEW</span> 📄 scan-and-deploy.yml</span> |
|
|
<span class="tree-line"> 📁 <span class="tree-folder">dashboard/</span> |
|
|
<span class="tree-line"> 📄 index.html</span> |
|
|
<span class="tree-line"> 📁 <span class="tree-folder">public/</span> |
|
|
<span class="tree-line"> 📁 <span class="tree-folder">data/</span> |
|
|
<span class="tree-line"> 📄 latest.json</span> |
|
|
<span class="tree-line"> 📁 <span class="tree-folder">scripts/</span> |
|
|
<span class="tree-badge">NEW</span> 📄 aggregate_results.py |
|
|
<span class="tree-line"> 📄 generate_report.py</span> |
|
|
<span class="tree-line"> 📄 README.md</span></pre> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="features-section"> |
|
|
<div class="section-header"> |
|
|
<h2 class="section-title">مميزات النظام</h2> |
|
|
<p class="section-subtitle">كل ما يقدمه لك نظام Auto-Guardian</p> |
|
|
</div> |
|
|
|
|
|
<div class="features-grid"> |
|
|
<div class="feature-card"> |
|
|
<div class="feature-icon security">🛡️</div> |
|
|
<h3 class="feature-title">فحص أمني شامل</h3> |
|
|
<p class="feature-description"> |
|
|
يكتشف الثغرات الأمنية والأخطاء البرمجية باستخدام أدوات متخصصة لكل لغة برمجية. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div class="feature-card"> |
|
|
<div class="feature-icon auto">⚡</div> |
|
|
<h3 class="feature-title">فحص تلقائي</h3> |
|
|
<p class="feature-description"> |
|
|
يبدأ الفحص تلقائياً عند كل دفع للكود، ولا تحتاج لأي تدخل يدوي. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div class="feature-card"> |
|
|
<div class="feature-icon dashboard">📊</div> |
|
|
<h3 class="feature-title">لوحة تحكم تفاعلية</h3> |
|
|
<p class="feature-description"> |
|
|
واجهة جميلة وسهلة الاستخدام تعرض حالة الأمان بشكل واضح ومباشر. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
<div class="feature-card"> |
|
|
<div class="feature-icon multi">🌐</div> |
|
|
<h3 class="feature-title">دعم لغات متعددة</h3> |
|
|
<p class="feature-description"> |
|
|
يدعم Python وJavaScript وTypeScript وGo وRust وغيرها من اللغات. |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="faq-section"> |
|
|
<div class="section-header"> |
|
|
<h2 class="section-title">الأسئلة الشائعة</h2> |
|
|
<p class="section-subtitle">إجابات على الأسئلة المتكررة</p> |
|
|
</div> |
|
|
|
|
|
<div class="faq-container"> |
|
|
<div class="faq-item" onclick="toggleFaq(this)"> |
|
|
<div class="faq-question"> |
|
|
<span>كم يستغرق الفحص؟</span> |
|
|
<span class="faq-toggle">▼</span> |
|
|
</div> |
|
|
<div class="faq-answer"> |
|
|
يعتمد وقت الفحص على حجم المشروع. للمشاريع الصغيرة (أقل من 100 ملف) يستغرق عادة من 2 إلى 5 دقائق. للمشاريع الكبيرة قد يستغرق حتى 15 دقيقة. |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="faq-item" onclick="toggleFaq(this)"> |
|
|
<div class="faq-question"> |
|
|
<span>هل يمكنني استخدام النظام في مستودع خاص؟</span> |
|
|
<span class="faq-toggle">▼</span> |
|
|
</div> |
|
|
<div class="faq-answer"> |
|
|
نعم، يمكنك استخدام النظام في المستودعات الخاصة. لكن إذا كنت تريد GitHub Pages عام، ستحتاج إلى خطة GitHub مدفوعة. |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="faq-item" onclick="toggleFaq(this)"> |
|
|
<div class="faq-question"> |
|
|
<span>ماذا يعني درجة الأمان؟</span> |
|
|
<span class="faq-toggle">▼</span> |
|
|
</div> |
|
|
<div class="faq-answer"> |
|
|
درجة الأمان هي رقم من 0 إلى 100. الدرجة A (90-100) تعني مستوى ممتاز، بينما F (أقل من 60) تعني وجود مشاكل حرجة تحتاج اهتماماً فورياً. |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="faq-item" onclick="toggleFaq(this)"> |
|
|
<div class="faq-question"> |
|
|
<span>هل يمكنني تخصيص أدوات الفحص؟</span> |
|
|
<span class="faq-toggle">▼</span> |
|
|
</div> |
|
|
<div class="faq-answer"> |
|
|
نعم، يمكنك تعديل ملف سير العمل لإضافة أو إزالة أدوات الفحص، أو تخصيص إعدادات كل أداة من خلال ملفات الإعدادات الخاصة بها. |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<footer class="footer"> |
|
|
<p class="footer-text"> |
|
|
صنع بـ ❤️ بواسطة Auto-Guardian Team | |
|
|
<a href="#" style="color: var(--accent-blue);">التوثيق</a> | |
|
|
<a href="#" style="color: var(--accent-blue);">الإبلاغ عن مشكلة</a> |
|
|
</p> |
|
|
</footer> |
|
|
|
|
|
<script> |
|
|
|
|
|
function toggleFaq(element) { |
|
|
element.classList.toggle('open'); |
|
|
} |
|
|
|
|
|
|
|
|
function scrollToSection(sectionId) { |
|
|
document.getElementById(sectionId).scrollIntoView({ |
|
|
behavior: 'smooth' |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
const observer = new IntersectionObserver((entries) => { |
|
|
entries.forEach(entry => { |
|
|
if (entry.isIntersecting) { |
|
|
entry.target.style.opacity = '1'; |
|
|
} |
|
|
}); |
|
|
}, { threshold: 0.1 }); |
|
|
|
|
|
document.querySelectorAll('.step').forEach(step => { |
|
|
observer.observe(step); |
|
|
}); |
|
|
|
|
|
|
|
|
console.log('%c مرحباً بك في Auto-Guardian! 🎉', 'font-size: 20px; font-weight: bold; color: #3b82f6;'); |
|
|
console.log('%c نظام الفحص الأمني التلقائي للكود', 'font-size: 14px; color: #64748b;'); |
|
|
</script> |
|
|
</body> |
|
|
</html> |
|
|
|