diff --git a/app/changelog/page.tsx b/app/changelog/page.tsx
new file mode 100644
index 00000000..7d48a439
--- /dev/null
+++ b/app/changelog/page.tsx
@@ -0,0 +1,133 @@
+import { GitHubIcon } from '@/components/icons'
+import { Badge, Heading, Text } from "@/components/ui";
+import { CHANGELOG_ENTRIES } from "@/lib/changelog-data";
+import { Metadata } from "next";
+import { Header } from "@/components/header";
+import { FooterSmall } from "@/components/footer-small";
+import { getFullUrl } from '@/lib/constants';
+
+
+export const metadata: Metadata = {
+ title: "Changelog | GSoC Orgs",
+ description: "Stay up to date with the latest features, improvements, and fixes for GSoC Orgs.",
+ alternates: {
+ canonical: getFullUrl("/changelog"),
+ },
+};
+
+export default function ChangelogPage() {
+
+ const sortedEntries = [...CHANGELOG_ENTRIES].sort((a, b) => b.timeStamp - a.timeStamp);
+
+ // Helper to parse [Text](URL) into Teal Links
+ const formatChangelogText = (text: string) => {
+ const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
+ const parts = [];
+ let lastIndex = 0;
+ let match;
+
+ while ((match = linkRegex.exec(text)) !== null) {
+ if (match.index > lastIndex) {
+ parts.push(text.substring(lastIndex, match.index));
+ }
+ parts.push(
+
+ {match[1]}
+
+ );
+ lastIndex = linkRegex.lastIndex;
+ }
+
+ if (lastIndex < text.length) {
+ parts.push(text.substring(lastIndex));
+ }
+
+ return parts.length > 0 ? parts : text;
+ };
+
+ return (
+ <>
+
+
+
+
+ Changelog
+ The latest updates and improvements.
+
+
+
+ {/* The Timeline Line */}
+
+
+ {sortedEntries.map((entry) => (
+
+
+ {/* Left Column: Date & Version */}
+
+
+
+
+ {entry.version}
+
+
+
+
+
+ {/* Right Column: Content */}
+
+
+ {entry.title}
+ {entry.summary}
+
+
+
+ {entry.changes.map((change, i) => (
+ -
+
+ {formatChangelogText(change.text)}
+
+ ))}
+
+
+ {/* Mobile PR Link */}
+
+
+
+ ))}
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/components/footer-common.tsx b/components/footer-common.tsx
index 0c5edaad..be82f36d 100644
--- a/components/footer-common.tsx
+++ b/components/footer-common.tsx
@@ -134,6 +134,10 @@ export const FOOTER_NAVIGATION_ITEMS = [
title: "Terms and Conditions",
href: "/terms-and-conditions",
},
+ {
+ title: "Changelog",
+ href: "/changelog",
+ },
// {
// title: "Blog",
// href: "/blog",
diff --git a/lib/changelog-data.ts b/lib/changelog-data.ts
new file mode 100644
index 00000000..5d9a5546
--- /dev/null
+++ b/lib/changelog-data.ts
@@ -0,0 +1,51 @@
+export interface ChangelogEntry {
+ date: string,
+ timeStamp: number,
+ version: string,
+ title: string,
+ summary: string,
+ prLinks: { link: string, number: string }[],
+ changes: {
+ type: 'feat' | 'fix' | 'docs' | 'style' | 'refactor' | 'perf' | 'test' | 'chore',
+ text: string
+ }[],
+
+}
+export const CHANGELOG_ENTRIES: ChangelogEntry[] = [
+ {
+ date: "Jan 29, 2026",
+ timeStamp: 20260129,
+ version: "v1.1.0",
+ title: "Dark Mode & UI Stabilization",
+ summary: "Refined the dashboard's visual hierarchy by introducing a refined color system and fixing high-contrast issues in dark mode.",
+ prLinks: [
+ { link: "https://github.com/...", number: "#1" },
+ { link: "https://github.com/...", number: "#2" },
+ { link: "https://github.com/...", number: "#3" },
+ ],
+
+ changes: [
+ { type: 'fix', text: 'Sidebar background now correctly renders black in dark mode' },
+ { type: 'feat', text: 'Added new [filtering system](https://github.com/...) for better organization discovery.' },
+ { type: 'refactor', text: 'Standardized border variables across all card components' }
+ ]
+ },
+ {
+ date: "Feb 15, 2026",
+ timeStamp: 20260215,
+ version: "v1.1.0",
+ title: "Dark Mode & UI Stabilization",
+ summary: "Refined the dashboard's visual hierarchy by introducing a refined color system and fixing high-contrast issues in dark mode.",
+ prLinks: [
+ { link: "https://github.com/...", number: "#3" },
+ { link: "https://github.com/...", number: "#4" },
+ { link: "https://github.com/...", number: "#5" },
+ { link: "https://github.com/...", number: "#6" },
+ ],
+ changes: [
+ { type: 'fix', text: 'Sidebar background now correctly renders black in dark mode' },
+ { type: 'feat', text: ' Added new [filtering system](https://github.com/...) for better organization discovery.' },
+ { type: 'refactor', text: 'Standardized border variables across all card components' }
+ ]
+ }
+];
\ No newline at end of file