people page update

This commit is contained in:
Emre
2025-11-03 16:17:33 +03:00
parent d6f38c33da
commit 5fbe4e8b90
23 changed files with 181 additions and 57 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

View File

@@ -0,0 +1,20 @@
---
title: Emre Koc
weight: 3
description: Sustainability Engineer & Program Manager
taxonomies:
people: [emre_koc]
memberships: []
categories: []
extra:
imgPath: emre_koc.jpg
organizations: []
countries: []
cities: []
private: 0
socialLinks: {
LinkedIn: https://www.linkedin.com/in/remrekoc/,
}
---
Sustainability engineer and program manager focused on building regenerative infrastructure that serves local communities while meeting global standards.

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">
<rect width="400" height="400" fill="#E0E7FF"/>
<text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-family="Arial, sans-serif" font-size="36" fill="#312E81">
Emre Koc
</text>
</svg>

After

Width:  |  Height:  |  Size: 278 B

View File

@@ -0,0 +1,19 @@
import { CallToAction } from '@/components/CallToAction'
import { Faqs } from '@/components/Faqs'
import { Footer } from '@/components/Footer'
import { Header_darkbg } from '@/components/Header_darkbg'
import { People_Emre_Koc } from '@/components/people/People_Emre_Koc'
export default function EmreKocPage() {
return (
<>
<Header_darkbg />
<main>
<People_Emre_Koc />
<CallToAction />
<Faqs />
</main>
<Footer />
</>
)
}

View File

