document.addEventListener('DOMContentLoaded', () => { const repoForm = document.getElementById('repoForm'); const loading = document.getElementById('loading'); const results = document.getElementById('results'); repoForm.addEventListener('submit', async (e) => { e.preventDefault(); const username = document.getElementById('username').value.trim(); const repo = document.getElementById('repo').value.trim(); if (!username || !repo) { alert('Please enter both GitHub username and repository name'); return; } // Show loading indicator loading.classList.remove('hidden'); results.classList.add('hidden'); try { const response = await fetch(`https://api.github.com/repos/${username}/${repo}`); if (!response.ok) { throw new Error('Repository not found or API rate limit exceeded'); } const data = await response.json(); displayResults(data, username, repo); // Fetch README.md content const readmeResponse = await fetch(`https://api.github.com/repos/${username}/${repo}/readme`, { headers: { 'Accept': 'application/vnd.github.v3.raw' } }); if (readmeResponse.ok) { const readmeContent = await readmeResponse.text(); displayReadme(readmeContent); } } catch (error) { results.innerHTML = `

Error fetching repository

${error.message}

`; feather.replace(); } finally { loading.classList.add('hidden'); results.classList.remove('hidden'); } }); function displayResults(data, username, repo) { results.innerHTML = `
Avatar

${data.name}

${data.description || 'No description'}

${data.stargazers_count} ${data.watchers_count} ${data.forks_count} ${data.open_issues_count} View on GitHub

Repository Details

Quick Links

README

Loading README...
`; feather.replace(); } function displayReadme(content) { const readmeContainer = document.getElementById('readme-content'); if (content) { // Simple markdown to HTML conversion for basic formatting let htmlContent = content .replace(/^#\s(.+)$/gm, '

$1

') .replace(/^##\s(.+)$/gm, '

$1

') .replace(/^###\s(.+)$/gm, '

$1

') .replace(/\*\*(.+?)\*\*/g, '$1') .replace(/\*(.+?)\*/g, '$1') .replace(/`(.+?)`/g, '$1') .replace(/!\[(.*?)\]\((.*?)\)/g, '$1') .replace(/\[(.*?)\]\((.*?)\)/g, '$1'); readmeContainer.innerHTML = htmlContent; } else { readmeContainer.innerHTML = '

No README found for this repository.

'; } } });