diff --git a/.gitignore b/.gitignore index 16d54bb..e4ada71 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ dist/ # generated types .astro/ +.nuxt/ # dependencies node_modules/ @@ -22,3 +23,7 @@ pnpm-debug.log* # jetbrains setting folder .idea/ + +# local tooling +.wrangler/ +codealike.json diff --git a/content/admins/andrew-smith.yaml b/content/admins/andrew-smith.yaml index 3848d4e..1ac6dfc 100644 --- a/content/admins/andrew-smith.yaml +++ b/content/admins/andrew-smith.yaml @@ -1,5 +1,5 @@ -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 @@ -7,3 +7,4 @@ socials: url: https://donielsmith.com - platform: github url: https://github.com/silentworks + diff --git a/content/admins/anthony-acquah.yaml b/content/admins/anthony-acquah.yaml index e0a6393..eee73ac 100644 --- a/content/admins/anthony-acquah.yaml +++ b/content/admins/anthony-acquah.yaml @@ -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 + diff --git a/content/admins/blossom-dugbatey.yaml b/content/admins/blossom-dugbatey.yaml index fb149a9..14cc318 100644 --- a/content/admins/blossom-dugbatey.yaml +++ b/content/admins/blossom-dugbatey.yaml @@ -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 + diff --git a/content/admins/bubunyo-nyavor.yaml b/content/admins/bubunyo-nyavor.yaml index ccd2da1..5b29909 100644 --- a/content/admins/bubunyo-nyavor.yaml +++ b/content/admins/bubunyo-nyavor.yaml @@ -1,5 +1,5 @@ -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 @@ -7,3 +7,4 @@ socials: url: https://5error.com - platform: github url: https://github.com/bubunyo + diff --git a/content/admins/claude-ayitey.yaml b/content/admins/claude-ayitey.yaml index f20a727..b7d29d1 100644 --- a/content/admins/claude-ayitey.yaml +++ b/content/admins/claude-ayitey.yaml @@ -5,3 +5,4 @@ socials: url: https://twitter.com/mrayitey - platform: website url: https://ayitey.com + diff --git a/content/admins/edem-kumodzi.yaml b/content/admins/edem-kumodzi.yaml index 6597f99..5b67ee7 100644 --- a/content/admins/edem-kumodzi.yaml +++ b/content/admins/edem-kumodzi.yaml @@ -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 @@ -9,3 +9,4 @@ socials: url: https://www.linkedin.com/in/edemkumodzi - platform: github url: https://github.com/edem + diff --git a/content/admins/elorm-adjaho.yaml b/content/admins/elorm-adjaho.yaml index 1390581..4219ae7 100644 --- a/content/admins/elorm-adjaho.yaml +++ b/content/admins/elorm-adjaho.yaml @@ -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 + diff --git a/content/admins/francis-addai.yaml b/content/admins/francis-addai.yaml index 6f7907c..3151109 100644 --- a/content/admins/francis-addai.yaml +++ b/content/admins/francis-addai.yaml @@ -1,5 +1,5 @@ -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 @@ -7,3 +7,4 @@ socials: url: https://francisaddai.com - platform: github url: https://github.com/francisaddai + diff --git a/content/admins/nathan-sodja.yaml b/content/admins/nathan-sodja.yaml index 9fae474..9b6cad9 100644 --- a/content/admins/nathan-sodja.yaml +++ b/content/admins/nathan-sodja.yaml @@ -1,5 +1,5 @@ -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 @@ -7,3 +7,4 @@ socials: url: https://hashnode.com/@nate233 - platform: github url: https://github.com/NateOs + diff --git a/content/admins/saviour-kirk.yaml b/content/admins/saviour-kirk.yaml index 639e241..ca5e091 100644 --- a/content/admins/saviour-kirk.yaml +++ b/content/admins/saviour-kirk.yaml @@ -5,3 +5,4 @@ socials: url: https://twitter.com/savekirk - platform: linkedin url: https://www.linkedin.com/in/savekirk + diff --git a/content/admins/stefan-froelich.yaml b/content/admins/stefan-froelich.yaml index 7a171f6..a0faa28 100644 --- a/content/admins/stefan-froelich.yaml +++ b/content/admins/stefan-froelich.yaml @@ -1,5 +1,5 @@ -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 @@ -7,3 +7,4 @@ socials: url: https://thedumbtechguy.com - platform: linkedin url: https://www.linkedin.com/in/stefanfroelich + diff --git a/content/admins/yaw-boakye.yaml b/content/admins/yaw-boakye.yaml index 53aa016..3699c7e 100644 --- a/content/admins/yaw-boakye.yaml +++ b/content/admins/yaw-boakye.yaml @@ -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 + diff --git a/public/favicon.ico b/public/favicon.ico index 7815019..ce716cd 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg index f157bd1..ea00238 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,9 +1,3 @@ - - - + + diff --git a/public/images/admins/andrew-smith.jpg b/public/images/admins/andrew-smith.jpg new file mode 100644 index 0000000..fc5cb22 Binary files /dev/null and b/public/images/admins/andrew-smith.jpg differ diff --git a/public/images/admins/anthony-acquah.png b/public/images/admins/anthony-acquah.png new file mode 100644 index 0000000..ade9e71 Binary files /dev/null and b/public/images/admins/anthony-acquah.png differ diff --git a/public/images/admins/blossom-dugbatey.jpg b/public/images/admins/blossom-dugbatey.jpg new file mode 100644 index 0000000..c5a1e8f Binary files /dev/null and b/public/images/admins/blossom-dugbatey.jpg differ diff --git a/public/images/admins/bubunyo-nyavor.jpg b/public/images/admins/bubunyo-nyavor.jpg new file mode 100644 index 0000000..b781042 Binary files /dev/null and b/public/images/admins/bubunyo-nyavor.jpg differ diff --git a/public/images/admins/default-avatar.svg b/public/images/admins/default-avatar.svg new file mode 100644 index 0000000..c275517 --- /dev/null +++ b/public/images/admins/default-avatar.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/admins/edem-kumodzi.jpg b/public/images/admins/edem-kumodzi.jpg new file mode 100644 index 0000000..3a7516f Binary files /dev/null and b/public/images/admins/edem-kumodzi.jpg differ diff --git a/public/images/admins/elorm-adjaho.jpg b/public/images/admins/elorm-adjaho.jpg new file mode 100644 index 0000000..30db2ea Binary files /dev/null and b/public/images/admins/elorm-adjaho.jpg differ diff --git a/public/images/admins/francis-addai.jpg b/public/images/admins/francis-addai.jpg new file mode 100644 index 0000000..734a4d2 Binary files /dev/null and b/public/images/admins/francis-addai.jpg differ diff --git a/public/images/admins/nathan-sodja.jpg b/public/images/admins/nathan-sodja.jpg new file mode 100644 index 0000000..915514e Binary files /dev/null and b/public/images/admins/nathan-sodja.jpg differ diff --git a/public/images/admins/stefan-froelich.jpg b/public/images/admins/stefan-froelich.jpg new file mode 100644 index 0000000..63fbdd2 Binary files /dev/null and b/public/images/admins/stefan-froelich.jpg differ diff --git a/public/images/admins/yaw-boakye.jpg b/public/images/admins/yaw-boakye.jpg new file mode 100644 index 0000000..b324a65 Binary files /dev/null and b/public/images/admins/yaw-boakye.jpg differ diff --git a/public/images/dc_400x400.png b/public/images/dc_400x400.png new file mode 100644 index 0000000..c26cfc8 Binary files /dev/null and b/public/images/dc_400x400.png differ diff --git a/public/images/favicon-16.png b/public/images/favicon-16.png index 415f4f1..a2636d6 100644 Binary files a/public/images/favicon-16.png and b/public/images/favicon-16.png differ diff --git a/public/images/favicon-180.png b/public/images/favicon-180.png index ff93981..1bbba2c 100644 Binary files a/public/images/favicon-180.png and b/public/images/favicon-180.png differ diff --git a/public/images/favicon-32.png b/public/images/favicon-32.png index 29c3e6f..cced6a1 100644 Binary files a/public/images/favicon-32.png and b/public/images/favicon-32.png differ diff --git a/public/images/favicon-512.png b/public/images/favicon-512.png index 2450788..8d0f04f 100644 Binary files a/public/images/favicon-512.png and b/public/images/favicon-512.png differ diff --git a/src/components/AdminsSection.astro b/src/components/AdminsSection.astro index f02a6fe..d28a2d5 100644 --- a/src/components/AdminsSection.astro +++ b/src/components/AdminsSection.astro @@ -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; @@ -16,37 +16,47 @@ const sorted = [...admins].sort((a, b) => a.data.name.localeCompare(b.data.name)

A volunteer-run community. No hierarchy, no corporate structure — just builders.

diff --git a/src/components/PartnersSection.astro b/src/components/PartnersSection.astro index 2726357..5339efd 100644 --- a/src/components/PartnersSection.astro +++ b/src/components/PartnersSection.astro @@ -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; } diff --git a/src/content.config.ts b/src/content.config.ts index 1aa2e07..37bf6aa 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -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(), @@ -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), }), });