Skip to content

Commit 85fe30e

Browse files
committed
Merge branch 'main' of https://github.com/MeshJS/governance
2 parents 605fb71 + d2f9a22 commit 85fe30e

File tree

8 files changed

+104
-8
lines changed

8 files changed

+104
-8
lines changed

apps/mesh-gov/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@
22

33
A comprehensive Next.js dashboard that provides transparency into Mesh's governance activities by visualizing data from multiple sources including Project Catalyst proposals, DRep voting decisions, and Mesh SDK usage statistics.
44

5-
## 🎯 Purpose
5+
## Purpose
66

77
This dashboard serves as a central hub for tracking and visualizing:
88

99
- Project Catalyst proposal funding and milestone completion status
1010
- DRep voting decisions with detailed rationales
1111
- Mesh SDK usage metrics and GitHub contributor statistics
12+
- Project (repo) activities
1213

13-
The data is automatically refreshed weekly through Incremental Static Regeneration (ISR), pulling from GitHub-hosted JSON files.
1414

15-
## 🔍 Key Features
15+
## Key Features
1616

1717
- **Catalyst Proposals**: Track funded proposals, budget distribution, and milestone progress
1818
- **DRep Voting**: View voting history, rationales, and epoch information
1919
- **Mesh Stats**: Monitor SDK usage trends, GitHub contributions, and dependency statistics
2020
- **Responsive Design**: Mobile-friendly interface with modern UI/UX
2121

22-
## 🛠️ Tech Stack
22+
## Tech Stack
2323

2424
- **Framework**: Next.js 14 with App Router
2525
- **Styling**: CSS Modules

apps/mesh-gov/src/pages/new-proposals.tsx

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,24 @@ import PageHeader from '../components/PageHeader';
44
import NewProposalCard from '../components/NewProposalCard';
55
import { useRouter } from 'next/router';
66

