Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
dist/
# generated types
.astro/
.nuxt/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?


# dependencies
node_modules/
Expand All @@ -22,3 +23,7 @@ pnpm-debug.log*

# jetbrains setting folder
.idea/

# local tooling
.wrangler/
codealike.json
5 changes: 3 additions & 2 deletions content/admins/andrew-smith.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: Andrew Smith
image: https://pbs.twimg.com/profile_images/1686721836795432960/Ghu7dKZC_400x400.jpg
name: Andrew Smith
image: /website/images/admins/andrew-smith.jpg
socials:
- platform: x
url: https://twitter.com/silentworks
- platform: website
url: https://donielsmith.com
- platform: github
url: https://github.com/silentworks

5 changes: 3 additions & 2 deletions content/admins/anthony-acquah.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: Anthony Acquah
image: https://pbs.twimg.com/profile_images/3248556771/feb8ad6b5f403e70ea321d17b80df232_400x400.png
name: Anthony Acquah
image: /website/images/admins/anthony-acquah.png
socials:
- platform: x
url: https://twitter.com/tony_mobster
- platform: website
url: https://about.me/anthonyacquah

5 changes: 3 additions & 2 deletions content/admins/blossom-dugbatey.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: Blossom Dugbatey
image: https://ca.slack-edge.com/T0A0T7A5Q-U02LQJ83N9H-42650d9d2b97-512
name: Blossom Dugbatey
image: /website/images/admins/blossom-dugbatey.jpg
socials:
- platform: x
url: https://x.com/DedeCodex

5 changes: 3 additions & 2 deletions content/admins/bubunyo-nyavor.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: Bubunyo Nyavor
image: https://pbs.twimg.com/media/FHvsk2MXMAQBovS?format=jpg&name=large
name: Bubunyo Nyavor
image: /website/images/admins/bubunyo-nyavor.jpg
socials:
- platform: x
url: https://twitter.com/KiddBubu
- platform: website
url: https://5error.com
- platform: github
url: https://github.com/bubunyo

1 change: 1 addition & 0 deletions content/admins/claude-ayitey.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ socials:
url: https://twitter.com/mrayitey
- platform: website
url: https://ayitey.com

5 changes: 3 additions & 2 deletions content/admins/edem-kumodzi.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Edem Kumodzi
image: https://avatars.githubusercontent.com/u/676790?v=4
name: Edem Kumodzi
image: /website/images/admins/edem-kumodzi.jpg
socials:
- platform: x
url: https://twitter.com/edemkumodzi
Expand All @@ -9,3 +9,4 @@ socials:
url: https://www.linkedin.com/in/edemkumodzi
- platform: github
url: https://github.com/edem

5 changes: 3 additions & 2 deletions content/admins/elorm-adjaho.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: Elorm Adjaho
image: https://images.squarespace-cdn.com/content/v1/64c1ced9e4d636753f2d62a9/6c6bc5a8-d5ac-4603-8620-8d7a501cae5f/Elorm+Adjaho+_+IWL+Fellow.jpg
name: Elorm Adjaho
image: /website/images/admins/elorm-adjaho.jpg
socials:
- platform: x
url: https://twitter.com/elormm_a

5 changes: 3 additions & 2 deletions content/admins/francis-addai.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: Francis Addai
image: https://pbs.twimg.com/profile_images/1278660776232996864/YouNWmIr_400x400.jpg
name: Francis Addai
image: /website/images/admins/francis-addai.jpg
socials:
- platform: x
url: https://twitter.com/faddai
- platform: website
url: https://francisaddai.com
- platform: github
url: https://github.com/francisaddai

5 changes: 3 additions & 2 deletions content/admins/nathan-sodja.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: Nathan Sodja
image: https://ca.slack-edge.com/T0A0T7A5Q-U01NAPY9TEC-f92ae3063f27-512
name: Nathan Sodja
image: https://pbs.twimg.com/profile_images/2043070329791352833/A1y4FZTS_400x400.jpg
socials:
- platform: x
url: https://x.com/me_souljah
- platform: website
url: https://hashnode.com/@nate233
- platform: github
url: https://github.com/NateOs

1 change: 1 addition & 0 deletions content/admins/saviour-kirk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ socials:
url: https://twitter.com/savekirk
- platform: linkedin
url: https://www.linkedin.com/in/savekirk

5 changes: 3 additions & 2 deletions content/admins/stefan-froelich.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name: Stefan Froelich
image: https://pbs.twimg.com/profile_images/1875679658647138304/w--j-PK8_400x400.jpg
name: Stefan Froelich
image: /website/images/admins/stefan-froelich.jpg
socials:
- platform: x
url: https://x.com/TheDumbTechGuy
- platform: website
url: https://thedumbtechguy.com
- platform: linkedin
url: https://www.linkedin.com/in/stefanfroelich

