mirror of
https://github.com/AtHeartEngineer/website-v2.git
synced 2026-01-10 13:28:03 -05:00
add project tags to list
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { HtmlHTMLAttributes } from "react"
|
||||
import Link from "next/link"
|
||||
import {
|
||||
FilterLabelMapping,
|
||||
@@ -8,6 +9,18 @@ import { ProjectInterface } from "@/lib/types"
|
||||
|
||||
import { CategoryTag } from "../ui/categoryTag"
|
||||
|
||||
interface TagsProps extends HtmlHTMLAttributes<HTMLDivElement> {
|
||||
label: string
|
||||
}
|
||||
const TagsWrapper = ({ label, children }: TagsProps) => {
|
||||
return (
|
||||
<div className="flex gap-2">
|
||||
<span className="py-2 text-base font-medium ">{label}</span>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export function ProjectTags({ project }: { project: ProjectInterface }) {
|
||||
return (
|
||||
<div className="flex flex-col gap-4 mt-8">
|
||||
@@ -15,11 +28,12 @@ export function ProjectTags({ project }: { project: ProjectInterface }) {
|
||||
const keyTags = project?.tags?.[key as ProjectFilter]
|
||||
const hasItems = keyTags && keyTags?.length > 0
|
||||
|
||||
if (key === "themes") return null // ignore themes
|
||||
|
||||
return (
|
||||
hasItems && (
|
||||
<div>
|
||||
<div className="flex gap-2">
|
||||
<span className="py-2 text-base font-medium ">{label}</span>
|
||||
<TagsWrapper label={label}>
|
||||
<div className="flex gap-[6px]">
|
||||
{keyTags?.map((tag) => {
|
||||
return (
|
||||
@@ -31,11 +45,12 @@ export function ProjectTags({ project }: { project: ProjectInterface }) {
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</TagsWrapper>
|
||||
</div>
|
||||
)
|
||||
)
|
||||
})}
|
||||
<TagsWrapper label="Project status"></TagsWrapper>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -7,8 +7,17 @@ import { useProjectFiltersState } from "@/state/useProjectFiltersState"
|
||||
|
||||
import { ProjectLinkWebsite } from "@/lib/types"
|
||||
|
||||
import { Icons } from "../icons"
|
||||
import { CategoryTag } from "../ui/categoryTag"
|
||||
import { ThemesButtonMapping } from "./project-filters-bar"
|
||||
import { ProjectLink } from "./project-link"
|
||||
|
||||
const TagsIconMapping: Record<string, any> = {
|
||||
build: <Icons.hammer height={12} width={12} />,
|
||||
play: <Icons.hand height={12} width={12} />,
|
||||
research: <Icons.readme height={12} width={12} />,
|
||||
}
|
||||
|
||||
export default function ProjectList() {
|
||||
const { projects } = useProjectFiltersState((state) => state)
|
||||
const router = useRouter()
|
||||
@@ -16,13 +25,13 @@ export default function ProjectList() {
|
||||
return (
|
||||
<div className="flex flex-wrap justify-center gap-6 pb-6">
|
||||
{projects.map((project) => {
|
||||
const { id, image, links, name, tldr } = project
|
||||
const { id, image, links, name, tldr, tags } = project
|
||||
|
||||
return (
|
||||
<div key={id}>
|
||||
<div
|
||||
onClick={() => router.push(`/projects/${id}`)}
|
||||
className="flex h-[419px] w-[310px] cursor-pointer flex-col overflow-hidden rounded-lg border border-slate-900/20 transition duration-150 ease-in hover:scale-105"
|
||||
className="flex h-[460px] w-[310px] cursor-pointer flex-col overflow-hidden rounded-lg border border-slate-900/20 transition duration-150 ease-in hover:scale-105"
|
||||
>
|
||||
<Image
|
||||
src={`/project-banners/${image ? image : "fallback.webp"}`}
|
||||
@@ -33,6 +42,21 @@ export default function ProjectList() {
|
||||
/>
|
||||
<div className="flex flex-col justify-between h-full gap-5 p-5 bg-white rounded-b-lg">
|
||||
<div className="flex flex-col justify-start gap-2">
|
||||
<div className="flex gap-2">
|
||||
{tags?.themes?.map((theme, index) => {
|
||||
const { label } = ThemesButtonMapping?.[theme]
|
||||
const icon = TagsIconMapping?.[theme]
|
||||
|
||||
return (
|
||||
<CategoryTag variant="blue" size="xs" key={index}>
|
||||
<div className="flex items-center gap-1">
|
||||
{icon}
|
||||
<span>{label ?? theme}</span>
|
||||
</div>
|
||||
</CategoryTag>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
<h1 className="text-xl font-bold text-black">{name}</h1>
|
||||
<p className="text-slate-900/80">{tldr}</p>
|
||||
</div>
|
||||
|
||||
@@ -6,6 +6,7 @@ Anon Aadhaar is a project that allows individuals to prove their citizenship ano
|
||||
|
||||
export const anonAadhaar: ProjectInterface = {
|
||||
id: "anon-aadhaar",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "Anon Aadhaar",
|
||||
tldr: "Tools for building build privacy-preserving applications using government ID cards, specifically Aadhaar cards in India.",
|
||||
@@ -14,8 +15,9 @@ export const anonAadhaar: ProjectInterface = {
|
||||
github: "https://github.com/privacy-scaling-explorations/anon-aadhaar",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Voting/governance"],
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity", "Voting/governance"],
|
||||
themes: ["build", "play"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits", "Proof of concept"],
|
||||
builtWith: ["Circom, RSA"],
|
||||
builtWith: ["circom", "rsa"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ AnonKlub is a tool designed for Ethereum developers that allows for anonymous pr
|
||||
|
||||
export const anonKlub: ProjectInterface = {
|
||||
id: "anon-klub",
|
||||
projectStatus: "active",
|
||||
image: "anonklub.svg",
|
||||
name: "AnonKlub",
|
||||
tldr: "A mechanism for anonymous proof of Ethereum address ownership.",
|
||||
@@ -15,14 +16,15 @@ export const anonKlub: ProjectInterface = {
|
||||
website: "https://anonklub.github.io",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
keywords: [
|
||||
"Transaction privacy",
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
"Voting/governance",
|
||||
],
|
||||
themes: ["build", "play"],
|
||||
type: ["Infrastructure/protocol", "Prototype", "Proof of concept"],
|
||||
builtWith: ["Circom", "snarkjs", "halo2"],
|
||||
builtWith: ["circom", "snarkjs", "halo2"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Bandada is a project designed to simplify the management of privacy-preserving S
|
||||
|
||||
export const bandada: ProjectInterface = {
|
||||
id: "bandada",
|
||||
projectStatus: "active",
|
||||
image: "bandada.webp",
|
||||
name: "Bandada",
|
||||
tldr: "An open-source system for managing privacy-preserving groups of anonymous individuals.",
|
||||
@@ -15,7 +16,7 @@ export const bandada: ProjectInterface = {
|
||||
website: "https://bandada.appliedzkp.org/",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
keywords: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
@@ -35,6 +36,7 @@ export const bandada: ProjectInterface = {
|
||||
"Plugin",
|
||||
"Application",
|
||||
],
|
||||
builtWith: ["Semaphore", "ZK-kit"],
|
||||
builtWith: ["semaphore", "zk-kit"],
|
||||
themes: ["build", "play"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Channel 4 is a community-driven platform where users can submit and discover con
|
||||
|
||||
export const channel4: ProjectInterface = {
|
||||
id: "channel-4",
|
||||
projectStatus: "active",
|
||||
image: "channel4.svg",
|
||||
name: "Channel 4",
|
||||
tldr: "Content discovery through community contributions, using state channels to reward users for popular posts.",
|
||||
@@ -16,8 +17,9 @@ export const channel4: ProjectInterface = {
|
||||
discord: "https://discord.gg/76UrYgVyEx",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
keywords: ["Scaling"],
|
||||
themes: ["play"],
|
||||
type: ["Application"],
|
||||
builtWith: ["State channel", "Smart contract"],
|
||||
builtWith: ["state channel", "smart contract"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ CryptKeeper is a browser extension that generates Semaphore and RLN proofs for w
|
||||
|
||||
export const cryptkeeper: ProjectInterface = {
|
||||
id: "cryptkeeper",
|
||||
projectStatus: "active",
|
||||
image: "cryptkeeper.webp",
|
||||
name: "CryptKeeper",
|
||||
tldr: "A browser extension for secure, portable anonymous identity management across applications.",
|
||||
@@ -14,9 +15,9 @@ export const cryptkeeper: ProjectInterface = {
|
||||
github: "https://github.com/CryptKeeperZK",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity"],
|
||||
themes: ["build"],
|
||||
types: ["Application", "Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
|
||||
builtWith: ["Semaphore", "RLN"],
|
||||
builtWith: ["semaphore", "rln"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ An anonymous, federated, chat application that uses Rate-Limiting Nullifier for
|
||||
|
||||
export const discreetly: ProjectInterface = {
|
||||
id: "discreetly",
|
||||
projectStatus: "active",
|
||||
image: "discreetly.svg",
|
||||
name: "Discreetly",
|
||||
tldr: "An anonymous, federated, chat application using ZK.",
|
||||
@@ -14,8 +15,9 @@ export const discreetly: ProjectInterface = {
|
||||
github: "https://github.com/Discreetly",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social"],
|
||||
keywords: ["Anonymity/privacy", "Social"],
|
||||
themes: ["play"],
|
||||
types: ["Legos/dev tools", "Proof of concept", "Application"],
|
||||
builtWith: ["RLN", "Semaphore", "Waku"],
|
||||
builtWith: ["rln", "semaphore", "waku"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ The DSL Working Group is focused on the exploration and improvement of languages
|
||||
|
||||
export const dslWorkingGroup: ProjectInterface = {
|
||||
id: "dsl-working-group",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "DSL Working Group",
|
||||
tldr: "Exploration of languages for writing zk circuits",
|
||||
@@ -14,7 +15,8 @@ export const dslWorkingGroup: ProjectInterface = {
|
||||
github: "https://github.com/privacy-scaling-explorations/chiquito/",
|
||||
},
|
||||
tags: {
|
||||
type: ["Legos/dev tools", "Proof of concept", "Developer tooling"],
|
||||
type: ["research"],
|
||||
keywords: [],
|
||||
themes: [],
|
||||
builtWith: [],
|
||||
},
|
||||
|
||||
@@ -6,6 +6,7 @@ EigenTrust is a library designed to manage trust within a distributed network, i
|
||||
|
||||
export const eigenTrust: ProjectInterface = {
|
||||
id: "eigen-trust",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "EigenTrust",
|
||||
tldr: "A distributed reputation system with zero-knowledge features.",
|
||||
@@ -14,8 +15,9 @@ export const eigenTrust: ProjectInterface = {
|
||||
github: "https://github.com/eigen-trust/protocol",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Reputation", "Identity"],
|
||||
keywords: ["Reputation", "Identity"],
|
||||
themes: ["build"],
|
||||
type: ["Infrastructure/protocol"],
|
||||
builtWith: ["Ethereum Attestation Service", "Halo2", "ethers.rs"],
|
||||
builtWith: ["ethereum attestation service", "halo2", "ethers.rs"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Minimal Anti-Collusion Infrastructure (MACI) is a protocol designed to provide a
|
||||
|
||||
export const maci: ProjectInterface = {
|
||||
id: "maci",
|
||||
projectStatus: "active",
|
||||
image: "maci.webp",
|
||||
name: "MACI",
|
||||
tldr: "A secure e-voting solution minimizing the risk of collusion and bribery",
|
||||
@@ -14,8 +15,9 @@ export const maci: ProjectInterface = {
|
||||
github: "https://github.com/privacy-scaling-explorations/maci",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Voting/governance"],
|
||||
keywords: ["Anonymity/privacy", "Voting/governance"],
|
||||
themes: ["build"],
|
||||
types: ["Lego sets/toolkits", "Infrastructure/protocol"],
|
||||
builtWith: ["P0tion", "JubjubLib"],
|
||||
builtWith: ["p0tion", "JubjubLib"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Pollen Labs is driven by a mission to make a significant impact on global lives
|
||||
|
||||
export const pollenLabs: ProjectInterface = {
|
||||
id: "pollen-labs",
|
||||
projectStatus: "active",
|
||||
image: "pollen-labs.svg",
|
||||
name: "Pollen Labs",
|
||||
tldr: "Champions of freedom of speech and expression through decentralized innovation.",
|
||||
@@ -15,8 +16,9 @@ export const pollenLabs: ProjectInterface = {
|
||||
twitter: "https://twitter.com/PollenLabs_",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
keywords: ["Anonymity/privacy", "Scaling"],
|
||||
themes: ["play"],
|
||||
type: ["Application"],
|
||||
builtWith: [""],
|
||||
builtWith: [],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ PSE Security is a division of the Privacy & Scaling Explorations team at the Eth
|
||||
|
||||
export const pseSecurity: ProjectInterface = {
|
||||
id: "pse-security",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "PSE Security",
|
||||
tldr: "Proactively securing Ethereum's L2 and ZK ecosystems.",
|
||||
@@ -14,14 +15,15 @@ export const pseSecurity: ProjectInterface = {
|
||||
github: "https://github.com/privacy-scaling-explorations/security",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
keywords: [
|
||||
"Anonymity/privacy",
|
||||
"Education",
|
||||
"Key management",
|
||||
"Scaling",
|
||||
"Security",
|
||||
],
|
||||
themes: ["build"],
|
||||
types: ["Legos/dev tools"],
|
||||
builtWith: ["Slither", "Ecne", "Circomspect", "Echidna"],
|
||||
builtWith: ["slither", "ecne", "circomspect", "echidna"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Rate-Limiting Nullifier (RLN) is a protocol designed to combat spam and denial o
|
||||
|
||||
export const rln: ProjectInterface = {
|
||||
id: "rln",
|
||||
projectStatus: "active",
|
||||
image: "rln.webp",
|
||||
name: "Rate-Limiting Nullifier",
|
||||
tldr: "A protocol for deterring spam and maintaining anonymity in communication systems.",
|
||||
@@ -15,8 +16,9 @@ export const rln: ProjectInterface = {
|
||||
website: "https://rate-limiting-nullifier.github.io/rln-docs/",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy"],
|
||||
keywords: ["Anonymity/privacy"],
|
||||
themes: ["build"],
|
||||
types: ["Infrastructure/protocol"],
|
||||
builtWith: ["Circom", "Solidity", "Semaphore"],
|
||||
builtWith: ["circom", "solidity", "semaphore"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Semaphore is a protocol that allows users to prove their membership in a group a
|
||||
|
||||
export const semaphore: ProjectInterface = {
|
||||
id: "semaphore",
|
||||
projectStatus: "active",
|
||||
image: "semaphore.webp",
|
||||
name: "Semaphore",
|
||||
tldr: "A zero-knowledge protocol enabling anonymous group membership proof and signaling.",
|
||||
@@ -16,7 +17,7 @@ export const semaphore: ProjectInterface = {
|
||||
discord: "https://semaphore.appliedzkp.org/discord",
|
||||
},
|
||||
tags: {
|
||||
themes: [
|
||||
keywords: [
|
||||
"Anonymity/privacy",
|
||||
"Social",
|
||||
"Identity",
|
||||
@@ -28,8 +29,8 @@ export const semaphore: ProjectInterface = {
|
||||
"Key management",
|
||||
"Other (group membership)",
|
||||
],
|
||||
|
||||
themes: ["build"],
|
||||
types: ["Legos/dev tools", "Lego sets/toolkits", "Infrastructure/protocol"],
|
||||
builtWith: ["ZK-kit", "circom", "snarkjs"],
|
||||
builtWith: ["zk-kit", "circom", "snarkjs"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Summa allows centralized exchanges to demonstrate that their assets exceed their
|
||||
|
||||
export const summa: ProjectInterface = {
|
||||
id: "summa",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "Summa",
|
||||
tldr: "Protocol enabling centralized exchanges to prove solvency without compromising private information.",
|
||||
@@ -14,8 +15,9 @@ export const summa: ProjectInterface = {
|
||||
github: "https://github.com/summa-dev",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Computational Integrity"],
|
||||
keywords: ["Anonymity/privacy", "Computational Integrity"],
|
||||
themes: ["build", "play"],
|
||||
type: ["Infrastructure/protocol", "Application"],
|
||||
builtWith: ["Halo2 PSE"],
|
||||
builtWith: ["halo2"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ TLSNotary is useful for developers of privacy focused projects that need data pr
|
||||
|
||||
export const tlsn: ProjectInterface = {
|
||||
id: "tlsn",
|
||||
projectStatus: "active",
|
||||
image: "tlsn.webp",
|
||||
name: "TLSNotary",
|
||||
tldr: "A protocol for creating cryptographic proofs of authenticity for any data on the web.",
|
||||
@@ -16,8 +17,9 @@ export const tlsn: ProjectInterface = {
|
||||
discord: "https://discord.gg/9XwESXtcN7",
|
||||
},
|
||||
tags: {
|
||||
themes: [],
|
||||
themes: ["build"],
|
||||
type: [],
|
||||
builtWith: [],
|
||||
keywords: [],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ The Trusted Setups project is dedicated to simplifying the process of trusted se
|
||||
`
|
||||
export const trustedSetups: ProjectInterface = {
|
||||
id: "trusted-setups",
|
||||
projectStatus: "active",
|
||||
image: "trusted-setups.svg",
|
||||
name: "Trusted Setups",
|
||||
tldr: "Aiding developers with tools for trusted setups.",
|
||||
@@ -13,8 +14,9 @@ export const trustedSetups: ProjectInterface = {
|
||||
github: "https://github.com/zkparty",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling", "Education"],
|
||||
themes: ["play"],
|
||||
type: ["Legos/dev tools", "Lego sets/toolkits"],
|
||||
builtWith: [],
|
||||
keywords: ["Scaling", "Education"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ UniRep is a zero-knowledge protocol that securely manages user data through anon
|
||||
|
||||
export const unirepProtocol: ProjectInterface = {
|
||||
id: "unirep-protocol",
|
||||
projectStatus: "active",
|
||||
image: "unirep.svg",
|
||||
name: "UniRep Protocol",
|
||||
tldr: "A Zero-Knowledge Protocol for user data & reputation management",
|
||||
@@ -17,8 +18,9 @@ export const unirepProtocol: ProjectInterface = {
|
||||
discord: "https://discord.gg/VzMMDJmYc5",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
themes: ["build"],
|
||||
type: ["Legos/dev tools, Protocol"],
|
||||
builtWith: ["Semaphore", "Circom"],
|
||||
builtWith: ["semaphore", "circom"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Wallet Account eXperiments (WAX), formerly known as BLS Wallet, is a suite of pr
|
||||
|
||||
export const wax: ProjectInterface = {
|
||||
id: "wax",
|
||||
projectStatus: "active",
|
||||
image: "wax.webp",
|
||||
name: "Wallet Account eXperiments (WAX)",
|
||||
tldr: "Streamlines web3 product development with smart account components for enhanced wallets, dApps, and SDKs.",
|
||||
@@ -17,16 +18,16 @@ export const wax: ProjectInterface = {
|
||||
},
|
||||
tags: {
|
||||
builtWith: [
|
||||
"Hardhat",
|
||||
"Node",
|
||||
"Solidity BLS library",
|
||||
"hardhat",
|
||||
"node",
|
||||
"solidity bls library",
|
||||
"sqlite",
|
||||
"docker",
|
||||
"ethers",
|
||||
"deno",
|
||||
],
|
||||
|
||||
themes: ["Scaling", "Key management"],
|
||||
keywords: ["Scaling", "Key management"],
|
||||
themes: ["play"],
|
||||
types: ["Prototype", "Proof of concept", "Lego sets/toolkits"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Zk3 is a protocol that leverages Zero Knowledge Proofs (ZKPs) to allow users to
|
||||
|
||||
export const zk3: ProjectInterface = {
|
||||
id: "zk3",
|
||||
projectStatus: "active",
|
||||
image: "zk3.svg",
|
||||
name: "zk3",
|
||||
tldr: "Utilizing ZK proofs in social networks",
|
||||
@@ -16,13 +17,14 @@ export const zk3: ProjectInterface = {
|
||||
twitter: "http://twitter.com/zk3org",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
themes: ["play"],
|
||||
type: [
|
||||
"Legos/dev tools",
|
||||
"Lego sets/toolkits",
|
||||
"Infrastructure/protocol",
|
||||
"Plugin",
|
||||
],
|
||||
builtWith: ["Semaphore", "Lens protocol"],
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity", "Reputation"],
|
||||
builtWith: ["semaphore", "lens protocol"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ zkEVM Community Edition is a project aimed at validating Ethereum blocks using z
|
||||
|
||||
export const zkevmCommunity: ProjectInterface = {
|
||||
id: "zkevm-community",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "zkEVM Community Edition",
|
||||
tldr: "A zero-knowledge proof mechanism for Ethereum block verification.",
|
||||
@@ -14,8 +15,9 @@ export const zkevmCommunity: ProjectInterface = {
|
||||
github: "https://github.com/privacy-scaling-explorations/zkevm-circuits",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Scaling"],
|
||||
keywords: ["Scaling"],
|
||||
themes: ["build"],
|
||||
types: ["Infrastructure/protocol", "Lego sets/toolkits"],
|
||||
builtWith: ["halo2 from zcash", "Rust", "geth"],
|
||||
builtWith: ["halo2", "rust", "geth"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ Zkitter is a decentralized social network that emphasizes privacy by default. It
|
||||
|
||||
export const zkitter: ProjectInterface = {
|
||||
id: "zkitter",
|
||||
projectStatus: "archived",
|
||||
image: "zkitter.webp",
|
||||
name: "Zkitter",
|
||||
tldr: "A decentralized social network prioritizing privacy and anonymity",
|
||||
@@ -17,8 +18,9 @@ export const zkitter: ProjectInterface = {
|
||||
},
|
||||
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Social", "Identity"],
|
||||
keywords: ["Anonymity/privacy", "Social", "Identity"],
|
||||
themes: ["build"],
|
||||
types: ["Application", "Infrastructure/protocol"],
|
||||
builtWith: ["Semaphore", "RLN", "Interep", "zkchat"],
|
||||
builtWith: ["semaphore", "rln", "interep", "zkchat"],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ ZKML is a solution that combines the power of zero-knowledge proofs (ZKPs) and m
|
||||
|
||||
export const zkml: ProjectInterface = {
|
||||
id: "zkml",
|
||||
projectStatus: "active",
|
||||
image: "",
|
||||
name: "ZKML",
|
||||
tldr: "ZKML (Zero-Knowledge Machine Learning) leverages zero-knowledge proofs for privacy-preserving machine learning, enabling model and data privacy with transparent verification.",
|
||||
@@ -14,7 +15,8 @@ export const zkml: ProjectInterface = {
|
||||
github: "https://github.com/socathie/circomlib-ml",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Scaling"],
|
||||
keywords: ["Anonymity/privacy", "Scaling"],
|
||||
themes: ["research"],
|
||||
type: ["Proof of concept", "Infrastructure/protocol"],
|
||||
builtWith: ["circom", "halo2", "nova"],
|
||||
},
|
||||
|
||||
@@ -6,6 +6,7 @@ ZKP2P is for defi consumers looking to onramp assets on chain quickly without go
|
||||
|
||||
export const zkp2p: ProjectInterface = {
|
||||
id: "zkp2p",
|
||||
projectStatus: "active",
|
||||
image: "zkp2p.webp",
|
||||
name: "ZKP2P",
|
||||
tldr: "Instant fiat to crypto onramp connecting traditional peer-to-peer payment services with zero-knowledge proofs.",
|
||||
@@ -16,8 +17,9 @@ export const zkp2p: ProjectInterface = {
|
||||
twitter: "https://twitter.com/zkp2p",
|
||||
},
|
||||
tags: {
|
||||
themes: ["Anonymity/privacy", "Payments", "On-ramping"],
|
||||
keywords: ["Private communications"],
|
||||
theme: ["play"],
|
||||
type: ["Proof of concept", "Application"],
|
||||
builtWith: ["Circom", "Halo2"],
|
||||
builtWith: ["circom", "halo2"],
|
||||
},
|
||||
}
|
||||
|
||||
15
lib/types.ts
15
lib/types.ts
@@ -16,6 +16,19 @@ export type ProjectLinkWebsite =
|
||||
| "youtube"
|
||||
|
||||
export type ProjectLinkType = Partial<Record<ProjectLinkWebsite, string>>
|
||||
export type ProjectExtraLinkType = "buildWith" | "play" | "research" | "learn"
|
||||
|
||||
export type ActionLinkType = Partial<
|
||||
Record<
|
||||
ProjectExtraLinkType,
|
||||
Array<{
|
||||
label: string
|
||||
url: string
|
||||
}>
|
||||
>
|
||||
>
|
||||
|
||||
export type ProjectStatusType = "active" | "inactive" | "archived"
|
||||
export interface ProjectInterface {
|
||||
id: string
|
||||
image: string
|
||||
@@ -23,5 +36,7 @@ export interface ProjectInterface {
|
||||
tldr: string
|
||||
description: string
|
||||
links?: ProjectLinkType
|
||||
projectStatus: ProjectStatusType
|
||||
tags?: Record<string, string[]>
|
||||
extraLinks?: ActionLinkType
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user