Skip to content

Commit 4112821

Browse files
committed
feat(ce-landing): refresh Community Edition landing page UI and content
Signed-off-by: Gagan Ahlawat <cg.ahlawat2036@gmail.com>
1 parent 9d0ec30 commit 4112821

File tree

7 files changed

+258
-85
lines changed

7 files changed

+258
-85
lines changed

frontend/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
"@octokit/core": "^5.0.0",
2828
"@tiptap/extension-link": "^2.1.12",
2929
"@tiptap/extension-placeholder": "^2.1.12",
30+
"@tiptap/pm": "^2.1.12",
3031
"@tiptap/starter-kit": "^2.1.12",
3132
"@tiptap/vue-3": "^2.1.12",
32-
"@tiptap/pm": "^2.1.12",
3333
"@vitejs/plugin-vue": "^4.2.3",
3434
"@vue/eslint-config-airbnb": "^7.0.0",
3535
"@vuelidate/core": "^2.0.1",
@@ -39,7 +39,8 @@
3939
"chart.js": "^3.9.1",
4040
"chartjs-adapter-moment": "^1.0.1",
4141
"chartjs-plugin-annotation": "^2.2.1",
42-
"chartkick": "^4.0.0",
42+
"chartkick": "^4.0.0",
43+
"dompurify": "^3.0.6",
4344
"element-plus": "^2.3.1",
4445
"eslint-import-resolver-alias": "^1.1.2",
4546
"eslint-plugin-import": "^2.27.5",
@@ -61,7 +62,6 @@
6162
"v-network-graph": "^0.8.2",
6263
"vite": "^5.0.0",
6364
"vue": "^3.3.1",
64-
"dompurify": "^3.0.6",
6565
"vue-draggable-next": "^2.2.1",
6666
"vue-grid-layout": "3.0.0-beta1",
6767
"vue-json-pretty": "^2.2.4",
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<template>
2+
<section class="max-w-6xl mx-auto px-6 py-20 border-t border-white">
3+
<h2 class="font-sans text-3xl font-bold text-white tracking-tight mb-12">
4+
About the Project
5+
</h2>
6+
7+
<p v-if="loading" class="text-white/60 font-mono">
8+
Loading documentation…
9+
</p>
10+
11+
<p v-if="error" class="text-red-400 font-mono">
12+
Failed to load project documentation.
13+
</p>
14+
15+
<div
16+
v-if="!loading && !error"
17+
class="grid grid-cols-1 md:grid-cols-2 gap-8"
18+
>
19+
<a
20+
v-for="doc in docs"
21+
:key="doc.id"
22+
:href="doc.url"
23+
target="_blank"
24+
rel="noopener noreferrer"
25+
class="block border border-white p-6
26+
hover:border-orange-500 transition-colors"
27+
>
28+
<h3 class="font-mono text-lg font-semibold text-orange-500 mb-3">
29+
{{ doc.title }}
30+
</h3>
31+
32+
<p class="text-white/80 text-sm leading-relaxed line-clamp-4">
33+
{{ doc.summary }}
34+
</p>
35+
36+
<span class="mt-4 inline-block font-mono text-sm text-orange-500">
37+
Read more →
38+
</span>
39+
</a>
40+
</div>
41+
</section>
42+
</template>
43+
44+
<script setup>
45+
import { ref, onMounted } from 'vue';
46+
47+
const RAW_BASE =
48+
'https://raw.githubusercontent.com/LF-Decentralized-Trust-labs/gitmesh/main';
49+
50+
const GITHUB_BASE =
51+
'https://github.com/LF-Decentralized-Trust-labs/gitmesh/blob/main';
52+
53+
const SOURCES = [
54+
{ id: 'contributing', title: 'Contributing', file: 'CONTRIBUTING.md' },
55+
{ id: 'security', title: 'Security', file: 'SECURITY.md' },
56+
{ id: 'conduct', title: 'Code of Conduct', file: 'CODE_OF_CONDUCT.md' },
57+
{ id: 'governance', title: 'Governance', file: 'GOVERNANCE.md' },
58+
{ id: 'license', title: 'License', file: 'LICENSE' },
59+
];
60+
61+
const docs = ref([]);
62+
const loading = ref(true);
63+
const error = ref(false);
64+
65+
function extractSummary(markdown) {
66+
return (
67+
markdown
68+
.replace(/^#+\s.*$/gm, '')
69+
.replace(/```[\s\S]*?```/g, '')
70+
.replace(/`[^`]*`/g, '')
71+
.replace(/\n+/g, ' ')
72+
.trim()
73+
.slice(0, 240) + ''
74+
);
75+
}
76+
77+
onMounted(async () => {
78+
try {
79+
const results = await Promise.all(
80+
SOURCES.map(async (src) => {
81+
const res = await fetch(`${RAW_BASE}/${src.file}`);
82+
if (!res.ok) return null;
83+
84+
const text = await res.text();
85+
return {
86+
id: src.id,
87+
title: src.title,
88+
summary: extractSummary(text),
89+
url: `${GITHUB_BASE}/${src.file}`,
90+
};
91+
})
92+
);
93+
94+
docs.value = results.filter(Boolean);
95+
} catch {
96+
error.value = true;
97+
} finally {
98+
loading.value = false;
99+
}
100+
});
101+
</script>

frontend/src/components/landing/CommunityFooter.vue

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,46 @@
11
<template>
22
<footer class="border-t border-white/10 mt-24">
3-
<div class="max-w-5xl mx-auto px-6 py-12">
4-
<div class="flex items-center justify-between">
5-
<p class="text-white/40 font-mono text-sm">
6-
Created by Alveoli &copy; 2025 — a lab under LF Decentralized Trust
3+
<div class="max-w-6xl mx-auto px-6 py-12">
4+
<div
5+
class="flex flex-col md:flex-row items-start md:items-center
6+
justify-between gap-6"
7+
>
8+
<p class="text-white/40 font-mono text-sm leading-relaxed">
9+
GitMesh Community Edition is developed and maintained by contributors
10+
from multiple open-source organizations under the
11+
Linux Foundation Decentralized Trust Lab.
12+
<br />
13+
Enterprise Edition is officially provided and supported by
14+
<a href="https://alveoli.app/" target="_blank">
15+
<span class="text-orange-500 font-medium">
16+
Alveoli Labs
17+
</span>
18+
</a>
719
</p>
20+
821
<div class="flex gap-6">
9-
<a
10-
href="https://github.com/LF-Decentralized-Trust-labs/gitmesh"
22+
<a
23+
href="https://github.com/LF-Decentralized-Trust-labs/gitmesh"
24+
target="_blank"
25+
rel="noopener noreferrer"
1126
class="text-white/40 hover:text-white font-mono text-sm transition-colors"
1227
>
1328
GitHub
1429
</a>
15-
<a
16-
href="#"
30+
31+
<a
32+
href="https://github.com/LF-Decentralized-Trust-labs/gitmesh#readme"
33+
target="_blank"
34+
rel="noopener noreferrer"
1735
class="text-white/40 hover:text-white font-mono text-sm transition-colors"
1836
>
1937
Docs
2038
</a>
21-
<a
22-
href="https://github.com/LF-Decentralized-Trust-labs/gitmesh/blob/main/LICENSE"
39+
40+
<a
41+
href="https://github.com/LF-Decentralized-Trust-labs/gitmesh/blob/main/LICENSE"
42+
target="_blank"
43+
rel="noopener noreferrer"
2344
class="text-white/40 hover:text-white font-mono text-sm transition-colors"
2445
>
2546
License

frontend/src/components/landing/CommunityHero.vue

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
<section class="max-w-6xl mx-auto px-6 py-24">
33
<div class="max-w-3xl">
44
<!-- Title -->
5-
<h1 class="text-white font-sans text-5xl md:text-6xl font-black leading-tight tracking-tight">
5+
<h1
6+
class="text-white font-sans text-5xl md:text-6xl font-black leading-tight tracking-tight"
7+
>
68
GitMesh
79
<span class="block text-xl md:text-2xl font-medium text-white/70 mt-2">
810
Community Edition
@@ -11,39 +13,41 @@
1113

1214
<!-- Description -->
1315
<p class="mt-8 text-lg text-white/80 leading-relaxed">
14-
GitMesh is an open-source platform for building and operating
15-
decentralized trust infrastructure.
16+
GitMesh is an open-source Git collaboration platform designed to support
17+
maintainers and contributors working on decentralized trust
18+
infrastructure.
1619
</p>
1720

1821
<p class="mt-4 text-base text-white/70 leading-relaxed">
19-
The Community Edition is developed and maintained by contributors from
20-
multiple open-source organizations under the Linux Foundation
21-
Decentralized Trust Lab.
22+
The Community Edition is developed in the open and maintained by
23+
contributors from multiple open-source organizations under the Linux
24+
Foundation Decentralized Trust Lab.
2225
</p>
2326

2427
<p class="mt-4 text-base text-white/70 leading-relaxed">
2528
The Enterprise Edition is officially provided and supported by
26-
<span class="text-orange-500 font-medium">
27-
<a href="https://alveoli.app/" target="_blank" rel="noopener noreferrer">
28-
Alveoli
29-
</a>
30-
</span>.
29+
30+
<a
31+
href="https://alveoli.app/"
32+
target="_blank"
33+
rel="noopener noreferrer"
34+
>
35+
<span class="text-orange-500 font-medium"> Alveoli</span>
36+
</a>.
3137
</p>
3238

3339
<!-- CTAs -->
3440
<div class="mt-12 flex flex-wrap gap-4">
3541
<router-link
3642
to="/auth/signup"
37-
class="bg-orange-500 text-black px-8 py-3 font-mono text-sm font-semibold
38-
hover:bg-orange-400 transition-colors"
43+
class="bg-orange-500 text-black px-8 py-3 font-mono text-sm font-semibold hover:bg-orange-400 transition-colors"
3944
>
4045
Get Started
4146
</router-link>
4247

4348
<router-link
4449
to="/auth/signin"
45-
class="border border-white text-white px-8 py-3 font-mono text-sm font-semibold
46-
hover:bg-white hover:text-black transition-colors"
50+
class="border border-white text-white px-8 py-3 font-mono text-sm font-semibold hover:bg-white hover:text-black transition-colors"
4751
>
4852
Sign In
4953
</router-link>
@@ -57,18 +61,18 @@
5761
Open Governance
5862
</h3>
5963
<p class="text-sm text-white/70 leading-relaxed">
60-
Developed in the open with transparent governance and community-driven
61-
decision making.
64+
Developed through transparent, community-driven governance under the
65+
Linux Foundation Decentralized Trust Lab.
6266
</p>
6367
</div>
6468

6569
<div>
6670
<h3 class="font-mono text-base font-semibold text-white mb-2">
67-
Local & Self-Hosted
71+
Self-Hosted by Design
6872
</h3>
6973
<p class="text-sm text-white/70 leading-relaxed">
70-
Runs locally using your own infrastructure, APIs, and credentials.
71-
Your data stays under your control.
74+
Runs on infrastructure you control, using your own repositories,
75+
services, and credentials.
7276
</p>
7377
</div>
7478

@@ -77,13 +81,12 @@
7781
Apache 2.0 Licensed
7882
</h3>
7983
<p class="text-sm text-white/70 leading-relaxed">
80-
Permissive open-source licensing that enables modification,
81-
redistribution, and commercial use.
84+
Licensed under Apache 2.0, allowing use, modification, and
85+
redistribution.
8286
</p>
8387
</div>
8488
</div>
8589
</section>
8690
</template>
8791

88-
<script setup>
89-
</script>
92+
<script setup></script>

0 commit comments

Comments
 (0)