5 changes: 3 additions & 2 deletions content/admins/yaw-boakye.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: Yaw Boakye
image: https://pbs.twimg.com/profile_images/1680929162616291329/_jCSwpti_400x400.jpg
name: Yaw Boakye
image: /website/images/admins/yaw-boakye.jpg
socials:
- platform: x
url: https://twitter.com/ejnbo

Binary file modified public/favicon.ico
Binary file not shown.
10 changes: 2 additions & 8 deletions public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/andrew-smith.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/anthony-acquah.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/blossom-dugbatey.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/bubunyo-nyavor.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions public/images/admins/default-avatar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/edem-kumodzi.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/elorm-adjaho.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/francis-addai.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/nathan-sodja.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/stefan-froelich.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/admins/yaw-boakye.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/dc_400x400.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/images/favicon-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/images/favicon-180.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/images/favicon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/images/favicon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
74 changes: 42 additions & 32 deletions src/components/AdminsSection.astro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
interface Social { platform: string; url: string; }
interface Admin {
id: string;
data: { name: string; image: string; socials: Social[]; };
data: { name: string; image?: string | null; avatar_seed?: string; socials: Social[]; };
}
interface Props { admins: Admin[]; }
const { admins } = Astro.props;
Expand All @@ -16,37 +16,47 @@ const sorted = [...admins].sort((a, b) => a.data.name.localeCompare(b.data.name)
<p class="admins-intro">A volunteer-run community. No hierarchy, no corporate structure — just builders.</p>

<ul class="admins-grid">
{sorted.map((admin) => (
<li class="admin-card card">
<div class="admin-img-wrap">
<img
src={admin.data.image}
alt={admin.data.name}
loading="lazy"
decoding="async"
class="admin-img"
/>
</div>
<div class="admin-body">
<h3 class="admin-name">{admin.data.name}</h3>
<ul class="admin-socials">
{admin.data.socials.map((s) => (
<li>
<a
href={s.url}
target="_blank"
rel="noopener noreferrer"
class="admin-social"
aria-label={`${admin.data.name} on ${s.platform}`}
>
{s.platform}
</a>
</li>
))}
</ul>
</div>
</li>
))}
{sorted.map((admin) => {
const naviiSeed = encodeURIComponent(admin.data.avatar_seed ?? admin.id);
const naviiSrc = `https://api.navii.dev/avatar/${naviiSeed}.png?size=512`;
const defaultSrc = '/website/images/admins/default-avatar.svg';
const src = admin.data.image ?? naviiSrc;

return (
<li class="admin-card card">
<div class="admin-img-wrap">
<img
src={src}
alt={admin.data.name}
loading="lazy"
decoding="async"
data-navii-src={naviiSrc}
data-default-src={defaultSrc}
onerror="if(this.dataset.fallback!=='1'){this.dataset.fallback='1';this.src=this.dataset.naviiSrc||this.dataset.defaultSrc||'';}else{this.src=this.dataset.defaultSrc||'';}"
class="admin-img"
/>
</div>
<div class="admin-body">
<h3 class="admin-name">{admin.data.name}</h3>
<ul class="admin-socials">
{admin.data.socials.map((s) => (
<li>
<a
href={s.url}
target="_blank"
rel="noopener noreferrer"
class="admin-social"
aria-label={`${admin.data.name} on ${s.platform}`}
>
{s.platform}
</a>
</li>
))}
</ul>
</div>
</li>
);
})}
</ul>
</div>
</section>
Expand Down
13 changes: 12 additions & 1 deletion src/components/PartnersSection.astro
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,20 @@ const sortedPartners = [...partners].sort((a, b) => a.data.name.localeCompare(b.
display: block;
}

.partner-item a,
.partner-item > img {
width: 150px;
height: 60px;
display: flex;
align-items: center;
justify-content: center;
}

.partner-item img {
height: 100px;
max-width: 150px;
max-height: 60px;
width: auto;
height: auto;
object-fit: contain;
}

Expand Down
14 changes: 13 additions & 1 deletion src/content.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,15 @@
import { defineCollection, z } from 'astro:content';
import { glob, file } from 'astro/loaders';

const isUrl = (value: string) => {
try {
new URL(value);
return true;
} catch {
return false;
}
};

const socialSchema = z.object({
platform: z.enum(['x', 'linkedin', 'github', 'website', 'youtube', 'instagram', 'facebook', 'discord', 'slack']),
url: z.string().url(),
Expand All @@ -10,7 +19,10 @@ const admins = defineCollection({
loader: glob({ pattern: '**/*.yaml', base: './content/admins' }),
schema: z.object({
name: z.string().min(2).max(100),
image: z.string().url(),
avatar_seed: z.string().min(2).max(200).optional(),
image: z.string().min(1).refine((value) => value.startsWith('/') || isUrl(value), {
message: 'image must be an absolute path or full URL',
}).nullable().optional(),
socials: z.array(socialSchema),
}),
});
Expand Down
Loading