7+
// YouTube Video Component
8+
const YouTubeEmbed = ({ videoId }: { videoId: string }) => {
9+
return (
10+
<div className={styles.videoContainer}>
11+
<div className={styles.videoWrapper}>
12+
<iframe
13+
src={`https://www.youtube.com/embed/${videoId}`}
14+
title="YouTube video player"
15+
frameBorder="0"
16+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
17+
allowFullScreen
18+
className={styles.videoIframe}
19+
/>
20+
</div>
21+
</div>
22+
);
23+
};
24+
725
export default function NewProposals() {
826
const { isLoading, error } = useData();
927
const router = useRouter();
@@ -79,7 +97,7 @@ export default function NewProposals() {
7997
title: "Mesh: Privacy-Enabled Smart Contracts and UI for Midnight",
8098
description: "Build and deliver modular smart contracts and UI templates, supported by a reusable framework, enabling developers to deploy privacy-enabled apps and reuse them across real-world cases",
8199
category: "Cardano Open: Developers",
82-
budget: 60000,
100+
budget: 65000,
83101
milestones: "4",
84102
status: "Proposed" as const,
85103
fundRound: "Fund14",
@@ -92,9 +110,12 @@ export default function NewProposals() {
92110
<div className={styles.container}>
93111
<PageHeader
94112
title={<>New <span>Proposals</span></>}
95-
subtitle="Explore upcoming and newly submitted Catalyst proposals"
113+
subtitle="Our proposals for Project Catalyst Fund14, doing our part to make the Cardano ecosystem grow."
96114
/>
97115

116+
{/* YouTube Video Embed */}
117+
<YouTubeEmbed videoId="4dFVI35ta0s" />
118+
98119
<div className={styles.list}>
99120
{proposals.map((proposal) => (
100121
<NewProposalCard

apps/mesh-gov/src/pages/proposal/midnight.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default function MidnightProposal() {
1919
title: "Mesh: Privacy-Enabled Smart Contracts and UI for Midnight",
2020
description: "Build and deliver modular smart contracts and UI templates, supported by a reusable framework, enabling developers to deploy privacy-enabled apps and reuse them across real-world cases",
2121
category: "Cardano Open: Developers",
22-
budget: 60000, // in ADA
22+
budget: 65000, // in ADA
2323
proposer: "Mesh Core Team",
2424
status: "Proposed",
2525
fundRound: "Fund 14",
@@ -80,7 +80,7 @@ export default function MidnightProposal() {
8080
id: 3,
8181
title: "Identity & Oracle Contracts",
8282
description: "Develop DID flows, provider integration, and secure on-chain data feed consumption with complete testing suite",
83-
budget: 15000,
83+
budget: 20000,
8484
duration: "Month 9",
8585
outcomes: [
8686
"Smart contract logic and witness code for both Identity and Oracle contracts",
@@ -228,6 +228,9 @@ export default function MidnightProposal() {
228228
<a href={proposalData.website} target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
229229
Project Website
230230
</a>
231+
<a href="https://projectcatalyst.io/funds/14/cardano-open-developers/mesh-privacy-enabled-smart-contracts-and-ui-for-midnight" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
232+
Proposal On Catalyst
233+
</a>
231234
</div>
232235
</div>
233236
</div>

apps/mesh-gov/src/pages/proposal/mimir.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ export default function MimirProposal() {
255255
<a href={proposalData.website} target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
256256
Project Website
257257
</a>
258+
<a href="https://projectcatalyst.io/funds/14/cardano-use-cases-concepts/mesh-tools-and-docs-for-ai-modelsworkflows" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
259+
Proposal On Catalyst
260+
</a>
258261
</div>
259262
</div>
260263
</div>

apps/mesh-gov/src/pages/proposal/new-tx-class.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,9 @@ export default function NewTxClassProposal() {
251251
<a href={proposalData.website} target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
252252
Project Website
253253
</a>
254+
<a href="https://projectcatalyst.io/funds/14/cardano-open-developers/mesh-transaction-v2-unified-serialization-feat-pallas" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
255+
Proposal On Catalyst
256+
</a>
254257
</div>
255258
</div>
256259
</div>

apps/mesh-gov/src/pages/proposal/new-wallet.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,9 @@ This step-by-step approach guarantees that the SDK will not only be cross-chain
301301
<a href="https://meshjs.dev/apis/wallets" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
302302
Project Website
303303
</a>
304+
<a href="https://projectcatalyst.io/funds/14/cardano-open-developers/mesh-cross-chain-production-ready-wallet-sdk" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
305+
Proposal On Catalyst
306+
</a>
304307
</div>
305308
</div>
306309
</div>

apps/mesh-gov/src/pages/proposal/utxos.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,9 @@ export default function UtxosProposal() {
254254
<a href={proposalData.website} target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
255255
Project Website
256256
</a>
257+
<a href="https://projectcatalyst.io/funds/14/cardano-use-cases-partners-and-products/mesh-utxos-x-mercuryo-mastercard-x-checkpoint" target="_blank" rel="noopener noreferrer" className={styles.resourceLink}>
258+
Proposal On Catalyst
259+
</a>
257260
</div>
258261
</div>
259262
</div>

apps/mesh-gov/src/styles/Proposals.module.css

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,66 @@
66
margin: 0 auto;
77
}
88

9+
/* Video Embed Styles */
10+
.videoContainer {
11+
margin: 2rem 0;
12+
padding: 0;
13+
}
14+
15+
.videoWrapper {
16+
position: relative;
17+
width: 100%;
18+
height: 0;
19+
padding-bottom: 56.25%; /* 16:9 aspect ratio */
20+
background: linear-gradient(165deg,
21+
rgba(255, 255, 255, 0.05) 0%,
22+
rgba(255, 255, 255, 0.02) 100%
23+
);
24+
backdrop-filter: blur(20px) saturate(180%);
25+
-webkit-backdrop-filter: blur(20px) saturate(180%);
26+
border-radius: 16px;
27+
border: 1px solid rgba(255, 255, 255, 0.08);
28+
box-shadow:
29+
0 12px 32px -8px rgba(0, 0, 0, 0.2),
30+
0 4px 16px -4px rgba(0, 0, 0, 0.1),
31+
0 0 0 1px rgba(255, 255, 255, 0.1) inset;
32+
overflow: hidden;
33+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
34+
}
35+
36+
.videoWrapper:hover {
37+
transform: translateY(-2px);
38+
box-shadow:
39+
0 16px 40px -8px rgba(0, 0, 0, 0.25),
40+
0 8px 20px -4px rgba(0, 0, 0, 0.15),
41+
0 0 0 1px rgba(255, 255, 255, 0.12) inset;
42+
}
43+
44+
.videoIframe {
45+
position: absolute;
46+
top: 0;
47+
left: 0;
48+
width: 100%;
49+
height: 100%;
50+
border: none;
51+
border-radius: 16px;
52+
}
53+
54+
/* Responsive adjustments */
55+
@media (max-width: 768px) {
56+
.videoContainer {
57+
margin: 1.5rem 0;
58+
}
59+
60+
.videoWrapper {
61+
border-radius: 12px;
62+
}
63+
64+
.videoIframe {
65+
border-radius: 12px;
66+
}
67+
}
68+
969
.pageHeader {
1070
margin-bottom: 2rem;
1171
text-align: center;

0 commit comments

Comments
 (0)