@@ -17,42 +17,63 @@ export function PeopleHero() {
<h2 className="text-4xl font-semibold tracking-tight text-pretty text-gray-900 sm:text-5xl">Our team</h2>
<p className="mt-6 text-lg/8 text-gray-600">
We're a dynamic group of individuals who are passionate about what we do and dedicated to delivering the
best results for our clients.
best results for our startups.
</p>
</div>
<ul
role="list"
className="mx-auto mt-20 grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:grid-cols-2 lg:mx-0 lg:max-w-none lg:grid-cols-4"
>
{people.map((person) => (
<li key={person.name}>
<img
alt=""
src={person.imageUrl}
className="aspect-1/1 w-full rounded-2xl object-cover outline-1 -outline-offset-1 outline-black/5"
/>
<Link href={`/people/${nameToSlug(person.name)}`}>
<h3 className="mt-6 text-lg/8 font-semibold tracking-tight text-gray-900 hover:text-indigo-600 cursor-pointer">{person.name}</h3>
</Link>
<p className="text-base/7 text-gray-600">{person.role}</p>
{person.linkedinUrl && person.linkedinUrl !== '#' && (
<ul role="list" className="mt-6 flex gap-x-6">
<li>
<a href={person.linkedinUrl} className="text-gray-400 hover:text-gray-500">
<span className="sr-only">LinkedIn</span>
<svg fill="currentColor" viewBox="0 0 20 20" aria-hidden="true" className="size-5">
<path
d="M16.338 16.338H13.67V12.16c0-.995-.017-2.277-1.387-2.277-1.39 0-1.601 1.086-1.601 2.207v4.248H8.014v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.778 3.203 4.092v4.711zM5.005 6.575a1.548 1.548 0 11-.003-3.096 1.548 1.548 0 01.003 3.096zm-1.337 9.763H6.34v-8.59H3.667v8.59zM17.668 1H2.328C1.595 1 1 1.581 1 2.298v15.403C1 18.418 1.595 19 2.328 19h15.34c.734 0 1.332-.582 1.332-1.299V2.298C19 1.581 18.402 1 17.668 1z"
clipRule="evenodd"
fillRule="evenodd"
/>
</svg>
</a>
</li>
</ul>
)}
</li>
))}
{people.map((person) => {
const hasLinkedIn = Boolean(person.linkedinUrl && person.linkedinUrl !== '#')
const hasTags = Boolean(person.tags?.length)
return (
<li key={person.name} className="flex flex-col">
<img
alt=""
src={person.imageUrl}
className="aspect-1/1 w-full rounded-2xl object-cover outline-1 -outline-offset-1 outline-black/5"
/>
<div className="mt-6 flex flex-col flex-grow">
<div className="flex flex-wrap items-center gap-2">
<Link href={`/people/${nameToSlug(person.name)}`}>
<h3 className="text-lg/8 font-semibold tracking-tight text-gray-900 hover:text-indigo-600 cursor-pointer">
{person.name}
</h3>
</Link>
{hasTags ? (
<div className="flex flex-wrap items-center gap-2">
{person.tags!.map((tag) => (
<span
key={tag}
className="inline-flex items-center rounded-full bg-indigo-50 px-3 py-1 text-xs font-medium text-indigo-600"
>
{tag}
</span>
))}
</div>
) : null}
</div>
<p className="text-base/7 text-gray-600">{person.role}</p>
{person.note ? <p className="mt-3 text-sm text-gray-500 italic">{person.note}</p> : null}
{hasLinkedIn && (
<div className="mt-auto pt-6 flex items-center gap-3">
<a href={person.linkedinUrl} className="text-gray-400 hover:text-gray-500" aria-label={`LinkedIn profile for ${person.name}`}>
<svg fill="currentColor" viewBox="0 0 20 20" aria-hidden="true" className="size-5">
<path
d="M16.338 16.338H13.67V12.16c0-.995-.017-2.277-1.387-2.277-1.39 0-1.601 1.086-1.601 2.207v4.248H8.014v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.778 3.203 4.092v4.711zM5.005 6.575a1.548 1.548 0 11-.003-3.096 1.548 1.548 0 01.003 3.096zm-1.337 9.763H6.34v-8.59H3.667v8.59zM17.668 1H2.328C1.595 1 1 1.581 1 2.298v15.403C1 18.418 1.595 19 2.328 19h15.34c.734 0 1.332-.582 1.332-1.299V2.298C19 1.581 18.402 1 17.668 1z"
clipRule="evenodd"
fillRule="evenodd"
/>
</svg>
</a>
</div>
)}
</div>
</li>
)
})}
</ul>
</div>
</div>

View File

@@ -12,7 +12,21 @@ export function PersonTemplate({ personData, biography }: PersonTemplateProps) {
<div className="absolute top-0 bottom-0 left-3/4 hidden w-screen bg-gray-50 lg:block" />
<div className="mx-auto max-w-prose text-base lg:grid lg:max-w-none lg:grid-cols-2 lg:gap-8">
<div>
<h2 className="text-lg font-semibold text-indigo-600">Team Member</h2>
<div className="flex items-center gap-2">
<h2 className="text-lg font-semibold text-indigo-600">Team Member</h2>
{personData.tags?.length ? (
<div className="flex flex-wrap gap-2">
{personData.tags.map((tag) => (
<span
key={tag}
className="inline-flex items-center rounded-full bg-indigo-50 px-3 py-1 text-xs font-medium text-indigo-600"
>
{tag}
</span>
))}
</div>
) : null}
</div>
<h3 className="mt-2 text-3xl/8 font-bold tracking-tight text-gray-900 sm:text-4xl">Meet {personData.name}</h3>
</div>
</div>
@@ -54,9 +68,10 @@ export function PersonTemplate({ personData, biography }: PersonTemplateProps) {
</div>
<div className="mt-8 lg:mt-0">
<div className="mx-auto text-base/7 text-gray-500">
<p className="text-lg/7 font-semibold text-gray-900 mb-4">{personData.role}</p>
<p className="text-lg/7 font-semibold text-gray-900">{personData.role}</p>
{personData.note ? <p className="mt-3 text-sm italic text-gray-500">{personData.note}</p> : null}
<div
className="prose prose-gray max-w-none"
className="prose prose-gray mt-4 max-w-none"
dangerouslySetInnerHTML={{ __html: biography }}
/>

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Adnan Fatayerji',
role: 'Co-Founder, CEO',
role: 'Telecom Strategic Relations',
imageUrl: '/images/people/adnan_fatayerji/adnan_fatayerji.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/adnansf/',

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Alexandre Hannelas',
role: 'Finance Manager',
role: 'Financial Director, OurWorld',
imageUrl: '/images/people/alexandre_hannelas/alexandre_hannelas.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/alexandre-hannelas-741681112/',
tags: ['In Residence'],
},
]

View File

@@ -0,0 +1,25 @@
import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Emre Koc',
role: 'Sustainability Engineer & Program Manager',
imageUrl: '/images/people/emre_koc/emre_koc.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/remrekoc/',
tags: ['In Residence'],
},
]
const biography = `
<p class="text-lg/7">
Emre combines a background in mechanical engineering and computer science with a focus on energy systems and urban sustainability. He is passionate about decentralization and empowering people to reclaim their rights and autonomy in the digital age.
</p>
<p class="mt-5 text-lg/7">
At OurWorld, Emre serves as a Program Manager coordinating initiatives in Zanzibar, including the Zanzibar Cyber City and Free Zone. As a Sustainability Engineer, he ensures that local operations and infrastructure developments meet the highest standards of environmental and social responsibility.
</p>
`
export function People_Emre_Koc() {
return <PersonTemplate personData={data[0]} biography={biography} />
}

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Florian Fournier',
role: 'Co-Founder',
role: 'Marketing & Business Development',
imageUrl: '/images/people/florian_fournier/florian_fournier.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/florianfournier/',
tags: ['In Residence'],
},
]

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Gregory Flipo',
role: 'Co-Founder, CEO of Sikana',
role: 'NGO Strategic Relations',
imageUrl: '/images/people/gregory_flipo/gregory_flipo.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/gregory-flipo-34a9947/',

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Hugo Mathecowitsch',
role: 'Advisor, Product',
role: 'Strategic Advisory Board, Fintech',
imageUrl: '/images/people/hugo_mathecowitsch/hugo_mathecowitsch.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/hugo-mathecowitsch-9447a3213/',

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Jan De Landtsheer',
role: 'Advisor, Tech',
role: 'System Architect',
imageUrl: '/images/people/jan_de_landtsheer/jan_de_landtsheer.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/jand2/',
tags: ['In Residence'],
},
]

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Malte Geierhos',
role: 'Team Member',
role: 'Tech Architect',
imageUrl: '/images/people/malte_geierhos/malte_geierhos.png',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/malte-geierhos/',

