diff --git a/bun.lock b/bun.lock index c964ce4..e55b968 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "pyconke-website", diff --git a/public/2025-report/IMG_0006.jpg b/public/2025-report/IMG_0006.jpg new file mode 100644 index 0000000..e2c78b7 Binary files /dev/null and b/public/2025-report/IMG_0006.jpg differ diff --git a/public/2025-report/IMG_0007.jpg b/public/2025-report/IMG_0007.jpg new file mode 100644 index 0000000..a512c9e Binary files /dev/null and b/public/2025-report/IMG_0007.jpg differ diff --git a/public/2025-report/IMG_0018-Enhanced-NR.jpg b/public/2025-report/IMG_0018-Enhanced-NR.jpg new file mode 100644 index 0000000..f0b8ae2 Binary files /dev/null and b/public/2025-report/IMG_0018-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_0021-Enhanced-NR.jpg b/public/2025-report/IMG_0021-Enhanced-NR.jpg new file mode 100644 index 0000000..1e49e3f Binary files /dev/null and b/public/2025-report/IMG_0021-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_0024.jpg b/public/2025-report/IMG_0024.jpg new file mode 100644 index 0000000..41ddf6e Binary files /dev/null and b/public/2025-report/IMG_0024.jpg differ diff --git a/public/2025-report/IMG_0027-Enhanced-NR.jpg b/public/2025-report/IMG_0027-Enhanced-NR.jpg new file mode 100644 index 0000000..19aa9f2 Binary files /dev/null and b/public/2025-report/IMG_0027-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_0033.jpg b/public/2025-report/IMG_0033.jpg new file mode 100644 index 0000000..48f76d0 Binary files /dev/null and b/public/2025-report/IMG_0033.jpg differ diff --git a/public/2025-report/IMG_0039.jpg b/public/2025-report/IMG_0039.jpg new file mode 100644 index 0000000..45937fa Binary files /dev/null and b/public/2025-report/IMG_0039.jpg differ diff --git a/public/2025-report/IMG_0044.jpg b/public/2025-report/IMG_0044.jpg new file mode 100644 index 0000000..0fcb306 Binary files /dev/null and b/public/2025-report/IMG_0044.jpg differ diff --git a/public/2025-report/IMG_0055.jpg b/public/2025-report/IMG_0055.jpg new file mode 100644 index 0000000..c7e97e7 Binary files /dev/null and b/public/2025-report/IMG_0055.jpg differ diff --git a/public/2025-report/IMG_0076.jpg b/public/2025-report/IMG_0076.jpg new file mode 100644 index 0000000..76e2049 Binary files /dev/null and b/public/2025-report/IMG_0076.jpg differ diff --git a/public/2025-report/IMG_0077.jpg b/public/2025-report/IMG_0077.jpg new file mode 100644 index 0000000..cba8585 Binary files /dev/null and b/public/2025-report/IMG_0077.jpg differ diff --git a/public/2025-report/IMG_0101.jpg b/public/2025-report/IMG_0101.jpg new file mode 100644 index 0000000..513e27b Binary files /dev/null and b/public/2025-report/IMG_0101.jpg differ diff --git a/public/2025-report/IMG_0126.jpg b/public/2025-report/IMG_0126.jpg new file mode 100644 index 0000000..99d63dd Binary files /dev/null and b/public/2025-report/IMG_0126.jpg differ diff --git a/public/2025-report/IMG_0139.jpg b/public/2025-report/IMG_0139.jpg new file mode 100644 index 0000000..794b0f2 Binary files /dev/null and b/public/2025-report/IMG_0139.jpg differ diff --git a/public/2025-report/IMG_0156.jpg b/public/2025-report/IMG_0156.jpg new file mode 100644 index 0000000..deca68d Binary files /dev/null and b/public/2025-report/IMG_0156.jpg differ diff --git a/public/2025-report/IMG_0167.jpg b/public/2025-report/IMG_0167.jpg new file mode 100644 index 0000000..8e27088 Binary files /dev/null and b/public/2025-report/IMG_0167.jpg differ diff --git a/public/2025-report/IMG_0189.jpg b/public/2025-report/IMG_0189.jpg new file mode 100644 index 0000000..c4180b5 Binary files /dev/null and b/public/2025-report/IMG_0189.jpg differ diff --git a/public/2025-report/IMG_0209.jpg b/public/2025-report/IMG_0209.jpg new file mode 100644 index 0000000..0ee9c8e Binary files /dev/null and b/public/2025-report/IMG_0209.jpg differ diff --git a/public/2025-report/IMG_0257.jpg b/public/2025-report/IMG_0257.jpg new file mode 100644 index 0000000..1d8859a Binary files /dev/null and b/public/2025-report/IMG_0257.jpg differ diff --git a/public/2025-report/IMG_0323.jpg b/public/2025-report/IMG_0323.jpg new file mode 100644 index 0000000..4889d59 Binary files /dev/null and b/public/2025-report/IMG_0323.jpg differ diff --git a/public/2025-report/IMG_0333.jpg b/public/2025-report/IMG_0333.jpg new file mode 100644 index 0000000..ec16a33 Binary files /dev/null and b/public/2025-report/IMG_0333.jpg differ diff --git a/public/2025-report/IMG_0337.jpg b/public/2025-report/IMG_0337.jpg new file mode 100644 index 0000000..3621d07 Binary files /dev/null and b/public/2025-report/IMG_0337.jpg differ diff --git a/public/2025-report/IMG_0350.jpg b/public/2025-report/IMG_0350.jpg new file mode 100644 index 0000000..c8136ee Binary files /dev/null and b/public/2025-report/IMG_0350.jpg differ diff --git a/public/2025-report/IMG_0361.jpg b/public/2025-report/IMG_0361.jpg new file mode 100644 index 0000000..ce885cb Binary files /dev/null and b/public/2025-report/IMG_0361.jpg differ diff --git a/public/2025-report/IMG_0387-Enhanced-NR.jpg b/public/2025-report/IMG_0387-Enhanced-NR.jpg new file mode 100644 index 0000000..accc084 Binary files /dev/null and b/public/2025-report/IMG_0387-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_0391-Enhanced-NR.jpg b/public/2025-report/IMG_0391-Enhanced-NR.jpg new file mode 100644 index 0000000..14f4cac Binary files /dev/null and b/public/2025-report/IMG_0391-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_0406.jpg b/public/2025-report/IMG_0406.jpg new file mode 100644 index 0000000..1f59535 Binary files /dev/null and b/public/2025-report/IMG_0406.jpg differ diff --git a/public/2025-report/IMG_0410.jpg b/public/2025-report/IMG_0410.jpg new file mode 100644 index 0000000..523aa4d Binary files /dev/null and b/public/2025-report/IMG_0410.jpg differ diff --git a/public/2025-report/IMG_0413.jpg b/public/2025-report/IMG_0413.jpg new file mode 100644 index 0000000..8ccca17 Binary files /dev/null and b/public/2025-report/IMG_0413.jpg differ diff --git a/public/2025-report/IMG_9792.jpg b/public/2025-report/IMG_9792.jpg new file mode 100644 index 0000000..c8e00db Binary files /dev/null and b/public/2025-report/IMG_9792.jpg differ diff --git a/public/2025-report/IMG_9891.jpg b/public/2025-report/IMG_9891.jpg new file mode 100644 index 0000000..baf2f35 Binary files /dev/null and b/public/2025-report/IMG_9891.jpg differ diff --git a/public/2025-report/IMG_9923-Enhanced-NR.jpg b/public/2025-report/IMG_9923-Enhanced-NR.jpg new file mode 100644 index 0000000..f81398f Binary files /dev/null and b/public/2025-report/IMG_9923-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_9924-Enhanced-NR.jpg b/public/2025-report/IMG_9924-Enhanced-NR.jpg new file mode 100644 index 0000000..76f3199 Binary files /dev/null and b/public/2025-report/IMG_9924-Enhanced-NR.jpg differ diff --git a/public/2025-report/IMG_9931.jpg b/public/2025-report/IMG_9931.jpg new file mode 100644 index 0000000..46c6731 Binary files /dev/null and b/public/2025-report/IMG_9931.jpg differ diff --git a/public/2025-report/IMG_9950.jpg b/public/2025-report/IMG_9950.jpg new file mode 100644 index 0000000..3d5574b Binary files /dev/null and b/public/2025-report/IMG_9950.jpg differ diff --git a/public/2025-report/IMG_9963.jpg b/public/2025-report/IMG_9963.jpg new file mode 100644 index 0000000..0a09367 Binary files /dev/null and b/public/2025-report/IMG_9963.jpg differ diff --git a/public/2025-report/IMG_9971.jpg b/public/2025-report/IMG_9971.jpg new file mode 100644 index 0000000..86e05ac Binary files /dev/null and b/public/2025-report/IMG_9971.jpg differ diff --git a/public/2025-report/IMG_9979-2.jpg b/public/2025-report/IMG_9979-2.jpg new file mode 100644 index 0000000..fa408ed Binary files /dev/null and b/public/2025-report/IMG_9979-2.jpg differ diff --git a/public/2025-report/IMG_9982.jpg b/public/2025-report/IMG_9982.jpg new file mode 100644 index 0000000..dd66931 Binary files /dev/null and b/public/2025-report/IMG_9982.jpg differ diff --git a/public/2025-report/IMG_9993.jpg b/public/2025-report/IMG_9993.jpg new file mode 100644 index 0000000..8c77e45 Binary files /dev/null and b/public/2025-report/IMG_9993.jpg differ diff --git a/public/2025-report/IMG_9998-2.jpg b/public/2025-report/IMG_9998-2.jpg new file mode 100644 index 0000000..2ca65b1 Binary files /dev/null and b/public/2025-report/IMG_9998-2.jpg differ diff --git a/public/gallery/IMG_0026.jpg b/public/gallery/IMG_0026.jpg new file mode 100644 index 0000000..aaac84c Binary files /dev/null and b/public/gallery/IMG_0026.jpg differ diff --git a/public/gallery/IMG_0057.jpg b/public/gallery/IMG_0057.jpg new file mode 100644 index 0000000..aff56c9 Binary files /dev/null and b/public/gallery/IMG_0057.jpg differ diff --git a/public/gallery/IMG_0076.jpg b/public/gallery/IMG_0076.jpg new file mode 100644 index 0000000..76e2049 Binary files /dev/null and b/public/gallery/IMG_0076.jpg differ diff --git a/public/gallery/IMG_0077.jpg b/public/gallery/IMG_0077.jpg new file mode 100644 index 0000000..cba8585 Binary files /dev/null and b/public/gallery/IMG_0077.jpg differ diff --git a/public/gallery/IMG_0101.jpg b/public/gallery/IMG_0101.jpg new file mode 100644 index 0000000..513e27b Binary files /dev/null and b/public/gallery/IMG_0101.jpg differ diff --git a/public/gallery/IMG_0120.jpg b/public/gallery/IMG_0120.jpg new file mode 100644 index 0000000..f71d6e2 Binary files /dev/null and b/public/gallery/IMG_0120.jpg differ diff --git a/public/gallery/IMG_0131.jpg b/public/gallery/IMG_0131.jpg new file mode 100644 index 0000000..1f14dd3 Binary files /dev/null and b/public/gallery/IMG_0131.jpg differ diff --git a/public/gallery/IMG_0236.jpg b/public/gallery/IMG_0236.jpg new file mode 100644 index 0000000..ba4f939 Binary files /dev/null and b/public/gallery/IMG_0236.jpg differ diff --git a/public/gallery/IMG_0342.jpg b/public/gallery/IMG_0342.jpg new file mode 100644 index 0000000..2daf189 Binary files /dev/null and b/public/gallery/IMG_0342.jpg differ diff --git a/public/gallery/IMG_0451.jpg b/public/gallery/IMG_0451.jpg new file mode 100644 index 0000000..006ac1a Binary files /dev/null and b/public/gallery/IMG_0451.jpg differ diff --git a/public/gallery/IMG_0473.jpg b/public/gallery/IMG_0473.jpg new file mode 100644 index 0000000..971c178 Binary files /dev/null and b/public/gallery/IMG_0473.jpg differ diff --git a/public/gallery/IMG_0481.jpg b/public/gallery/IMG_0481.jpg new file mode 100644 index 0000000..32325fa Binary files /dev/null and b/public/gallery/IMG_0481.jpg differ diff --git a/public/gallery/nav-bar.tsx b/public/gallery/nav-bar.tsx new file mode 100644 index 0000000..de1a07d --- /dev/null +++ b/public/gallery/nav-bar.tsx @@ -0,0 +1,372 @@ +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { Button, buttonVariants } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, +} from "@/components/ui/navigation-menu"; +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@/components/ui/sheet"; +import { cn } from "@/lib/utils"; +import { + Book, + CalendarClock, + Menu, + PhoneCall, + ShieldCheck, + Target, + Trees, + Users, + Zap, +} from "lucide-react"; +import Link from "next/link"; + +const subMenuItemsOne = [ + { + title: "Overview", + url: "/overview", + description: "The overview of the conference", + icon: , + }, + { + title: "Schedule", + url: "/schedule", + description: "African time is not allowed", + icon: , + }, + { + title: "Speakers", + url: "/speakers", + description: "List of our fantastic speakers", + icon: , + }, + { + title: "Proposal Guidelines", + url: "/proposal", + description: "How to submit a proposal to the conference", + icon: , + }, +]; + +const subMenuItemsTwo = [ + { + title: "What is PyNBO", + url: "/what-is-pynbo", + description: + "PyNBO is a non-profit organization that aims to promote the use of Python in Kenya", + icon: , + }, + { + title: "Code of Conduct", + url: "/code-of-conduct", + description: + "We expect all community members to follow our code of conduct when interacting with each other", + icon: , + }, + { + title: "Python Software Foundation", + url: "/psf", + description: + "PSF is a non-profit organization that promotes, protects, and advances the Python programming language", + icon: , + }, + { + title: "Support", + url: "/support", + description: "Get in touch with us if you need help", + icon: , + }, +]; + +export default function Navbar1() { + return ( +
+
+ +
+
+
+ + python-logo + + + PyConKE + +
+ + + + + + + +
+ + python-logo + + + PyConKE + +
+
+
+
+ + Home + + + + + About + + + {subMenuItemsOne.map((item) => ( + + {item.icon} +
+
+ {item.title} +
+
+
+ ))} +
+
+ + + Program + + + {subMenuItemsTwo.map((item, idx) => ( + + {item.icon} +
+
+ {item.title} +
+
+
+ ))} +
+
+
+ + Sponsors + +
+
+ +
+ + Past Events + + + 2025 + + + 2022 + + 2018 + 2017 + + +
+
+
+
+
+
+
+
+ ); +} diff --git a/src/app/(report)/2025/page.tsx b/src/app/(report)/2025/page.tsx new file mode 100644 index 0000000..c09e463 --- /dev/null +++ b/src/app/(report)/2025/page.tsx @@ -0,0 +1,387 @@ +import PyConKenyaReport from "@/components/report"; + +const scheduleData = [ + { + date: "September 26, 2025", + sessions: [ + { + time: "08:00am - 09:15am", + title: "Arrival", + type: "registration", + speaker: "", + duration: "1hr 15 min", + }, + { + time: "09:15am - 09:45am", + title: "Warm Up", + type: "opening", + speaker: "", + duration: "30 min", + }, + { + time: "09:45am - 10:15am", + title: "Keynote", + type: "keynote", + speaker: "Dr. Fred Mutisya: Medical Doctor", + duration: "30 min", + }, + { + time: "09:45am - 10:30am", + title: "Breakout", + type: "break", + speaker: "", + duration: "30 min", + }, + { + time: "10:30am - 11:30am", + title: "Asking questions to your database with LLMs", + type: "talk", + speaker: "Nahuel Defossé", + duration: "60 min", + }, + { + time: "11:30am - 11:40am", + title: "Breakout", + type: "break", + speaker: "", + duration: "30 min", + }, + { + time: "11:40am - 12:40pm", + title: + "Building an Agentic AI Application with Prompty and Azure AI Foundry", + type: "talk", + speaker: "Bethany Jepchumba", + duration: "60 min", + }, + { + time: "11:40am - 12:40pm", + title: "Getting Started with Polars and Marimo", + type: "workshop", + speaker: "Alvin Ithaka", + duration: "60 min", + }, + { + time: "12:40pm - 12:50pm", + title: "Breakout", + type: "break", + speaker: "", + duration: "10 min", + }, + { + time: "12:50pm - 1:35pm", + title: + "Automating the Web Workflows: How LLMs are Redefining Data Extraction and Processing", + type: "talk", + speaker: "Saurav Jain", + duration: "45 min", + }, + { + time: "12:50pm - 1:35pm", + title: + "Confidential Python: Running AI Workloads in Secure Enclaves with Cocos AI", + type: "workshop", + speaker: "Sammy Oina", + duration: "45 min", + }, + + { + time: "1:35pm - 2:50pm", + title: "Lunch", + type: "break", + speaker: "", + duration: "60 min", + }, + { + time: "2:50pm - 3:35pm", + title: "From Waveform to Faceform: Voice2Face with GANs in Python", + type: "talk", + speaker: "John Gunia", + duration: "45 min", + }, + { + time: "2:50pm - 3:35pm", + title: + "Mock less, Test More: Better Integration testing with test containers", + type: "talk", + speaker: "Paul Muyero", + duration: "45 min", + }, + { + time: "3:35pm - 3:50pm", + title: "Break", + type: "break", + speaker: "", + duration: "15 min", + }, + + { + time: "3:50pm - 4:35pm", + title: "Fortifying Django: Avoiding DevOps Secrets Pitfalls", + type: "workshop", + speaker: "Samuel Macharia", + duration: "45 min", + }, + { + time: "3:50pm - 4:35pm", + title: "Beyond the Hype: Real-World AI with Python", + type: "talk", + speaker: "Lynn Kathomi", + duration: "45 min", + }, + + { + time: "4:35pm ", + title: "Breakout", + type: "break", + speaker: "", + duration: "15 min", + }, + + // { + // time: "05:00pm - 05:30pm", + // title: "Closing Remarks", + // type: "closing", + // speaker: "PyCon Kenya Organizers", + // duration: "30 min", + // }, + ], + }, + { + date: "September 27, 2025", + sessions: [ + { + time: "08:00am - 09:00am", + title: "Arrival", + type: "registration", + speaker: "", + duration: "1hr 15 min", + }, + { + time: "09:00am - 09:30am", + title: "Warm Up", + type: "opening", + speaker: "", + duration: "30 min", + }, + { + time: "09:30am - 10:30am", + title: "Lightening Talks", + type: "opening", + speaker: "", + duration: "60 min", + }, + { + time: "10:30pm - 10:45", + title: "Breakout", + type: "break", + speaker: "", + duration: "15 min", + }, + { + time: "10:45am - 11:45am", + title: + "Building Intelligent, Async Backends with Django, Celery, and AI APIs", + type: "talk", + speaker: "Elizabeth Adhiambo", + duration: "60 min", + }, + { + time: "10:45am - 11:45am", + title: + "Implementing an MCP Server for DBMS in Python — YDB’s Experience", + type: "talk", + speaker: "Ivan Blinkov", + duration: "60 min", + }, + + { + time: "11:45am - 11:55am", + title: "Breakout", + type: "break", + speaker: "", + duration: "10 min", + }, + { + time: "11:55am - 12:55pm", + title: + "Scaling Earth Observation with TerraTorch: Geospatial Foundation Models", + type: "workshop", + speaker: "Catherine Wanjiru, Reginald Eugene Bryant, Beldine Moturi", + duration: "60 min", + }, + { + time: "11:55am - 12:55pm", + title: "Scalable Python : Celery, Redis and RabbitMQ", + type: "workshop", + speaker: "Mugendi Gitonga", + duration: "60 min", + }, + { + time: "12:55pm - 1:05pm", + title: "Breakout", + type: "break", + speaker: "", + duration: "10 min", + }, + { + time: "1:05pm - 1:50pm", + title: + "Building Intelligent Applications With Python, Genkit and the Model Context Protocol", + type: "workshop", + speaker: "Brayan Kai Mwanyumba", + duration: "45 min", + }, + { + time: "1:05pm - 1:50pm", + title: + "Practical Developer Experience Strategies for Python Developers", + type: "talk", + speaker: "Phylis Atieno", + duration: "45 min", + }, + { + time: "1:50pm - 3:05pm", + title: "Lunch", + type: "break", + speaker: "", + duration: "1h 15min", + }, + { + time: "3:05pm - 3:50pm", + title: + "Open source Non-Intrusive Load Monitoring with python and micropython", + type: "workshop", + speaker: "Felix Gateru, Michael Kimani", + duration: "45 min", + }, + { + time: "3:05pm - 3:50pm", + title: "Pydantic to the core: Data Validation for Agentic AI Systems", + type: "workshop", + speaker: "Daniel Akhabue", + duration: "45 min", + }, + { + time: "3:50pm - 4:00pm", + title: "Break", + type: "break", + speaker: "", + duration: "10 min", + }, + { + time: "4:00pm - 5:00pm", + title: "PYLADIES", + type: "talk", + speaker: "", + duration: "60 min", + }, + { + time: "5:00pm - 5:30pm", + title: "Closing Remarks", + type: "closing", + speaker: "PyCon Kenya Organizers", + duration: "30 min", + }, + ], + }, +]; + +const statistics = { + totalAttendees: 627, + speakers: 80, + workshops: 17, + talks: 63, + countries: 7, + companies: 43, + students: 339, + professionals: 288, + distributionByCountry: [ + { country: "Kenya", attendees: 578, percentage: 92.19 }, + { country: "Uganda", attendees: 23, percentage: 3.67 }, + { country: "Tanzania", attendees: 13, percentage: 2.07 }, + { country: "Nigeria", attendees: 9, percentage: 1.44 }, + { country: "Others", attendees: 4, percentage: 0.64 }, + ], + statisfactionRate: 94, + recommendationRate: 84, + retentionRate: 89, +}; + +const topicDistribution = [ + { topic: "Data Science & ML", percentage: 37.5, count: 30 }, + { topic: "Others", percentage: 25.0, count: 20 }, + { topic: "Web Development", percentage: 15.0, count: 12 }, + { topic: "DevOps & Cloud", percentage: 11.25, count: 9 }, + { topic: "Community & Career", percentage: 7.5, count: 6 }, + { topic: "IoT & Hardware", percentage: 3.75, count: 3 }, +]; + +const images = [ + "/2025-report/IMG_0027-Enhanced-NR.jpg", + "/2025-report/IMG_0044.jpg", + "/2025-report/IMG_0055.jpg", + "/2025-report/IMG_0333.jpg", + "/2025-report/IMG_0337.jpg", + "/2025-report/IMG_0350.jpg", + "/2025-report/IMG_0387-Enhanced-NR.jpg", + "/2025-report/IMG_9950.jpg", + "/2025-report/IMG_0406.jpg", + "/2025-report/IMG_9979-2.jpg", + "/2025-report/IMG_9982.jpg", + "/2025-report/IMG_0007.jpg", + "/2025-report/IMG_0021-Enhanced-NR.jpg", + "/2025-report/IMG_0209.jpg", + "/2025-report/IMG_0257.jpg", + "/2025-report/IMG_0410.jpg", + "/2025-report/IMG_0361.jpg", + "/2025-report/IMG_9792.jpg", + "/2025-report/IMG_0006.jpg", + "/2025-report/IMG_0018-Enhanced-NR.jpg", + "/2025-report/IMG_0076.jpg", + "/2025-report/IMG_0101.jpg", + "/2025-report/IMG_0126.jpg", + "/2025-report/IMG_0139.jpg", + "/2025-report/IMG_0156.jpg", + "/2025-report/IMG_0391-Enhanced-NR.jpg", + "/2025-report/IMG_0167.jpg", + "/2025-report/IMG_0189.jpg", + "/2025-report/IMG_9931.jpg", + "/2025-report/IMG_9891.jpg", + "/2025-report/IMG_9924-Enhanced-NR.jpg", + "/2025-report/IMG_9963.jpg", + "/2025-report/IMG_9993.jpg", + "/2025-report/IMG_9923-Enhanced-NR.jpg", + "/2025-report/IMG_0039.jpg", + "/2025-report/IMG_0077.jpg", + "/2025-report/IMG_0024.jpg", + "/2025-report/IMG_9971.jpg", + "/2025-report/IMG_0413.jpg", + "/2025-report/IMG_0323.jpg", + "/2025-report/IMG_0033.jpg", + "/2025-report/IMG_9998-2.jpg", +]; + +export default function Page() { + return ( + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index 5c59d13..63033d7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -4,6 +4,12 @@ import HeroSection from "@/components/hero-section"; import Sponsors from "@/components/sponsors"; const images = [ + "/gallery/IMG_0026.jpg", + "/gallery/IMG_0057.jpg", + "/gallery/IMG_0077.jpg", + "/gallery/IMG_0076.jpg", + "/gallery/IMG_0101.jpg", + "/gallery/IMG_0120.jpg", "/gallery/DSC_0004-4.jpg", "/gallery/DSC_0033-3.jpg", "/gallery/DSC_0086-5.jpg", @@ -11,6 +17,12 @@ const images = [ "/gallery/DSC_0142-3.jpg", "/gallery/DSC_0221-3.jpg", "/gallery/DSC02580.jpg", + "/gallery/IMG_0131.jpg", + "/gallery/IMG_0236.jpg", + "/gallery/IMG_0342.jpg", + "/gallery/IMG_0451.jpg", + "/gallery/IMG_0473.jpg", + "/gallery/IMG_0481.jpg", "/gallery/DSC_0339-3.jpg", "/gallery/DSC_0354-3.jpg", "/gallery/DSC_0427-3.jpg", diff --git a/src/components/nav-bar.tsx b/src/components/nav-bar.tsx index 1810acf..f7bcd51 100644 --- a/src/components/nav-bar.tsx +++ b/src/components/nav-bar.tsx @@ -212,6 +212,9 @@ export default function Navbar1() { Past Events + + 2025 + 2022 @@ -348,7 +351,10 @@ export default function Navbar1() { Past Events - 2022 + 2025 + + + 2022 2018 2017 diff --git a/src/components/report.tsx b/src/components/report.tsx index 0b84493..fb0e2a7 100644 --- a/src/components/report.tsx +++ b/src/components/report.tsx @@ -78,6 +78,9 @@ type Props = { statistics: Statistics; topicDistribution: TopicDistribution[]; images: string[]; + achievements?: string[]; + atmosphereTitle?: string; + atmosphereText?: string; }; export default function PyConKenyaReport({ @@ -88,6 +91,9 @@ export default function PyConKenyaReport({ statistics, topicDistribution, images, + achievements, + atmosphereTitle, + atmosphereText, }: Props) { const getTypeIcon = (type: string) => { switch (type) { @@ -181,35 +187,28 @@ export default function PyConKenyaReport({ 🎯 Key Achievements
    -
  • - • Largest PyCon Kenya attendance to date with{" "} - {statistics.totalAttendees}+ participants -
  • -
  • - • {statistics.speakers} expert speakers from{" "} - {statistics.countries} different countries -
  • -
  • - • {statistics.workshops} hands-on workshops covering - cutting-edge technologies -
  • -
  • - • {statistics.companies}+ companies represented across - various industries -
  • + {(achievements && achievements.length > 0 + ? achievements + : [ + `• Largest PyCon Kenya attendance to date with ${statistics.totalAttendees}+ participants`, + `• ${statistics.speakers} expert speakers from ${statistics.countries} different countries`, + `• ${statistics.workshops} hands-on workshops covering cutting-edge technologies`, + `• ${statistics.companies}+ companies represented across various industries`, + ] + ).map((item) => ( +
  • {item}
  • + ))}

- 🌟 Event Atmosphere + 🌟{" "} + {atmosphereTitle ? atmosphereTitle : "Event Atmosphere"}

- The conference fostered an incredibly collaborative and - inclusive environment. Attendees praised the high-quality - content, networking opportunities, and the strong sense of - community. The event successfully bridged the gap between - academia and industry, with meaningful connections formed - across all experience levels. + {atmosphereText + ? atmosphereText + : "The conference fostered an incredibly collaborative and inclusive environment. Attendees praised the high-quality content, networking opportunities, and the strong sense of community. The event successfully bridged the gap between academia and industry, with meaningful connections formed across all experience levels."}

@@ -487,7 +486,7 @@ export default function PyConKenyaReport({ Event Impact & Success Metrics - Measuring the success and impact of PyCon Kenya 2024 + Measuring the success and impact of PyCon Kenya {year}