From 3324eb51794c7a162ee5e9a6e3705871db9f9d3c Mon Sep 17 00:00:00 2001 From: achrafhardizi Date: Thu, 20 Feb 2025 19:58:39 +0100 Subject: [PATCH 1/2] Fix: Fix the image alignment on the team grid (#496) --- src/components/about/member.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/about/member.astro b/src/components/about/member.astro index 4ee3f334..33fa096f 100644 --- a/src/components/about/member.astro +++ b/src/components/about/member.astro @@ -7,7 +7,7 @@ const { name, link, profile_image } = Astro.props;
{name} Date: Fri, 21 Feb 2025 15:29:22 +0100 Subject: [PATCH 2/2] Enhancement: Refactor Team Implementation on About Page in PR #496 --- astro.config.mjs | 136 ++++++------- package.json | 184 +++++++++--------- src/components/about/member.astro | 2 +- src/components/about/team.astro | 7 +- src/content/config.ts | 6 +- src/content/schema.ts | 20 +- .../images/team => team/images}/Afaf.jpg | Bin .../images/team => team/images}/adnan.jpg | Bin .../images/team => team/images}/amine.jpg | Bin .../images/team => team/images}/britel.jpg | Bin .../images/team => team/images}/daoudi.jpg | Bin .../images/team => team/images}/default.jpg | Bin .../team => team/images}/ez-zarghili.jpg | Bin .../images/team => team/images}/hamza.jpg | Bin .../images/team => team/images}/hanane.jpg | Bin .../images/team => team/images}/hardizi.jpg | Bin .../images/team => team/images}/imeriem.jpg | Bin .../images/team => team/images}/ismail.jpg | Bin .../images/team => team/images}/isoubei.jpg | Bin .../images/team => team/images}/kaizendae.jpg | Bin .../images/team => team/images}/laytoun.jpg | Bin .../images/team => team/images}/maarouf.jpg | Bin .../images/team => team/images}/mourad.jpg | Bin .../images/team => team/images}/nouamane.jpg | Bin .../images/team => team/images}/ofettal.jpg | Bin .../images/team => team/images}/omaima.jpg | Bin .../images/team => team/images}/oumaima.jpg | Bin .../images/team => team/images}/oussama.jpg | Bin .../images/team => team/images}/rachyd.jpg | Bin .../images/team => team/images}/redouane.jpg | Bin .../images/team => team/images}/soufyan.jpg | Bin .../images/team => team/images}/telmcani.jpg | Bin .../images/team => team/images}/wewantu.jpg | Bin .../images/team => team/images}/yosef.jpg | Bin .../about => team}/team-members.json | 56 +++--- 35 files changed, 205 insertions(+), 206 deletions(-) rename {public/about/images/team => team/images}/Afaf.jpg (100%) rename {public/about/images/team => team/images}/adnan.jpg (100%) rename {public/about/images/team => team/images}/amine.jpg (100%) rename {public/about/images/team => team/images}/britel.jpg (100%) rename {public/about/images/team => team/images}/daoudi.jpg (100%) rename {public/about/images/team => team/images}/default.jpg (100%) rename {public/about/images/team => team/images}/ez-zarghili.jpg (100%) rename {public/about/images/team => team/images}/hamza.jpg (100%) rename {public/about/images/team => team/images}/hanane.jpg (100%) rename {public/about/images/team => team/images}/hardizi.jpg (100%) rename {public/about/images/team => team/images}/imeriem.jpg (100%) rename {public/about/images/team => team/images}/ismail.jpg (100%) rename {public/about/images/team => team/images}/isoubei.jpg (100%) rename {public/about/images/team => team/images}/kaizendae.jpg (100%) rename {public/about/images/team => team/images}/laytoun.jpg (100%) rename {public/about/images/team => team/images}/maarouf.jpg (100%) rename {public/about/images/team => team/images}/mourad.jpg (100%) rename {public/about/images/team => team/images}/nouamane.jpg (100%) rename {public/about/images/team => team/images}/ofettal.jpg (100%) rename {public/about/images/team => team/images}/omaima.jpg (100%) rename {public/about/images/team => team/images}/oumaima.jpg (100%) rename {public/about/images/team => team/images}/oussama.jpg (100%) rename {public/about/images/team => team/images}/rachyd.jpg (100%) rename {public/about/images/team => team/images}/redouane.jpg (100%) rename {public/about/images/team => team/images}/soufyan.jpg (100%) rename {public/about/images/team => team/images}/telmcani.jpg (100%) rename {public/about/images/team => team/images}/wewantu.jpg (100%) rename {public/about/images/team => team/images}/yosef.jpg (100%) rename {src/components/about => team}/team-members.json (70%) diff --git a/astro.config.mjs b/astro.config.mjs index b9069dc1..9aa60bbc 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,68 +1,68 @@ -import { defineConfig } from "astro/config"; -import tailwind from "@astrojs/tailwind"; -import react from "@astrojs/react"; -import remarkToc from "remark-toc"; -import icon from "astro-icon"; -import remarkCollapse from "remark-collapse"; -import sitemap from "@astrojs/sitemap"; -import { SITE } from "./src/config"; - -import mdx from "@astrojs/mdx"; -import pagefind from "astro-pagefind"; -import netlify from "@astrojs/netlify"; -import { getAstroRedirects } from "./src/redirects"; - -const redirects = getAstroRedirects(); -// https://astro.build/config -export default defineConfig({ - site: SITE.website, - output: "hybrid", - adapter: netlify(), - prefetch: { - prefetchAll: true, - }, - experimental: { contentLayer: true, serverIslands: true }, - build: { - format: "file", - }, - redirects, - - integrations: [ - tailwind({ - applyBaseStyles: false, - }), - react(), - sitemap({ - filter: page => !page.includes("/404"), - changefreq: "weekly", - priority: 0.7, - lastmod: new Date(), - }), - icon(), - mdx(), - pagefind(), - ], - - markdown: { - remarkPlugins: [ - remarkToc, - [ - remarkCollapse, - { - test: "Table of contents", - }, - ], - ], - shikiConfig: { - themes: { light: "min-light", dark: "night-owl" }, - wrap: true, - }, - }, - vite: { - assetsInclude: ["**/*.riv"], - optimizeDeps: { - exclude: ["@resvg/resvg-js"], - }, - }, - scopedStyleStrategy: "where", -}); +import { defineConfig } from "astro/config"; +import tailwind from "@astrojs/tailwind"; +import react from "@astrojs/react"; +import remarkToc from "remark-toc"; +import icon from "astro-icon"; +import remarkCollapse from "remark-collapse"; +import sitemap from "@astrojs/sitemap"; +import { SITE } from "./src/config"; + +import mdx from "@astrojs/mdx"; +import pagefind from "astro-pagefind"; +import netlify from "@astrojs/netlify"; +import { getAstroRedirects } from "./src/redirects"; + +const redirects = getAstroRedirects(); +// https://astro.build/config +export default defineConfig({ + site: SITE.website, + output: "hybrid", + adapter: netlify(), + prefetch: { + prefetchAll: true, + }, + experimental: { contentLayer: true, serverIslands: true }, + build: { + format: "file", + }, + redirects, + + integrations: [ + tailwind({ + applyBaseStyles: false, + }), + react(), + sitemap({ + filter: page => !page.includes("/404"), + changefreq: "weekly", + priority: 0.7, + lastmod: new Date(), + }), + icon(), + mdx(), + pagefind(), + ], + + markdown: { + remarkPlugins: [ + remarkToc, + [ + remarkCollapse, + { + test: "Table of contents", + }, + ], + ], + shikiConfig: { + themes: { light: "min-light", dark: "night-owl" }, + wrap: true, + }, + }, + vite: { + assetsInclude: ["**/*.riv"], + optimizeDeps: { + exclude: ["@resvg/resvg-js"], + }, + }, + scopedStyleStrategy: "where", +}); diff --git a/package.json b/package.json index 2bba62b8..e289bd23 100644 --- a/package.json +++ b/package.json @@ -1,92 +1,92 @@ -{ - "name": "geeksblabla-community", - "type": "module", - "version": "2.0.0", - "private": true, - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "deploy": "astro build && wrangler deploy", - "sync": "astro sync", - "astro": "astro", - "check": "astro check", - "lint": "prettier --write \"**/*.{js,jsx,ts,tsx,md,mdx,astro}\" && eslint --fix \"src/**/*.{js,ts,jsx,tsx,astro}\"", - "lint:ci": "eslint \"src/**/*.{js,ts,jsx,tsx,astro}\"", - "prepare": "husky", - "validate-episode": "node .github/scripts/validate-episode-markdown.js", - "get-missed-episode": "node .github/scripts/get-missed-episode.js", - "check-all": "pnpm run lint && pnpm run check && pnpm run build" - }, - "dependencies": { - "@astrojs/check": "^0.9.4", - "@astrojs/mdx": "^3.1.9", - "@astrojs/netlify": "^5.5.4", - "@astrojs/rss": "^4.0.9", - "@astrolib/seo": "1.0.0-beta.8", - "@astropub/md": "^1.0.0", - "@hookform/resolvers": "^3.9.1", - "@notionhq/client": "^2.2.15", - "@radix-ui/react-slot": "^1.1.0", - "@resvg/resvg-js": "^2.6.2", - "@rive-app/canvas": "^2.21.6", - "astro": "^4.16.13", - "astro-cloudinary": "^1.1.2", - "astro-icon": "^1.1.1", - "astro-pagefind": "^1.6.0", - "class-variance-authority": "^0.7.0", - "clsx": "^2.1.1", - "fuse.js": "^7.0.0", - "lodash.kebabcase": "^4.1.1", - "react-hook-form": "^7.53.2", - "reading-time": "^1.5.0", - "remark-collapse": "^0.1.2", - "remark-toc": "^9.0.0", - "satori": "^0.11.2", - "tailwindcss": "^3.4.11", - "typescript": "^5.5.3", - "node-fetch": "^3.3.2", - "fast-xml-parser": "^4.3.4", - "gray-matter": "^4.0.3" - }, - "devDependencies": { - "@astrojs/react": "^3.6.2", - "@astrojs/sitemap": "^3.2.1", - "@astrojs/tailwind": "^5.1.2", - "@tailwindcss/aspect-ratio": "^0.4.2", - "@tailwindcss/typography": "^0.5.15", - "@types/github-slugger": "^1.3.0", - "@types/lodash.kebabcase": "^4.1.9", - "@types/react": "^18.3.6", - "@typescript-eslint/parser": "^8.5.0", - "astro-eslint-parser": "^1.0.3", - "eslint": "^9.10.0", - "eslint-plugin-astro": "^1.2.4", - "eslint-plugin-unicorn": "^56.0.0", - "globals": "^15.9.0", - "husky": "^9.1.6", - "lint-staged": "^15.2.10", - "prettier": "^3.3.3", - "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-tailwindcss": "^0.6.6", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "tailwind-merge": "^2.5.3", - "tailwindcss-motion": "0.4.1-beta", - "tsx": "^4.19.1", - "typescript-eslint": "^8.5.0" - }, - "lint-staged": { - "*.{js,jsx,ts,tsx,astro}": [ - "eslint --fix", - "prettier --write" - ], - "*.{md,mdx}": [ - "prettier --write" - ], - "episodes/*.{md,mdx}": [ - "pnpm validate-episode" - ] - } -} +{ + "name": "geeksblabla-community", + "type": "module", + "version": "2.0.0", + "private": true, + "scripts": { + "dev": "astro dev", + "start": "astro dev", + "build": "astro build", + "preview": "astro preview", + "deploy": "astro build && wrangler deploy", + "sync": "astro sync", + "astro": "astro", + "check": "astro check", + "lint": "prettier --write \"**/*.{js,jsx,ts,tsx,md,mdx,astro}\" && eslint --fix \"src/**/*.{js,ts,jsx,tsx,astro}\"", + "lint:ci": "eslint \"src/**/*.{js,ts,jsx,tsx,astro}\"", + "prepare": "husky", + "validate-episode": "node .github/scripts/validate-episode-markdown.js", + "get-missed-episode": "node .github/scripts/get-missed-episode.js", + "check-all": "pnpm run lint && pnpm run check && pnpm run build" + }, + "dependencies": { + "@astrojs/check": "^0.9.4", + "@astrojs/mdx": "^3.1.9", + "@astrojs/netlify": "^5.5.4", + "@astrojs/rss": "^4.0.9", + "@astrolib/seo": "1.0.0-beta.8", + "@astropub/md": "^1.0.0", + "@hookform/resolvers": "^3.9.1", + "@notionhq/client": "^2.2.15", + "@radix-ui/react-slot": "^1.1.0", + "@resvg/resvg-js": "^2.6.2", + "@rive-app/canvas": "^2.21.6", + "astro": "^4.16.13", + "astro-cloudinary": "^1.1.2", + "astro-icon": "^1.1.1", + "astro-pagefind": "^1.6.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "fuse.js": "^7.0.0", + "lodash.kebabcase": "^4.1.1", + "react-hook-form": "^7.53.2", + "reading-time": "^1.5.0", + "remark-collapse": "^0.1.2", + "remark-toc": "^9.0.0", + "satori": "^0.11.2", + "tailwindcss": "^3.4.11", + "typescript": "^5.5.3", + "node-fetch": "^3.3.2", + "fast-xml-parser": "^4.3.4", + "gray-matter": "^4.0.3" + }, + "devDependencies": { + "@astrojs/react": "^3.6.2", + "@astrojs/sitemap": "^3.2.1", + "@astrojs/tailwind": "^5.1.2", + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/typography": "^0.5.15", + "@types/github-slugger": "^1.3.0", + "@types/lodash.kebabcase": "^4.1.9", + "@types/react": "^18.3.6", + "@typescript-eslint/parser": "^8.5.0", + "astro-eslint-parser": "^1.0.3", + "eslint": "^9.10.0", + "eslint-plugin-astro": "^1.2.4", + "eslint-plugin-unicorn": "^56.0.0", + "globals": "^15.9.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "prettier": "^3.3.3", + "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.6.6", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "tailwind-merge": "^2.5.3", + "tailwindcss-motion": "0.4.1-beta", + "tsx": "^4.19.1", + "typescript-eslint": "^8.5.0" + }, + "lint-staged": { + "*.{js,jsx,ts,tsx,astro}": [ + "eslint --fix", + "prettier --write" + ], + "*.{md,mdx}": [ + "prettier --write" + ], + "episodes/*.{md,mdx}": [ + "pnpm validate-episode" + ] + } +} diff --git a/src/components/about/member.astro b/src/components/about/member.astro index 33fa096f..02f192fa 100644 --- a/src/components/about/member.astro +++ b/src/components/about/member.astro @@ -7,7 +7,7 @@ const { name, link, profile_image } = Astro.props;
{name} ({ - name: member.data.name, - link: member.data.link, - profile_image: member.data.profile_image, - status: member.data.status, -})); +const teamMembers = teamCollection.map(member => member.data); const activeMembers = teamMembers.filter(member => member.status === "active"); const pastMembers = teamMembers.filter(member => member.status === "past"); diff --git a/src/content/config.ts b/src/content/config.ts index ed64d163..2b4acbe1 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -5,7 +5,7 @@ import { authorSchema, blogSchema, episodeSchema, - teamSchema, + memberSchema, testimonialSchema, } from "./schema"; /** @@ -46,8 +46,8 @@ const gallery = !import.meta.env.PUBLIC_CLOUDINARY_CLOUD_NAME }); const team = defineCollection({ - loader: file("src/components/about/team-members.json"), - schema: teamSchema, + loader: file("team/team-members.json"), + schema: ctx => memberSchema(ctx), }); const testimonials = defineCollection({ diff --git a/src/content/schema.ts b/src/content/schema.ts index 8d5e5c21..8e589e08 100644 --- a/src/content/schema.ts +++ b/src/content/schema.ts @@ -77,14 +77,18 @@ export const authorSchema = z.object({ export type ArticleFrontmatter = z.infer>; -export const teamSchema = z.object({ - name: z.string().min(1, "Name cannot be empty"), - link: z.string().url("Invalid URL format"), - profile_image: z - .string() - .regex(/\.(jpg|jpeg|png|gif)$/, "Invalid image file format"), - status: z.enum(["active", "past"]), -}); +export const memberSchema = (ctx: SchemaContext) => + z.object({ + name: z.string(), + link: z.string().url(), + profile_image: ctx.image(), + status: z.enum(["active", "past"]), + }); + +export const teamSchema = (ctx: SchemaContext) => + z.object({ + members: z.array(memberSchema(ctx)), + }); export const testimonialSchema = (ctx: SchemaContext) => z.object({ diff --git a/public/about/images/team/Afaf.jpg b/team/images/Afaf.jpg similarity index 100% rename from public/about/images/team/Afaf.jpg rename to team/images/Afaf.jpg diff --git a/public/about/images/team/adnan.jpg b/team/images/adnan.jpg similarity index 100% rename from public/about/images/team/adnan.jpg rename to team/images/adnan.jpg diff --git a/public/about/images/team/amine.jpg b/team/images/amine.jpg similarity index 100% rename from public/about/images/team/amine.jpg rename to team/images/amine.jpg diff --git a/public/about/images/team/britel.jpg b/team/images/britel.jpg similarity index 100% rename from public/about/images/team/britel.jpg rename to team/images/britel.jpg diff --git a/public/about/images/team/daoudi.jpg b/team/images/daoudi.jpg similarity index 100% rename from public/about/images/team/daoudi.jpg rename to team/images/daoudi.jpg diff --git a/public/about/images/team/default.jpg b/team/images/default.jpg similarity index 100% rename from public/about/images/team/default.jpg rename to team/images/default.jpg diff --git a/public/about/images/team/ez-zarghili.jpg b/team/images/ez-zarghili.jpg similarity index 100% rename from public/about/images/team/ez-zarghili.jpg rename to team/images/ez-zarghili.jpg diff --git a/public/about/images/team/hamza.jpg b/team/images/hamza.jpg similarity index 100% rename from public/about/images/team/hamza.jpg rename to team/images/hamza.jpg diff --git a/public/about/images/team/hanane.jpg b/team/images/hanane.jpg similarity index 100% rename from public/about/images/team/hanane.jpg rename to team/images/hanane.jpg diff --git a/public/about/images/team/hardizi.jpg b/team/images/hardizi.jpg similarity index 100% rename from public/about/images/team/hardizi.jpg rename to team/images/hardizi.jpg diff --git a/public/about/images/team/imeriem.jpg b/team/images/imeriem.jpg similarity index 100% rename from public/about/images/team/imeriem.jpg rename to team/images/imeriem.jpg diff --git a/public/about/images/team/ismail.jpg b/team/images/ismail.jpg similarity index 100% rename from public/about/images/team/ismail.jpg rename to team/images/ismail.jpg diff --git a/public/about/images/team/isoubei.jpg b/team/images/isoubei.jpg similarity index 100% rename from public/about/images/team/isoubei.jpg rename to team/images/isoubei.jpg diff --git a/public/about/images/team/kaizendae.jpg b/team/images/kaizendae.jpg similarity index 100% rename from public/about/images/team/kaizendae.jpg rename to team/images/kaizendae.jpg diff --git a/public/about/images/team/laytoun.jpg b/team/images/laytoun.jpg similarity index 100% rename from public/about/images/team/laytoun.jpg rename to team/images/laytoun.jpg diff --git a/public/about/images/team/maarouf.jpg b/team/images/maarouf.jpg similarity index 100% rename from public/about/images/team/maarouf.jpg rename to team/images/maarouf.jpg diff --git a/public/about/images/team/mourad.jpg b/team/images/mourad.jpg similarity index 100% rename from public/about/images/team/mourad.jpg rename to team/images/mourad.jpg diff --git a/public/about/images/team/nouamane.jpg b/team/images/nouamane.jpg similarity index 100% rename from public/about/images/team/nouamane.jpg rename to team/images/nouamane.jpg diff --git a/public/about/images/team/ofettal.jpg b/team/images/ofettal.jpg similarity index 100% rename from public/about/images/team/ofettal.jpg rename to team/images/ofettal.jpg diff --git a/public/about/images/team/omaima.jpg b/team/images/omaima.jpg similarity index 100% rename from public/about/images/team/omaima.jpg rename to team/images/omaima.jpg diff --git a/public/about/images/team/oumaima.jpg b/team/images/oumaima.jpg similarity index 100% rename from public/about/images/team/oumaima.jpg rename to team/images/oumaima.jpg diff --git a/public/about/images/team/oussama.jpg b/team/images/oussama.jpg similarity index 100% rename from public/about/images/team/oussama.jpg rename to team/images/oussama.jpg diff --git a/public/about/images/team/rachyd.jpg b/team/images/rachyd.jpg similarity index 100% rename from public/about/images/team/rachyd.jpg rename to team/images/rachyd.jpg diff --git a/public/about/images/team/redouane.jpg b/team/images/redouane.jpg similarity index 100% rename from public/about/images/team/redouane.jpg rename to team/images/redouane.jpg diff --git a/public/about/images/team/soufyan.jpg b/team/images/soufyan.jpg similarity index 100% rename from public/about/images/team/soufyan.jpg rename to team/images/soufyan.jpg diff --git a/public/about/images/team/telmcani.jpg b/team/images/telmcani.jpg similarity index 100% rename from public/about/images/team/telmcani.jpg rename to team/images/telmcani.jpg diff --git a/public/about/images/team/wewantu.jpg b/team/images/wewantu.jpg similarity index 100% rename from public/about/images/team/wewantu.jpg rename to team/images/wewantu.jpg diff --git a/public/about/images/team/yosef.jpg b/team/images/yosef.jpg similarity index 100% rename from public/about/images/team/yosef.jpg rename to team/images/yosef.jpg diff --git a/src/components/about/team-members.json b/team/team-members.json similarity index 70% rename from src/components/about/team-members.json rename to team/team-members.json index ac4f8bf6..0d01aec4 100644 --- a/src/components/about/team-members.json +++ b/team/team-members.json @@ -3,196 +3,196 @@ "id": 1, "name": "Youssef El Azizi", "link": "https://x.com/ElaziziYoussouf", - "profile_image": "/about/images/team/yosef.jpg", + "profile_image": "./images/yosef.jpg", "status": "active" }, { "id": 2, "name": "Mohammed Aboullaite", "link": "https://x.com/laytoun", - "profile_image": "/about/images/team/laytoun.jpg", + "profile_image": "./images/laytoun.jpg", "status": "active" }, { "id": 3, "name": "Mriem Zaid", "link": "https://x.com/_iMeriem", - "profile_image": "/about/images/team/imeriem.jpg", + "profile_image": "./images/imeriem.jpg", "status": "active" }, { "id": 4, "name": "Abderrahim SOUBAI-ELIDRISI", "link": "https://x.com/soub4i", - "profile_image": "/about/images/team/isoubei.jpg", + "profile_image": "./images/isoubei.jpg", "status": "active" }, { "id": 5, "name": "Otmane Fettal", "link": "https://x.com/OFettal", - "profile_image": "/about/images/team/ofettal.jpg", + "profile_image": "./images/ofettal.jpg", "status": "active" }, { "id": 6, "name": "Adnan M'RAKCHI", "link": "https://x.com/_admerra", - "profile_image": "/about/images/team/adnan.jpg", + "profile_image": "./images/adnan.jpg", "status": "active" }, { "id": 7, "name": "Redouane Soukaoui", "link": "https://www.instagram.com/reduanez", - "profile_image": "/about/images/team/redouane.jpg", + "profile_image": "./images/redouane.jpg", "status": "active" }, { "id": 8, "name": "Oumaima Makhlouk", "link": "https://www.linkedin.com/in/oumaima-makhlouk", - "profile_image": "/about/images/team/oumaima.jpg", + "profile_image": "./images/oumaima.jpg", "status": "active" }, { "id": 9, "name": "Chaimaa BRITEL", "link": "https://x.com/ChaimaaBritel", - "profile_image": "/about/images/team/britel.jpg", + "profile_image": "./images/britel.jpg", "status": "active" }, { "id": 10, "name": "Abdelati EL ASRI", "link": "https://x.com/kaizendae", - "profile_image": "/about/images/team/kaizendae.jpg", + "profile_image": "./images/kaizendae.jpg", "status": "active" }, { "id": 11, "name": "Amine RACHYD", "link": "https://x.com/RachydAmine", - "profile_image": "/about/images/team/rachyd.jpg", + "profile_image": "./images/rachyd.jpg", "status": "active" }, { "id": 13, "name": "Soufyan El Foukahi", "link": "https://x.com/soufyanAI", - "profile_image": "/about/images/team/soufyan.jpg", + "profile_image": "./images/soufyan.jpg", "status": "past" }, { "id": 14, "name": "Amine Hakkou", "link": "https://x.com/amine_hakkou", - "profile_image": "/about/images/team/amine.jpg", + "profile_image": "./images/amine.jpg", "status": "past" }, { "id": 15, "name": "Aicha Aferiat", "link": "https://www.linkedin.com/in/aaferiat", - "profile_image": "/about/images/team/default.jpg", + "profile_image": "./images/default.jpg", "status": "past" }, { "id": 16, "name": "Amine Maarouf", "link": "https://x.com/a_maaarouf", - "profile_image": "/about/images/team/maarouf.jpg", + "profile_image": "./images/maarouf.jpg", "status": "past" }, { "id": 17, "name": "Oussama Hyad", "link": "https://www.linkedin.com/in/oussamahyad", - "profile_image": "/about/images/team/oussama.jpg", + "profile_image": "./images/oussama.jpg", "status": "past" }, { "id": 18, "name": "Mohammed Ez-zarghili", "link": "https://x.com/ezzarghili", - "profile_image": "/about/images/team/ez-zarghili.jpg", + "profile_image": "./images/ez-zarghili.jpg", "status": "past" }, { "id": 19, "name": "Afaf Ridaoui", "link": "https://x.com/__iamaf", - "profile_image": "/about/images/team/Afaf.jpg", + "profile_image": "./images/Afaf.jpg", "status": "active" }, { "id": 20, "name": "Hamza Makraz", "link": "https://x.com/hamza_makraz", - "profile_image": "/about/images/team/hamza.jpg", + "profile_image": "./images/hamza.jpg", "status": "active" }, { "id": 21, "name": "Mohamed Daoudi", "link": "https://x.com/MIduoad", - "profile_image": "/about/images/team/daoudi.jpg", + "profile_image": "./images/daoudi.jpg", "status": "active" }, { "id": 22, "name": "Mourad Mtouaa", "link": "https://x.com/mouradxmt", - "profile_image": "/about/images/team/mourad.jpg", + "profile_image": "./images/mourad.jpg", "status": "active" }, { "id": 24, "name": "Ismail El Azizi", "link": "https://www.linkedin.com/in/ismail-el-azizi", - "profile_image": "/about/images/team/ismail.jpg", + "profile_image": "./images/ismail.jpg", "status": "past" }, { "id": 25, "name": "Nouamane Tazi", "link": "https://www.linkedin.com/in/nouamanetazi", - "profile_image": "/about/images/team/nouamane.jpg", + "profile_image": "./images/nouamane.jpg", "status": "active" }, { "id": 26, "name": "Oumaima Khalil", "link": "https://www.linkedin.com/in/omaima-khalil-/", - "profile_image": "/about/images/team/omaima.jpg", + "profile_image": "./images/omaima.jpg", "status": "active" }, { "id": 29, "name": "Ismail Tlemcani", "link": "https://www.linkedin.com/in/ismailtlemcani/", - "profile_image": "/about/images/team/telmcani.jpg", + "profile_image": "./images/telmcani.jpg", "status": "past" }, { "id": 30, "name": "Hanane Ait Dabel", "link": "https://www.linkedin.com/in/hanane-ait-dabel-3b679b162/", - "profile_image": "/about/images/team/hanane.jpg", + "profile_image": "./images/hanane.jpg", "status": "active" }, { "id": 31, "name": "Achraf Hardizi", "link": "https://www.linkedin.com/in/achrafhardizi/", - "profile_image": "/about/images/team/hardizi.jpg", + "profile_image": "./images/hardizi.jpg", "status": "active" }, { "id": 32, "name": "You", "link": "https://tally.so/r/meqj6E", - "profile_image": "/about/images/team/wewantu.jpg", + "profile_image": "./images/wewantu.jpg", "status": "active" } ]