View File

@@ -7,6 +7,7 @@ export const data = [
imageUrl: '/images/people/marion_ravarino/marion_ravarino.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/marion-ravarino/',
tags: ['In Residence'],
},
]

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Michel Coucke',
role: 'Director',
role: 'Strategic Advisory Board, Human Resources',
imageUrl: '/images/people/michel_coucke/michel_coucke.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/michel-coucke-66112a/',

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Nousrath Bhugeloo',
role: 'Director & Executive Chairperson',
role: 'Director & Executive Chair',
imageUrl: '/images/people/nousrath_bhugeloo/nousrath_bhugeloo.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/nousrath-bhugeloo-78078520/',

View File

@@ -3,7 +3,7 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Owen Kemp',
role: 'Advisor, Business Development',
role: 'Strategic Advisory Board, Geo Expansion',
imageUrl: '/images/people/owen_kemp/owen_kemp.jpeg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/owen-kemp/',

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Sacha Obeegadoo',
role: 'Program Manager',
role: 'COO',
imageUrl: '/images/people/sacha_obeegadoo/sacha_obeegadoo.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/sachaobeegadoo/',
tags: ['In Residence'],
},
]

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Sam Taggart',
role: 'Communication & Community',
role: 'Community Builder',
imageUrl: '/images/people/sam_taggart/sam_taggart.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/samtaggart/',
tags: ['In Residence'],
},
]

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Sasha Astiadi',
role: 'Web Operations',
role: 'Web Architect',
imageUrl: '/images/people/sasha_astiadi/sasha_astiadi.png',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/sastiadi/',
tags: ['In Residence'],
},
]

