-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
196 lines (189 loc) · 13.8 KB
/
Copy pathindex.html
File metadata and controls
196 lines (189 loc) · 13.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Project-Atlas — AI-Powered Open Source Contribution Assistant</title>
<meta name="description" content="Discover contribution opportunities, analyze issues, generate fix plans and PR drafts for any GitHub repository using AI." />
<meta name="keywords" content="open source, GitHub, contribution, AI, code analysis, PR generator, issue finder" />
<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=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/components.css" />
</head>
<body>
<!-- Settings Modal -->
<div id="settings-modal" class="modal-overlay hidden">
<div class="modal-box">
<div class="modal-header">
<div class="modal-logo">
<svg width="28" height="28" viewBox="0 0 28 28" fill="none"><circle cx="14" cy="14" r="14" fill="#00c896" fill-opacity="0.15"/><path d="M8 14l4 4 8-8" stroke="#00c896" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
<span>Project-Atlas Setup</span>
</div>
<p class="modal-subtitle">Configure your API keys to get started. Keys are stored only in your browser.</p>
</div>
<div class="modal-body">
<div class="form-group">
<label for="gemini-key">Gemini API Key <span class="badge-required">Required</span></label>
<div class="input-with-icon">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>
<input type="password" id="gemini-key" placeholder="AIzaSy..." autocomplete="off" />
</div>
<span class="input-hint">Get a free key at <a href="https://aistudio.google.com/apikey" target="_blank">aistudio.google.com</a></span>
</div>
<div class="form-group">
<label for="groq-key">Groq API Key <span class="badge-required">Required</span></label>
<div class="input-with-icon">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg>
<input type="password" id="groq-key" placeholder="gsk_..." autocomplete="off" />
</div>
<span class="input-hint">Get a key at <a href="https://console.groq.com/" target="_blank">console.groq.com</a></span>
</div>
<div class="form-group">
<label for="github-token">GitHub Personal Access Token <span class="badge-optional">Optional</span></label>
<div class="input-with-icon">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M12 8v4l3 3"/></svg>
<input type="password" id="github-token" placeholder="ghp_..." autocomplete="off" />
</div>
<span class="input-hint">Increases rate limit from 60 to 5000 req/hr. <a href="https://github.com/settings/tokens/new?scopes=public_repo" target="_blank">Generate token</a></span>
</div>
</div>
<div class="modal-footer">
<button id="save-keys-btn" class="btn-primary">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>
Save & Continue
</button>
</div>
</div>
</div>
<!-- App Shell -->
<div id="app" class="app-shell">
<!-- Sidebar -->
<aside id="sidebar" class="sidebar">
<div class="sidebar-brand">
<div class="brand-icon">
<svg width="22" height="22" viewBox="0 0 22 22" fill="none"><circle cx="11" cy="11" r="11" fill="#00c896" fill-opacity="0.2"/><path d="M6 11l3.5 3.5L16 7" stroke="#00c896" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<div class="brand-text">
<span class="brand-name">Project-Atlas</span>
<span class="brand-tagline">Contribution Assistant</span>
</div>
</div>
<nav class="sidebar-nav">
<a href="#dashboard" class="nav-item active" data-page="dashboard" id="nav-dashboard">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
Dashboard
</a>
<a href="#myrepos" class="nav-item" data-page="myrepos" id="nav-myrepos">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"/></svg>
Repository Library
</a>
<a href="#overview" class="nav-item" data-page="overview" id="nav-overview">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
Repository Overview
</a>
<a href="#architecture" class="nav-item" data-page="architecture" id="nav-architecture">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
Architecture
</a>
<a href="#issues" class="nav-item" data-page="issues" id="nav-issues">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
Open Issues
<span class="nav-badge" id="issues-count" style="display:none">0</span>
</a>
<a href="#opportunities" class="nav-item" data-page="opportunities" id="nav-opportunities">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
Contribution Opportunities
</a>
<a href="#findings" class="nav-item" data-page="findings" id="nav-findings">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
AI Findings
</a>
<a href="#fixer" class="nav-item" data-page="fixer" id="nav-fixer">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"/></svg>
Fix Planner
</a>
<a href="#prgenerator" class="nav-item" data-page="prgenerator" id="nav-prgenerator">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="18" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><path d="M13 6h3a2 2 0 012 2v7"/><line x1="6" y1="9" x2="6" y2="21"/></svg>
PR Generator
</a>
<a href="#agentfiles" class="nav-item" data-page="agentfiles" id="nav-agentfiles">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 2h9a2 2 0 012 2z"/><path d="M2 10h20"/></svg>
Agent Files
</a>
<a href="#report" class="nav-item" data-page="report" id="nav-report">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>
Full Report
</a>
</nav>
<div class="sidebar-footer">
<button id="settings-btn" class="sidebar-settings-btn">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"/></svg>
API Settings
</button>
<div class="sidebar-repo-indicator" id="current-repo-indicator" style="display:none">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22"/></svg>
<span id="current-repo-name">No repo loaded</span>
</div>
</div>
</aside>
<!-- Main Content -->
<main id="main-content" class="main-content">
<!-- Workflow Bar -->
<div class="workflow-bar" id="workflow-bar">
<div class="workflow-step active" data-step="1">
<div class="workflow-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></div>
<div class="workflow-label"><span class="step-num">1. Analyse Repo</span><span class="step-desc">Enter GitHub URL</span></div>
</div>
<div class="workflow-arrow">→</div>
<div class="workflow-step" data-step="2">
<div class="workflow-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 3h6a4 4 0 014 4v14a3 3 0 00-3-3H2z"/><path d="M22 3h-6a4 4 0 00-4 4v14a3 3 0 013-3h7z"/></svg></div>
<div class="workflow-label"><span class="step-num">2. Explore</span><span class="step-desc">Understand the codebase</span></div>
</div>
<div class="workflow-arrow">→</div>
<div class="workflow-step" data-step="3">
<div class="workflow-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/></svg></div>
<div class="workflow-label"><span class="step-num">3. Find Issues</span><span class="step-desc">Get beginner-friendly issues</span></div>
</div>
<div class="workflow-arrow">→</div>
<div class="workflow-step" data-step="4">
<div class="workflow-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg></div>
<div class="workflow-label"><span class="step-num">4. Plan & Implement</span><span class="step-desc">AI helps you plan & code</span></div>
</div>
<div class="workflow-arrow">→</div>
<div class="workflow-step" data-step="5">
<div class="workflow-icon"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="18" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><path d="M13 6h3a2 2 0 012 2v7"/><line x1="6" y1="9" x2="6" y2="21"/></svg></div>
<div class="workflow-label"><span class="step-num">5. Create PR</span><span class="step-desc">AI drafts PR & you submit</span></div>
</div>
</div>
<!-- Page Container -->
<div id="page-container" class="page-container">
<!-- Pages injected by router -->
</div>
</main>
</div>
<!-- Toast notifications -->
<div id="toast-container" class="toast-container"></div>
<!-- Scripts -->
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script src="js/utils.js"></script>
<script src="js/api-client.js"></script>
<script src="js/github.js"></script>
<script src="js/ingestion.js"></script>
<script src="js/analysis.js"></script>
<script src="js/charts.js"></script>
<script src="pages/dashboard.js"></script>
<script src="pages/myrepos.js"></script>
<script src="pages/overview.js"></script>
<script src="pages/architecture.js"></script>
<script src="pages/issues.js"></script>
<script src="pages/opportunities.js"></script>
<script src="pages/findings.js"></script>
<script src="pages/fixer.js"></script>
<script src="pages/prgenerator.js"></script>
<script src="pages/agentfiles.js"></script>
<script src="pages/report.js"></script>
<script src="js/app.js"></script>
</body>
</html>