diff --git a/about.html b/about.html
index 55c9abffe..0c0ab1df3 100644
--- a/about.html
+++ b/about.html
@@ -144,7 +144,7 @@
Privacy First
•
Portfolio
•
- ThePhoenixAgency
+ ThePhoenixAgency
•
GitHub
diff --git a/backend.html b/backend.html
index 6b6dd9683..f0f750f03 100644
--- a/backend.html
+++ b/backend.html
@@ -319,13 +319,19 @@ Supabase Integration
Reader
+
+
+ Portfolio
+
-
+
- Technical Docs
+ Documentation
@@ -399,12 +405,10 @@ Active Today
const dashboardView = document.getElementById('dashboard-view');
const pageTitle = document.getElementById('page-title');
- // Check if already logged in
+ // Check if already logged in - bypass login for now
function checkSession() {
- const session = localStorage.getItem('supabase_session');
- if (session) {
- showDashboard();
- }
+ // Always show dashboard (Supabase not configured)
+ showDashboard();
}
// Login handler
diff --git a/docs.html b/docs.html
new file mode 100644
index 000000000..25639930e
--- /dev/null
+++ b/docs.html
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+ Documentation | AI-Pulse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading documentation...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/portfolio.html b/portfolio.html
index 5c76e6a18..ebbd00a51 100644
--- a/portfolio.html
+++ b/portfolio.html
@@ -232,7 +232,7 @@ ThePhoenixAgency
AI & Cybersecurity Specialist | Full Stack Developer | Open Source
@@ -396,9 +396,7 @@ About
const link = document.createElement('a');
link.className = 'project-link';
- link.href = repo.html_url || '#';
- link.target = '_blank';
- link.rel = 'noopener noreferrer';
+ link.href = 'viewer.html?url=' + encodeURIComponent(repo.html_url || '');
link.textContent = 'View Project →';
card.appendChild(header);
@@ -415,35 +413,38 @@ About
const loading = document.getElementById('loadingProjects');
try {
- // Fetch org stats
- const orgResponse = await fetch(`https://api.github.com/orgs/${PORTFOLIO_CONFIG.githubOrg}`);
- if (orgResponse.ok) {
- const orgData = await orgResponse.json();
- const reposEl = document.getElementById('totalRepos');
- const followersEl = document.getElementById('totalFollowers');
- const followingEl = document.getElementById('totalFollowing');
-
- if (reposEl) reposEl.textContent = String(orgData.public_repos || 0);
- if (followersEl) followersEl.textContent = String(orgData.followers || 0);
- if (followingEl) followingEl.textContent = String(orgData.following || 0);
- }
-
- // Fetch repos
+ // Fetch repos first (single API call for all data)
const reposResponse = await fetch(`https://api.github.com/orgs/${PORTFOLIO_CONFIG.githubOrg}/repos?per_page=100`);
if (!reposResponse.ok) throw new Error('Failed to fetch repos');
let repos = await reposResponse.json();
if (!Array.isArray(repos)) throw new Error('Invalid response');
- // Calculate total stars
+ // Filter: hide forks FIRST before counting
+ if (PORTFOLIO_CONFIG.hideForks) {
+ repos = repos.filter(r => !r.fork);
+ }
+
+ // Now count repos (only non-forks)
+ const reposEl = document.getElementById('totalRepos');
+ if (reposEl) reposEl.textContent = String(repos.length);
+
+ // Calculate total stars (only from non-fork repos)
const totalStars = repos.reduce((sum, r) => sum + (r.stargazers_count || 0), 0);
const starsEl = document.getElementById('totalStars');
if (starsEl) starsEl.textContent = String(totalStars);
- // Filter: hide forks
- if (PORTFOLIO_CONFIG.hideForks) {
- repos = repos.filter(r => !r.fork);
- }
+ // Fetch org stats for followers/following only
+ fetch(`https://api.github.com/orgs/${PORTFOLIO_CONFIG.githubOrg}`)
+ .then(r => r.ok ? r.json() : null)
+ .then(orgData => {
+ if (orgData) {
+ const followersEl = document.getElementById('totalFollowers');
+ const followingEl = document.getElementById('totalFollowing');
+ if (followersEl) followersEl.textContent = String(orgData.followers || 0);
+ if (followingEl) followingEl.textContent = String(orgData.following || 0);
+ }
+ });
// Filter: exclude specific projects
repos = repos.filter(r => !PORTFOLIO_CONFIG.excludeProjects.includes(r.name));
diff --git a/viewer.html b/viewer.html
new file mode 100644
index 000000000..b4d8c39f4
--- /dev/null
+++ b/viewer.html
@@ -0,0 +1,308 @@
+
+
+
+
+
+
+ Viewer | AI-Pulse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+