Skip to content

Commit f18ff98

Browse files
committed
Update repos card design
1 parent 383122b commit f18ff98

File tree

4 files changed

+39
-7
lines changed

4 files changed

+39
-7
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"liveServer.settings.port": 5501
3+
}

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ <h1 class="text-3xl font-bold inline">
211211
<section class="w-full">
212212
<header><h2 class="text-center text-3xl mb-10">Projects Repositories</h2></header>
213213
<!-- Repos will be injected here -->
214-
<div id="repositories-container" class="carrusel-img h-full grid grid-rows-1 auto-cols-max grid-flow-col gap-4 overflow-x-auto overflow-y-hidden snap-x snap-mandatory w-full py-4"></div>
214+
<div id="repositories-container" loading="lazy" class="carrusel-img h-100 grid grid-rows-1 auto-cols-max grid-flow-col gap-4 overflow-x-auto overflow-y-hidden snap-x snap-mandatory w-full py-4"></div>
215215
</section>
216216

217217
<!-- Description page -->

src/assets/js/main.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,55 @@ async function loadRepos() {
2626
const container = document.querySelector('#repositories-container');
2727
const configsWeb = await loadConfigs();
2828
try {
29-
const res = await fetch('https://api.github.com/users/Dev2Forge/repos');
30-
const repos = await res.json();
29+
const res = await fetch('https://api.github.com/orgs/dev2forge/repos');
30+
/**
31+
* @type {Array<String>}
32+
*/
33+
let repos = await res.json();
34+
repos = repos.sort((a, b) => a?.name?.toLowerCase().charCodeAt(0) - b?.name?.toLowerCase().charCodeAt(0));
3135
repos.forEach((repo) => {
3236
// Skip repositories that are not in the configsWeb list
3337
if (!configsWeb.ignoreRepos.includes(repo.name)) {
3438
const card = document.createElement('div');
35-
card.className = 'flex flex-col justify-between items-center w-64 h-64 bg-gray-100 dark:bg-gray-800 p-4 rounded shadow hover:shadow-lg transition snap-start row-span-1';
36-
card.innerHTML = `<h2 class="text-xl font-semibold text-center w-full mb-2">${repo.name}</h2>
39+
card.className = 'flex flex-col justify-between items-center w-64 h-95 bg-gray-100 dark:bg-gray-800 p-4 rounded shadow hover:shadow-lg transition snap-start row-span-1';
40+
card.innerHTML = `
41+
<h2 class="text-xl font-semibold text-center w-full mb-2">${repo.name}</h2>
3742
<div class="flex-1 w-full overflow-y-auto mb-2 no-scrollbar">
3843
<p class="text-sm text-gray-600 dark:text-gray-300 text-center break-words">${repo.description || 'No description'}</p>
3944
</div>
4045
<div class="w-full flex justify-center mt-auto gap-3">
4146
<a href="${repo.html_url}" target="_blank" class="btn-repo-link flex items-center justify-center w-12 h-12 rounded-full bg-blue-100 dark:bg-blue-900 shadow hover:scale-110 hover:bg-blue-500 hover:text-white transition border border-blue-300 dark:border-blue-700 mr-0.5">
4247
<img width="24" height="24" src="https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@refs/heads/main/svg-icons-flags-cursor/icon/github-logo.svg" alt="GitHub">
4348
</a>
44-
<a href="${repo.homepage}" target="_blank" class="btn-repo-link flex items-center justify-center w-12 h-12 rounded-full bg-blue-100 dark:bg-blue-900 shadow hover:scale-110 hover:bg-blue-500 hover:text-white transition border border-blue-300 dark:border-blue-700 ml-0.5">
49+
<a href="${repo.homepage}" class="btn-repo-link flex items-center justify-center w-12 h-12 rounded-full bg-blue-100 dark:bg-blue-900 shadow hover:scale-110 hover:bg-blue-500 hover:text-white transition border border-blue-300 dark:border-blue-700 ml-0.5">
4550
<img width="16" height="16" src="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/icons/box-arrow-up-right.svg" alt="Icon redirect">
4651
</a>
4752
</div>
53+
<div class="w-full flex justify-center pt-4">
54+
<img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/${fix_name(repo.name)}?color=blue&style=flat-square" class="h-5 object-contain me-1">
55+
<img alt="PyPI - Version" src="https://img.shields.io/pypi/v/${fix_name(repo.name)}?color=orange" class="h-5 object-contain">
56+
</div>
57+
<div class="w-full flex justify-center">
58+
<img width="100" src="${configsWeb.logos[repo.name.toLowerCase()]}" alt="${repo.name} logo" class="object-cover rounded mt-2">
59+
</div>
60+
<div class="w-full flex justify-center mt-2">
61+
<code class="text-sm">pip install ${fix_name(repo.name)}</code>
62+
</div>
4863
`;
64+
4965
container.appendChild(card);
5066
}
5167
});
5268
} catch (e) {
69+
console.log(e);
5370
container.innerHTML = '<p class="text-red-500">Failed to load repositories.</p>';
5471
}
5572
}
5673

74+
function fix_name(name) {
75+
return name === 'E-SRM' ? 'effect-srm' : name;
76+
}
77+
5778
async function loadConfigs() {
5879
const req = await fetch('src/assets/json/configs.json');
5980
const data = await req.json();

src/assets/json/configs.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
{
22
"ignoreRepos": ["discussions-about", "dev2forge.github.io", ".github", "docs"],
3-
"thumbnail1": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/thumbanil-dev2forge1.webp"
3+
"thumbnail1": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/thumbanil-dev2forge1.webp",
4+
"logos": {
5+
"bridgex": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/bridgex-v0.1.0.webp",
6+
"sqlazo": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/sqlazo-v0.2.0.webp",
7+
"pdf2wordx": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/pdf2wordx-v2.1.2.svg",
8+
"e-srm": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/e-srm-v0.1.0.webp",
9+
"chromologger": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/chromologger-v0.1.9.webp",
10+
"chromolog": "https://cdn.jsdelivr.net/gh/tutosrive/images-projects-srm-trg@main/dev2forge/logos/chromolog-v0.2.5.webp"
11+
}
412
}

0 commit comments

Comments
 (0)