View File

@@ -3,10 +3,11 @@ import { PersonTemplate } from '@/components/PersonTemplate'
export const data = [
{
name: 'Timur Gordon',
role: 'Software Developer',
role: 'Software Architect',
imageUrl: '/images/people/timur_gordon/timur_gordon.jpg',
xUrl: '#',
linkedinUrl: 'https://www.linkedin.com/in/timur-gordon/',
tags: ['In Residence'],
},
]

View File

@@ -7,6 +7,8 @@ export interface PersonData {
imageUrl: string
xUrl: string
linkedinUrl: string
tags?: string[]
note?: string
}
// Function to dynamically get all people data
@@ -18,6 +20,7 @@ export async function getAllPeopleData(): Promise<PersonData[]> {
() => import('@/components/people/People_Adnan_Fateryji'),
() => import('@/components/people/People_Alexandre_Hannelas'),
() => import('@/components/people/People_Chris_Camponovo'),
() => import('@/components/people/People_Emre_Koc'),
() => import('@/components/people/People_Florian_Fournier'),
() => import('@/components/people/People_Gregory_Flipo'),
() => import('@/components/people/People_Hugo_Mathecowitsch'),
@@ -54,6 +57,7 @@ export async function getAllPeopleData(): Promise<PersonData[]> {
import { data as adnan_fateryjiData } from '@/components/people/People_Adnan_Fateryji'
import { data as alexandre_hannelasData } from '@/components/people/People_Alexandre_Hannelas'
import { data as chris_camponovoData } from '@/components/people/People_Chris_Camponovo'
import { data as emre_kocData } from '@/components/people/People_Emre_Koc'
import { data as florian_fournierData } from '@/components/people/People_Florian_Fournier'
import { data as gregory_flipoData } from '@/components/people/People_Gregory_Flipo'
import { data as hugo_mathecowitschData } from '@/components/people/People_Hugo_Mathecowitsch'
@@ -75,15 +79,15 @@ export function getAllPeopleDataSync(): PersonData[] {
const allPeopleData: PersonData[] = []
try {
allPeopleData.push(...adnan_fateryjiData)
allPeopleData.push(...kristof_de_spiegeleerData)
} catch (error) {
console.error('Error loading adnan_fateryji data:', error)
console.error('Error loading kristof_de_spiegeleer data:', error)
}
try {
allPeopleData.push(...alexandre_hannelasData)
allPeopleData.push(...adnan_fateryjiData)
} catch (error) {
console.error('Error loading alexandre_hannelas data:', error)
console.error('Error loading adnan_fateryji data:', error)
}
try {
@@ -98,6 +102,12 @@ export function getAllPeopleDataSync(): PersonData[] {
console.error('Error loading florian_fournier data:', error)
}
try {
allPeopleData.push(...alexandre_hannelasData)
} catch (error) {
console.error('Error loading alexandre_hannelas data:', error)
}
try {
allPeopleData.push(...gregory_flipoData)
} catch (error) {
@@ -122,12 +132,6 @@ export function getAllPeopleDataSync(): PersonData[] {
console.error('Error loading karoline_zizka data:', error)
}
try {
allPeopleData.push(...kristof_de_spiegeleerData)
} catch (error) {
console.error('Error loading kristof_de_spiegeleer data:', error)
}
try {
allPeopleData.push(...malte_geierhosData)
} catch (error) {
@@ -182,6 +186,12 @@ export function getAllPeopleDataSync(): PersonData[] {
console.error('Error loading timur_gordon data:', error)
}
try {
allPeopleData.push(...emre_kocData)
} catch (error) {
console.error('Error loading emre_koc data:', error)
}
try {
allPeopleData.push(...vianney_sprietData)
} catch (error) {