mobile + desktop view devcon page

This commit is contained in:
Kalidou Diagne
2024-11-09 17:07:05 +01:00
parent cb4a197af2
commit 3efbf4c03f
9 changed files with 483 additions and 109 deletions

View File

@@ -1,6 +1,7 @@
import React from "react"
import { Metadata } from "next"
import { Devcon7Booths } from "./sections/Devcon7Booths"
import { Devcon7Header } from "./sections/Devcon7Header"
import { Devcon7Section } from "./sections/Devcon7Section"
@@ -20,9 +21,14 @@ export const metadata: Metadata = {
export default async function DevconPage() {
return (
<div className="flex flex-col">
<Devcon7Header />
<Devcon7Section />
</div>
<>
<div className="flex flex-col lg:pb-[120px]">
<Devcon7Header />
<div className="flex flex-col gap-10 lg:gap-14 pt-8 lg:pt-[60px]">
<Devcon7Booths />
<Devcon7Section />
</div>
</div>
</>
)
}

View File

@@ -0,0 +1,63 @@
import Image from "next/image"
import { booths } from "@/data/events/devcon-7"
import { AppContent } from "@/components/ui/app-content"
import { Icons } from "@/components/icons"
export const Devcon7Booths = () => {
return (
<AppContent>
<div className="flex flex-col gap-10 lg:gap-14">
<h2 className="lg:max-w-[700px] mx-auto font-bold text-black text-lg lg:text-[32px] leading-[110%] font-display text-center px-6">
{`We're excited to connect and collaborate on building meaningful tools
with cryptography.`}
</h2>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-14">
{booths?.map((booth, index) => {
return (
<div
key={index}
className="lg:grid lg:grid-cols-[1.5fr_1fr] flex flex-col rounded-lg overflow-hidden border border-[rgba(8, 27, 26, 0.15)]"
>
<div className="min-h-[160px] bg-slate-50 relative order-1 lg:order-2 bg-[lightgray 50% / cover no-repeat]">
<Image
src={booth.image}
alt={`booth image ${index + 1}`}
fill
className="object-cover"
priority
/>
</div>
<div className="flex flex-col gap-3 bg-anakiwa-50 p-4 lg:p-7 order-2 lg:order-1">
<span className="text-anakiwa-500 text-xs font-sans leading-5 tracking-[2.5px] uppercase font-bold">
BOOTH
</span>
<span className="text-[22px] leading-[24px] text-tuatara-950 font-display font-bold">
{booth?.title}
</span>
<span className="text-xs lg:text-base lg:leading-6 text-tuatara-950 font-sans font-normal">
{booth?.description}
</span>
<div className="flex flex-col">
<div className="flex items-center gap-[6px]">
<Icons.time className="text-tuatara-500" />
<span className="font-sans text-tuatara-500 text-xs lg:text-sm leading-5 font-normal">
{booth?.date}
</span>
</div>
<div className="flex gap-[6px] items-center">
<Icons.eventLocation className="text-tuatara-500" />
<span className="font-sans text-tuatara-500 text-xs lg:text-sm leading-5 font-normal">
{booth?.location}
</span>
</div>
</div>
</div>
</div>
)
})}
</div>
</div>
</AppContent>
)
}

View File

@@ -1,59 +1,132 @@
import Image from "next/image"
"use client"
import { useState } from "react"
import Link from "next/link"
import events from "@/data/events/devcon-7"
import { events } from "@/data/events/devcon-7"
import { cva } from "class-variance-authority"
import { cn } from "@/lib/utils"
import { AppContent } from "@/components/ui/app-content"
import { Icons } from "@/components/icons"
const tableSection = cva("lg:grid lg:grid-cols-[200px_1fr_80px_20px] lg:gap-8")
const tableSectionTitle = cva(
"text-anakiwa-500 text-xs font-sans leading-5 tracking-[2.5px] uppercase font-bold pb-3"
"text-anakiwa-500 text-base lg:text-xs font-sans leading-5 tracking-[2.5px] uppercase font-bold lg:pb-3"
)
const EventCard = ({ event = {}, speakers = [], location = "" }: any) => {
const [isOpen, setIsOpen] = useState(false)
return (
<div
className={cn(
"flex flex-col gap-3",
tableSection(),
"py-4 px-6 lg:p-0 lg:pt-[30px] lg:pb-5 border-b border-b-tuatara-200"
)}
>
<div className="flex flex-col gap-1 order-3 lg:order-1">
<span className="text-sm text-tuatara-950 font-bold font-sans leading-5">
{event?.date}
</span>
<div className="grid grid-cols-[1fr_16px] lg:grid-cols-1">
<div className="flex flex-col">
<div className="flex items-center gap-[6px]">
<Icons.time className="text-tuatara-500" />
<span className="font-sans text-tuatara-500 text-xs lg:text-sm leading-5 font-normal">
{event?.time}
</span>
</div>
<div className="flex gap-[6px] items-center">
<Icons.eventLocation className="text-tuatara-500" />
<span className="font-sans text-tuatara-500 text-xs lg:text-sm leading-5 font-normal">
{location}
</span>
</div>
</div>
</div>
</div>
<div className="flex flex-col gap-[10px] lg:order-2 order-2">
<div className="grid grid-cols-[1fr_32px] items-start justify-between">
<Link
href={event?.url ?? "#"}
target="_blank"
className="text-[22px] leading-[24px] text-tuatara-950 underline font-display hover:text-anakiwa-500 font-bold duration-200"
>
{event?.title}
</Link>
<button
onClick={() => {
setIsOpen(!isOpen)
}}
>
<Icons.plus
className={cn(
"size-5",
isOpen ? "rotate-45" : "rotate-0",
"transition-transform duration-200"
)}
/>
</button>
</div>
<div
className={cn(
"overflow-hidden transition-all duration-300",
isOpen ? "max-h-[200px] opacity-100" : "max-h-0 opacity-0"
)}
>
<span className="text-base leading-6 text-tuatara-950 font-sans font-normal lg:block">
{event?.description}
</span>
</div>
</div>
<div className="flex flex-wrap lg:flex-col order-1 gap-2 lg:gap-1 lg:order-3">
{speakers?.map((speaker: any, index: number) => {
return (
<Link
key={index}
className="text-sm text-anakiwa-500 underline break-all"
href={speaker.url ?? "#"}
>
{speaker.label}
</Link>
)
})}
</div>
<div className="order-4 lg:flex hidden">
<Icons.line />
</div>
</div>
)
}
export const Devcon7Section = () => {
return (
<div className="relative pt-8 lg:pt-[60px] lg:pb-[120px] lg:px-[60px]">
<div className="flex flex-col gap-10 relative lg:px-[60px]">
<div className="flex flex-col lg:container">
<div
className={cn(tableSection(), "lg:border-b lg:border-anakiwa-200")}
>
<div className={tableSectionTitle()}>Details</div>
<div className={tableSectionTitle()}>Talks</div>
<div className={tableSectionTitle()}>Speakers</div>
<div></div>
<div className={cn(tableSectionTitle(), "lg:flex hidden")}>
Details
</div>
<div className={cn(tableSectionTitle(), "lg:text-left text-center")}>
Talks
</div>
<div className={cn(tableSectionTitle(), "lg:flex hidden")}>
Speakers
</div>
<div className="lg:flex hidden"></div>
</div>
<div className="flex flex-col">
{events?.map((event, index) => {
{events?.map(({ event, speakers, location }, index) => {
return (
<div
<EventCard
key={index}
className={cn(
"flex flex-col gap-3",
tableSection(),
"py-4 px-6 lg:p-0 lg:pt-[30px] lg:pb-5 border-b border-b-tuatara-200"
)}
>
<div className="flex flex-col order-2 lg:order-1">
<span className="text-sm text-tuatara-950 font-bold leading-5">
{event?.date}
</span>
<span>{event?.time}</span>
<span>{event?.location}</span>
</div>
<div className="flex flex-col gap-[10px] lg:order-2 order-1">
<Link
href="#"
className="text-[22px] leading-[24px] text-tuatara-950 underline font-display hover:text-anakiwa-500 font-bold duration-200"
>
{event?.title}
</Link>
<span className="hidden lg:block lg:text-base lg:leading-6 text-tuatara-950 font-sans font-normal">
{event?.description}
</span>
</div>
<div></div>
<div></div>
</div>
event={event}
speakers={speakers}
location={location}
/>
)
})}
</div>

View File

@@ -12,7 +12,52 @@ export type Icon = LucideIcon
export const Icons = {
sun: SunMedium,
time: (props: LucideProps) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="15"
viewBox="0 0 16 15"
fill="none"
{...props}
>
<path
d="M2.51758 7.23497C2.51758 6.21497 2.77258 5.26997 3.27758 4.40497C3.78258 3.53997 4.46758 2.85497 5.33258 2.34997C6.19758 1.84497 7.13758 1.59497 8.15258 1.59497C8.91258 1.59497 9.64258 1.74497 10.3376 2.03997C11.0326 2.33497 11.6276 2.73997 12.1326 3.23997C12.6376 3.73997 13.0376 4.33997 13.3326 5.03997C13.6276 5.73997 13.7776 6.46497 13.7776 7.23497C13.7776 7.99497 13.6276 8.72497 13.3326 9.41997C13.0376 10.115 12.6326 10.715 12.1326 11.215C11.6326 11.715 11.0326 12.115 10.3376 12.41C9.64258 12.705 8.91758 12.855 8.15258 12.855C7.38758 12.855 6.65258 12.705 5.95758 12.41C5.26258 12.115 4.66258 11.71 4.15758 11.21C3.65258 10.71 3.25758 10.11 2.95758 9.41997C2.65758 8.72997 2.51758 7.99997 2.51758 7.23497ZM3.75758 7.23497C3.75758 8.41997 4.18758 9.44997 5.05258 10.325C5.91758 11.19 6.94758 11.62 8.15258 11.62C8.94258 11.62 9.67758 11.425 10.3476 11.03C11.0176 10.635 11.5576 10.105 11.9526 9.42997C12.3476 8.75497 12.5476 8.02497 12.5476 7.23497C12.5476 6.44497 12.3476 5.70997 11.9526 5.03497C11.5576 4.35997 11.0226 3.82497 10.3476 3.42997C9.67258 3.03497 8.94258 2.83997 8.15258 2.83997C7.36258 2.83997 6.62758 3.03497 5.95758 3.42997C5.28758 3.82497 4.74758 4.35997 4.34758 5.03497C3.94758 5.70997 3.75758 6.44497 3.75758 7.23497ZM7.71758 7.23497V3.90497C7.71758 3.78997 7.75758 3.68997 7.83758 3.60997C7.91758 3.52997 8.01758 3.48997 8.13258 3.48997C8.24758 3.48997 8.34758 3.52997 8.42758 3.60997C8.50758 3.68997 8.54758 3.78997 8.54758 3.90497V6.97997L10.3426 8.02497C10.4426 8.08497 10.5026 8.16997 10.5326 8.27997C10.5626 8.38997 10.5476 8.49497 10.4876 8.58997C10.4076 8.72997 10.2876 8.79997 10.1276 8.79997C10.0426 8.79997 9.97258 8.77997 9.91758 8.73997L8.00758 7.62497C7.92258 7.59997 7.85258 7.54997 7.79758 7.47997C7.74258 7.40997 7.71758 7.32997 7.71758 7.23497Z"
fill="currentColor"
/>
</svg>
),
eventLocation: (props: LucideProps) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="15"
viewBox="0 0 16 15"
fill="none"
{...props}
>
<path
d="M8.14844 13.0625L11.2422 9.96876C11.854 9.35689 12.2706 8.57734 12.4394 7.72868C12.6082 6.88003 12.5215 6.00039 12.1904 5.20098C11.8592 4.40158 11.2985 3.71833 10.579 3.23762C9.85956 2.75691 9.01371 2.50033 8.14844 2.50033C7.28317 2.50033 6.43732 2.75691 5.71787 3.23762C4.99841 3.71833 4.43766 4.40158 4.10651 5.20098C3.77536 6.00039 3.6887 6.88003 3.85747 7.72868C4.02625 8.57734 4.44288 9.35689 5.05469 9.96876L8.14844 13.0625ZM8.14844 14.83L4.17094 10.8525C3.38428 10.0658 2.84855 9.06356 2.63152 7.97242C2.41448 6.88128 2.52588 5.75028 2.95162 4.72245C3.37737 3.69462 4.09834 2.81612 5.02336 2.19804C5.94839 1.57996 7.03592 1.25006 8.14844 1.25006C9.26096 1.25006 10.3485 1.57996 11.2735 2.19804C12.1985 2.81612 12.9195 3.69462 13.3453 4.72245C13.771 5.75028 13.8824 6.88128 13.6654 7.97242C13.4483 9.06356 12.9126 10.0658 12.1259 10.8525L8.14844 14.83ZM8.14844 8.12501C8.47996 8.12501 8.7979 7.99332 9.03232 7.7589C9.26674 7.52448 9.39844 7.20653 9.39844 6.87501C9.39844 6.54349 9.26674 6.22555 9.03232 5.99113C8.7979 5.75671 8.47996 5.62501 8.14844 5.62501C7.81692 5.62501 7.49898 5.75671 7.26456 5.99113C7.03014 6.22555 6.89844 6.54349 6.89844 6.87501C6.89844 7.20653 7.03014 7.52448 7.26456 7.7589C7.49898 7.99332 7.81692 8.12501 8.14844 8.12501ZM8.14844 9.37501C7.4854 9.37501 6.84951 9.11162 6.38067 8.64278C5.91183 8.17394 5.64844 7.53805 5.64844 6.87501C5.64844 6.21197 5.91183 5.57609 6.38067 5.10724C6.84951 4.6384 7.4854 4.37501 8.14844 4.37501C8.81148 4.37501 9.44737 4.6384 9.91621 5.10724C10.385 5.57609 10.6484 6.21197 10.6484 6.87501C10.6484 7.53805 10.385 8.17394 9.91621 8.64278C9.44737 9.11162 8.81148 9.37501 8.14844 9.37501Z"
fill="currentColor"
/>
</svg>
),
moon: Moon,
line: (props: LucideProps) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="22"
height="21"
viewBox="0 0 22 21"
fill="none"
{...props}
>
<path
d="M17.2734 11.3733H5.02344V9.62329H17.2734V11.3733Z"
fill="currentColor"
/>
</svg>
),
twitter: (props: LucideProps) => (
<svg
xmlns="http://www.w3.org/2000/svg"

View File

@@ -1,78 +1,240 @@
const events = [
export const events = [
{
date: "November 10, 2024",
time: "4:30 PM - 5:00 PM",
location: "Datapalooza",
speaker: "Althea",
title: "Handle with Care",
description:
"Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.",
},
{
date: "November 11, 2024",
time: "TBA",
location: "Ethereum Cypherpunk Congress",
speaker: "@Sam Richards",
title: "What's next for PSE",
description:
"2024 has brought a lot of changes to the Privacy + Scaling Explorations team. Hear from our new team learn about the past, present and future of PSE.",
speakers: [{ url: "#", label: "Althea" }],
event: {
title: "Datapalooza",
description:
"Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.",
url: "https://lu.ma/qwvo9tgo",
date: "Sunday, Nov 10",
time: "4:30 PM - 5:00 PM",
},
},
{
date: "November 11, 2024",
time: "9:00 AM - 5:00 PM",
location: "Devcon floor 1, booths S107 and S108",
speaker: "PSE",
title: "General PSE info, team office hours",
description:
"Come meet the PSE team! We'll be around all day, every day during Devcon.",
location: "Ethereum Cypherpunk Congress",
speakers: [{ url: "https://x.com/samonchain", label: "@samonchain" }],
event: {
title: "What's next for PSE",
description:
"2024 has brought a lot of changes to the Privacy + Scaling Explorations team. Hear from our new team learn about the past, present and future of PSE.",
url: "https://congress.web3privacy.info/",
date: "Monday, Nov 11",
time: "TBA",
},
},
{
date: "November 12, 2024",
time: "12:40 PM - 12:50 PM",
location: "Lightning Talk - Stage 4",
speaker: "@0xjei",
title: "The combination of ZKP +/- MPC +/- FHE",
description:
"This talk will provide you with the necessary intuition to understand when you should use ZKP, MPC or FHE, or any combination of them.",
speakers: [{ url: "https://x.com/0xjei", label: "@0xjei" }],
event: {
title: "The combination of ZKP +/- MPC +/- FHE",
description:
"This talk will provide you with the necessary intuition to understand when you should use ZKP, MPC or FHE, or any combination of them.",
url: "https://app.devcon.org/schedule/XPLVT8",
date: "Tuesday, Nov 12",
time: "12:40 PM - 12:50 PM",
},
},
{
date: "November 12, 2024",
time: "12:50 PM - 1:00 PM",
location: "Lightning Talk - Stage 4",
speaker: "@Rasul",
title: "MPC Tooling or How to create MPC apps",
description:
"Let's get into the state of the art of MPC development: we'll discuss different MPC schemes, current MPC tooling & how you can create MPC apps today. We'll cover the tech stack from a frontend level (e.g. MPC compilers) to a backend - and of course how we can combine them.",
speakers: [{ url: "https://x.com/cperezz19", label: "@cperezz19" }],
event: {
title:
"MP-FHE experiments. Our learnings trying to find the next big tech to focus on.",
description:
"This talk mainly focuses on showcasing the work that some PSE members did while starting to dive into MPC-FHE during Q2 2024. This work is composed by various explorations within the MPC-FHE realm that move towards different directions and goals. From FHE compilers to FFT Bootstrapping GPU optimization proposals, passing by FHE Game demos and many application level implementations, the talk aims to reach beginner-advanced audience on the research/product paths that we have explored so far.",
url: "https://app.devcon.org/schedule/9JYWVP",
date: "Tuesday, Nov 12",
time: "1:10 PM - 1:20 PM",
},
},
{
date: "November 12, 2024",
time: "1:10 PM - 1:20 PM",
location: "Lightning Talk - Stage 4",
speaker: "@cperezz19",
title:
"MP-FHE experiments. Our learnings trying to find the next big tech to focus on.",
description:
"This talk mainly focuses on showcasing the work that some PSE members did while starting to dive into MPC-FHE during Q2 2024. This work is composed by various explorations within the MPC-FHE realm that move towards different directions and goals. From FHE compilers to FFT Bootstrapping GPU optimization proposals, passing by FHE Game demos and many application level implementations, the talk aims to reach beginner-advanced audience on the research/product paths that we have explored so far.",
speakers: [{ url: "https://x.com/leolarav", label: "@leolarav" }],
event: {
title: "Modern ZKP Compilers",
description:
"At PSE we have done much ZKP advanced development. From that learning we are building a language and compiler, that is summarizing much of this learning. We answer questions like: Are compilers necessary in a zkVM world? What is the role of a compiler in ZKP development? What are its most common components? How different ways can this problem be approached? In this advanced talk, we will learn how we compile arbitrary boolean expressions, or how the SchwartzZippel lemma can be used to optimize.",
url: "https://app.devcon.org/schedule/CV7QXP",
date: "Tuesday, Nov 12",
time: "1:30 PM - 1:40 PM",
},
},
{
date: "November 12, 2024",
time: "1:30 PM - 1:40 PM",
location: "Lightning Talk - Stage 4",
speaker: "@leolarav",
title: "Modern ZKP Compilers",
description:
"At PSE we have done much ZKP advanced development. From that learning we are building a language and compiler, that is summarizing much of this learning. We answer questions like: Are compilers necessary in a zkVM world? What is the role of a compiler in ZKP development? What are its most common components? How different ways can this problem be approached? In this advanced talk, we will learn how we compile arbitrary boolean expressions, or how the SchwartzZippel lemma can be used to optimize.",
speakers: [{ url: "https://x.com/andyguzmaneth", label: "@andyguzmaneth" }],
event: {
title:
"The Blind Man's Elephant: a product vision towards private identities",
description:
"A short talk introducing the concepts of key principles we want to achieve in private ZK identities. Sparkling concepts like SSI and DIDs and why blockchains are the best way to ensure that. Finally it concludes with simple ZK and data-structure constructions and different alternatives that are seeking to provide this characteristics. In short, this is a lightning overview of the space of ZK, its desired features and different approaches to achieve them.",
url: "https://app.devcon.org/schedule/GSZKVK",
date: "Tuesday, Nov 12",
time: "2:10 PM - 2:20 PM",
},
},
{
date: "November 12, 2024",
time: "2:10 PM - 2:20 PM",
location: "Lightning Talk - Stage 4",
speaker: "@andyguzmaneth",
title:
"The Blind Man's Elephant: a product vision towards private identities",
description:
"A short talk introducing the concepts of key principles we want to achieve in private ZK identities. Sparkling concepts like SSI and DIDs and why blockchains are the best way to ensure that. Finally it concludes with simple ZK and data-structure constructions and different alternatives that are seeking to provide this characteristics. In short, this is a lightning overview of the space of ZK, its desired features and different approaches to achieve them.",
speakers: [
{ url: "https://x.com/moven0831", label: "@moven0831" },
{ url: "https://x.com/vivi4322", label: "@vivi4322" },
],
event: {
title: "Mopro: Make Client-side Proving on Mobile Easy",
description:
"Mopro is a toolkit for ZK app development on mobile. Mopro makes client-side proving on mobile simple. Mopro aims to connect different adapters with different platforms. In this talk, we will share: - How to use Mopro to develop your own ZK mobile app. - What is the current development progress, including the current supported proving systems, supported platforms, and mobile GPU exploration results. - Moreover, we will share the challenges that Mopro faces and our future roadmap.",
url: "https://app.devcon.org/schedule/BZWFEM",
date: "Tuesday, Nov 12",
time: "2:50 PM - 3:00 PM",
},
},
{
location: "Talk - Stage 3",
speakers: [
{ url: "https://x.com/atheartengineer", label: "@atheartengineer" },
{ url: "#", label: "Ying Tong" },
],
event: {
title: "Introduction to Cryptography, New and Old",
description: `Data can be useful, and also dangerous. This talk will raise questions and concerns that data enthusiasts might want to consider.`,
url: "https://app.devcon.org/schedule/R3JC8U",
date: "Tuesday, Nov 12",
time: "2:00 PM - 2:50 PM",
},
},
{
location: "Talk - Stage 3",
speakers: [
{ url: "https://x.com/yush_g", label: "@yush_g" },
{ url: "https://x.com/sorasue77", label: "@sorasue77" },
],
event: {
title: "ZK Email: Fast Proofs and Production-Ready Account Recovery",
description:
"We discuss progress that ZK Email has made in making new proofs really easy, as well as interesting new on-chain directions for email-triggered transactions. Well go over proof registries, email-based multisig signers, and email guardians for account recovery in production.",
url: "https://app.devcon.org/schedule/WNQBQH",
date: "Wednesday, Nov 13",
time: "10:30 AM - 11:00 AM",
},
},
{
location: "Talk - Classroom A",
speakers: [{ url: "https://x.com/viv_boops", label: "@viv_boops" }],
event: {
title: "Digital Pheromones: MPC for Human Connection & Coordination",
description:
"Recent MPC research from Cursive and PSE enables a new concept called 'digital pheromones': the ability to produce lightweight, privacy-preserving signals that people can use to coordinate safely and efficiently. The primary result we will cover is Trinity, a new 2PC scheme with nearly ideal UX/DevX, built on the trio of PLONK, Garbled Circuits, and KZG Witness Encryption. We will do a live demo with attendees and explore what a future filled with digital pheromones will enable!",
url: "https://app.devcon.org/schedule/LMCG3V",
date: "Wednesday, Nov 13",
time: "3:20 PM - 3:50 PM",
},
},
{
location: "Panel - Stage 1",
speakers: [
{ url: "https://x.com/turboblitzzz", label: "@turboblitzzz" },
{ url: "https://x.com/7pastelblackcat", label: "@7pastelblackcat" },
{ url: "https://x.com/michaelelliot", label: "@michaelelliot" },
{ url: "https://x.com/0xnicoshark", label: "@0xnicoshark" },
{ url: "https://x.com/yanis_mezn", label: "@yanis_mezn" },
],
event: {
title: "Utilizing National IDs in the Ethereum Ecosystem",
description:
"This panel brings together developers of MynaWallet, Anon-Aadhaar, Proof of Passport, and zkPassport, who are exploring and developing applications that utilize government-issued IDs in the Ethereum ecosystem. We will discuss the characteristics of each ID system and what functions can be realized using tech stacks in the Ethereum ecosystem and cryptographic technology.",
url: "https://app.devcon.org/schedule/PR78EL",
date: "Thursday, Nov 14",
time: "9:45 AM - 10:45 AM",
},
},
{
location: "Panel - Stage 6",
speakers: [
{ url: "https://x.com/ed255", label: "@ed255" },
{ url: "https://x.com/janmajlaya_mall", label: "@janmajlaya_mall" },
{ url: "https://x.com/veronica241", label: "@veronica241" },
],
event: {
title: "Multi-Party FHE for Multi-Player Privacy",
description:
"Privacy is an unsolved challenge for blockchains and decentralized systems. ZK cryptography gets us there partially, but not all the way. ZK enables 'single-player private state,' and certain other kinds of privacy are impossible to realize with ZKPs alone. Panelists, the cryptography library devs, infrastructure builders, and application devs who have recently started to explore programmable encryption will discuss MP-FHE as one such tool for achieving more general privacy capabilities.",
url: "https://app.devcon.org/schedule/S9S8M9",
date: "Thursday, Nov 14",
time: "1:00 PM - 2:00 PM",
},
},
{
location: "Workshop - Classroom E",
speakers: [{ url: "https://x.com/yush_g", label: "@yush_g" }],
event: {
title:
"Build Your Own ZK Email Proofs, ZK Email Login, or ZK Account Recovery Module in 1.5 Hours",
description:
"We explain how to use a variety of ZK email-related SDKs, creating new proofs only using TypeScript or Solidity, whichever the developer is most familiar with. We will define new proofs in 5 minutes via sdk.prove.email, complete Solidity ZK email verifications via our generic relayer, and ideate your own projects!",
url: "https://app.devcon.org/schedule/DZVPRH",
date: "Thursday, Nov 14",
time: "1:30 PM - 3:00 PM",
},
},
{
location: "Lightning Talk - Stage 4",
speakers: [
{ url: "https://x.com/chihchengliang", label: "@chihchengliang" },
],
event: {
title: "Little Things We've Learned About FHE",
description:
"Recently, at PSE, we have been exploring the field of cryptography, specifically focusing on Fully Homomorphic Encryption (FHE). FHE enables secure interactions with encrypted data between different parties. In this presentation, we will introduce key concepts and essential information tailored for developers and application designers. This will help them quickly grasp the fundamentals without getting bogged down by complex mathematical details.",
url: "https://app.devcon.org/schedule/9JFDZA",
date: "Thursday, Nov 14",
time: "4:00 PM - 4:30 PM",
},
},
{
location: "Lightning Talk - Classroom E",
speakers: [{ url: "https://x.com/sinu_eth", label: "@sinu_eth" }],
event: {
title: "TLSNotary: Applying MPC and Interactive ZK to Prove Web2 Data",
description:
"Diving into TLSNotary, a protocol which leverages multi-party computation and interactive ZK to prove the authenticity and provenance of any data on the web to another party. Summary: 1. What it is and what it can do. 2. High-level overview of how it works 3. Details on the underlying MPC and ZK protocols that we use 4. How to use it.",
url: "https://app.devcon.org/schedule/RTVKJC",
date: "Thursday, Nov 14",
time: "4:30 PM - 4:40 PM",
},
},
{
location: "Workshop - Classroom E",
speakers: [
{ url: "https://x.com/sinu_eth", label: "@sinu_eth" },
{ url: "https://x.com/heechkau", label: "@heechkau" },
{ url: "https://x.com/0xtsukino", label: "@0xtsukino" },
],
event: {
title: "Unlock Web2 Data with TLSNotary: Hands-On Workshop",
description:
"Join our hands-on workshop to master TLSNotary! Dive into multi-party-TLS and learn to prove and verify online data authenticity to a third-party verifier while ensuring privacy. Well start with small examples in Rust and build up to custom browser extensions in TypeScript to collect and verify private user data.",
url: "https://app.devcon.org/schedule/VPMQGM",
date: "Thursday, Nov 14",
time: "4:40 PM - 6:10 PM",
},
},
]
export default events
export const booths = [
{
image: "/images/impact-booth.svg",
title: "PSE Impact Booth",
description:
"We are hosting open office hours at Devcon so you can ask questions, try out demos, and deep-dive into our projects. There will be representatives from MACI, TLSNotary, Semaphore, EcoDev, DevRel, Grants, Research and more all week. Come learn about the growing field of advanced cryptography!",
date: "Nov 12 - 15",
location: "S1-07 and S1-08",
},
{
image: "/images/cryptographic-connections.svg",
title: "Cryptographic Connections",
description:
"Throughout history, humans have used patterns, symbols, and codes to forge meaningful connections. This exhibit by Cursive explores cryptography not just as mathematical formulas, but as a deeply human art form.",
date: "Nov 12 - 15",
location: "Near Devcon Entrance",
},
]

View File

@@ -19,7 +19,7 @@ export function useAppSettings(lang: LocaleTypes) {
{
title: "Devcon 7",
external: true,
href: "https://pse-team.notion.site/PSE-x-Devcon-7-Southeast-Asia-138d57e8dd7e80b59cabea798d9bc77b",
href: "/devcon-7",
},
{
title: t("menu.projectLibrary"),

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 395 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 448 KiB

View File

@@ -5,16 +5,15 @@ module.exports = {
darkMode: ["class"],
content: ["app/**/*.{ts,tsx}", "components/**/*.{ts,tsx}"],
theme: {
container: {
center: true,
padding: "2rem",
},
extend: {
container: {
center: true,
padding: "16px",
},
screens: {
"2xl": "1400px",
"3xl": "1600px",
"medium": "978px",
medium: "978px",
},
translate: {
center: "translate(-50%, -50%)",
@@ -22,9 +21,12 @@ module.exports = {
backgroundImage: {
"main-gradient":
"radial-gradient(114.29% 42.52% at 103.66% 58.94%, #D0F8F1 0%, #D1F3FF 18.23%, #ECF8FF 51.28%, #E1FFFA 80.21%, #D0F2FF 93.23%)",
"cover-gradient": "linear-gradient(84deg, #FFF -1.95%, #C2E8F5 59.98%, #FFF 100.64%)",
"classic-gradient": "radial-gradient(325.52% 79.63% at 100% -0.02%, #FFF 0%, rgba(255, 255, 255, 0.00) 100%), radial-gradient(205.45% 61.89% at 2.34% 99.98%, #FFF 0%, rgba(255, 255, 255, 0.00) 100%)",
"project-page-gradient": "linear-gradient(180deg, #C2E8F5 -17.44%, #FFF 17.72%)"
"cover-gradient":
"linear-gradient(84deg, #FFF -1.95%, #C2E8F5 59.98%, #FFF 100.64%)",
"classic-gradient":
"radial-gradient(325.52% 79.63% at 100% -0.02%, #FFF 0%, rgba(255, 255, 255, 0.00) 100%), radial-gradient(205.45% 61.89% at 2.34% 99.98%, #FFF 0%, rgba(255, 255, 255, 0.00) 100%)",
"project-page-gradient":
"linear-gradient(180deg, #C2E8F5 -17.44%, #FFF 17.72%)",
},
colors: {
corduroy: "#4A5754",
@@ -33,6 +35,7 @@ module.exports = {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
black: "#01030A",
anakiwa: {
default: "#D0F2FF",
50: "#F2FAFD",
@@ -135,4 +138,3 @@ module.exports = {
},
plugins: [require("tailwindcss-animate")],
}