diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js
index 241da7085c..7728a4cf36 100644
--- a/docs/docusaurus.config.js
+++ b/docs/docusaurus.config.js
@@ -101,6 +101,11 @@ const config = {
             position: 'right',
             label: 'Docs',
           },
+          {
+            to: '/milestones',
+            position: 'right',
+            label: 'Milestones',
+          },
           {
             to: '/docs/api',
             position: 'right',
diff --git a/docs/package-lock.json b/docs/package-lock.json
index 81dd021c03..df2ff7ebf2 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -10,6 +10,8 @@
       "dependencies": {
         "@docusaurus/core": "^2.4.3",
         "@docusaurus/preset-classic": "^2.4.3",
+        "@mdi/js": "^7.3.67",
+        "@mdi/react": "^1.6.1",
         "@mdx-js/react": "^1.6.22",
         "autoprefixer": "^10.4.13",
         "classnames": "^2.3.2",
@@ -2862,6 +2864,19 @@
       "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
+    "node_modules/@mdi/js": {
+      "version": "7.3.67",
+      "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.3.67.tgz",
+      "integrity": "sha512-MnRjknFqpTC6FifhGHjZ0+QYq2bAkZFQqIj8JA2AdPZbBxUvr8QSgB2yPAJ8/ob/XkR41xlg5majDR3c1JP1hw=="
+    },
+    "node_modules/@mdi/react": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.6.1.tgz",
+      "integrity": "sha512-4qZeDcluDFGFTWkHs86VOlHkm6gnKaMql13/gpIcUQ8kzxHgpj31NuCkD8abECVfbULJ3shc7Yt4HJ6Wu6SN4w==",
+      "dependencies": {
+        "prop-types": "^15.7.2"
+      }
+    },
     "node_modules/@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
@@ -16932,6 +16947,19 @@
       "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
+    "@mdi/js": {
+      "version": "7.3.67",
+      "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.3.67.tgz",
+      "integrity": "sha512-MnRjknFqpTC6FifhGHjZ0+QYq2bAkZFQqIj8JA2AdPZbBxUvr8QSgB2yPAJ8/ob/XkR41xlg5majDR3c1JP1hw=="
+    },
+    "@mdi/react": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/@mdi/react/-/react-1.6.1.tgz",
+      "integrity": "sha512-4qZeDcluDFGFTWkHs86VOlHkm6gnKaMql13/gpIcUQ8kzxHgpj31NuCkD8abECVfbULJ3shc7Yt4HJ6Wu6SN4w==",
+      "requires": {
+        "prop-types": "^15.7.2"
+      }
+    },
     "@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
diff --git a/docs/package.json b/docs/package.json
index ffab7f7be9..19c972fbb2 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -19,6 +19,8 @@
   "dependencies": {
     "@docusaurus/core": "^2.4.3",
     "@docusaurus/preset-classic": "^2.4.3",
+    "@mdi/js": "^7.3.67",
+    "@mdi/react": "^1.6.1",
     "@mdx-js/react": "^1.6.22",
     "autoprefixer": "^10.4.13",
     "classnames": "^2.3.2",
diff --git a/docs/src/components/timeline.tsx b/docs/src/components/timeline.tsx
new file mode 100644
index 0000000000..2925736034
--- /dev/null
+++ b/docs/src/components/timeline.tsx
@@ -0,0 +1,86 @@
+import React from 'react';
+import Icon from '@mdi/react';
+import { mdiCheckboxMarkedCircleOutline } from '@mdi/js';
+import useIsBrowser from '@docusaurus/useIsBrowser';
+
+export interface Item {
+  icon: string;
+  title: string;
+  description?: string;
+  release: string;
+  tag?: string;
+  date: Date;
+}
+
+interface Props {
+  items: Item[];
+}
+
+export default function Timeline({ items }: Props): JSX.Element {
+  const isBrowser = useIsBrowser();
+
+  return (
+    <ul className="flex flex-col pl-4">
+      {items.map((item, index) => {
+        const isFirst = index === 0;
+        const isLast = index === items.length - 1;
+
+        const classNames: string[] = [];
+
+        if (isFirst) {
+          classNames.push('');
+        }
+
+        if (isLast) {
+          classNames.push('rounded rounded-b-full');
+        }
+
+        return (
+          <li key={index} className="flex min-h-24 w-[700px] max-w-[90vw]">
+            <div className="md:flex justify-start w-36 mr-8 items-center dark:text-immich-dark-primary text-immich-primary hidden">
+              {isBrowser ? item.date.toLocaleDateString(navigator.language) : ''}
+            </div>
+            <div className={`${isFirst && 'relative top-[50%]'} ${isLast && 'relative bottom-[50%]'}`}>
+              <div
+                className={`h-full border-solid border-4 border-immich-primary dark:border-immich-dark-primary ${
+                  isFirst && 'rounded rounded-t-full'
+                } ${isLast && 'rounded rounded-b-full'}`}
+              ></div>
+            </div>
+            <div className="z-10 flex items-center bg-immich-primary dark:bg-immich-dark-primary border-2 border-solid rounded-full dark:text-black text-white relative top-[50%] left-[-3px] translate-y-[-50%] translate-x-[-50%] w-8 h-8 shadow-lg ">
+              <Icon path={mdiCheckboxMarkedCircleOutline} size={1.25} />
+            </div>
+            <section className=" dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl flex flex-col w-full gap-2 p-4 ml-4 my-2 hover:bg-immich-primary/10 dark:hover:bg-immich-dark-primary/10 transition-all">
+              <div className="m-0 text-lg flex w-full items-center justify-between gap-2">
+                <p className="m-0 items-start flex gap-2">
+                  <Icon path={item.icon} size={1} />
+                  <span>{item.title}</span>
+                </p>
+
+                <span className="dark:text-immich-dark-primary text-immich-primary">
+                  {item.tag ? (
+                    <a
+                      href={`https://github.com/immich-app/immich/releases/tag/${item.tag}`}
+                      target="_blank"
+                      rel="noopener"
+                    >
+                      [{item.release}]{' '}
+                    </a>
+                  ) : (
+                    <span>
+                      [{item.release} {isBrowser ? item.date.toLocaleDateString(navigator.language) : ''}]
+                    </span>
+                  )}
+                </span>
+              </div>
+              <div className="md:hidden text-xs">
+                Release Date - {isBrowser ? item.date.toLocaleDateString(navigator.language) : ''}
+              </div>
+              <p className="m-0 text-sm text-gray-600 dark:text-gray-300">{item.description}</p>
+            </section>
+          </li>
+        );
+      })}
+    </ul>
+  );
+}
diff --git a/docs/src/pages/markdown-page.md b/docs/src/pages/markdown-page.md
deleted file mode 100644
index 9756c5b668..0000000000
--- a/docs/src/pages/markdown-page.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: Markdown page example
----
-
-# Markdown page example
-
-You don't need React to write simple standalone pages.
diff --git a/docs/src/pages/milestones.tsx b/docs/src/pages/milestones.tsx
new file mode 100644
index 0000000000..673c7251d1
--- /dev/null
+++ b/docs/src/pages/milestones.tsx
@@ -0,0 +1,509 @@
+import {
+  mdiAccountGroup,
+  mdiAndroid,
+  mdiAppleIos,
+  mdiArchiveOutline,
+  mdiBookSearchOutline,
+  mdiCheckAll,
+  mdiCheckboxMarked,
+  mdiCollage,
+  mdiDevices,
+  mdiFaceMan,
+  mdiFaceManOutline,
+  mdiFile,
+  mdiFileSearch,
+  mdiFolder,
+  mdiHeart,
+  mdiImage,
+  mdiImageAlbum,
+  mdiImageMultipleOutline,
+  mdiImageSearch,
+  mdiKeyboardSettingsOutline,
+  mdiMagnify,
+  mdiMap,
+  mdiMaterialDesign,
+  mdiMerge,
+  mdiMonitor,
+  mdiMotionPlayOutline,
+  mdiPanVertical,
+  mdiPartyPopper,
+  mdiRaw,
+  mdiRotate360,
+  mdiSecurity,
+  mdiServer,
+  mdiShareAll,
+  mdiShareCircle,
+  mdiStar,
+  mdiTag,
+  mdiText,
+  mdiThemeLightDark,
+  mdiTrashCanOutline,
+  mdiVideo,
+  mdiWeb,
+} from '@mdi/js';
+import Layout from '@theme/Layout';
+import React from 'react';
+import Timeline, { Item } from '../components/timeline';
+
+const items: Item[] = [
+  {
+    icon: mdiTrashCanOutline,
+    title: 'Trash Feature',
+    description: 'Trash, restore from trash, and automatically empty the recycle bin after 30 days.',
+    release: 'v1.82.0',
+    tag: 'v1.82.0',
+    date: new Date(2023, 9, 17),
+  },
+  {
+    icon: mdiBookSearchOutline,
+    title: 'External Libraries',
+    description: 'Automatically import media into Immich based on imports paths and ignore patterns.',
+    release: 'v1.79.0',
+    tag: 'v1.79.0',
+    date: new Date(2023, 8, 21),
+  },
+  {
+    icon: mdiMap,
+    title: 'Map View (Mobile)',
+    description: 'Heat map implementation in the mobile app.',
+    release: 'v1.76.0',
+    tag: 'v1.76.0',
+    date: new Date(2023, 7, 29),
+  },
+  {
+    icon: mdiFile,
+    title: 'Configuration File',
+    description: 'Auto-configure an Immich installation via a configuration file.',
+    release: 'v1.75.0',
+    tag: 'v1.75.0',
+    date: new Date(2023, 7, 26),
+  },
+  {
+    icon: mdiMonitor,
+    title: 'Slideshow Mode (Web)',
+    description: 'Start a full-screen slideshow from an Album on the web.',
+    release: 'v1.75.0',
+    tag: 'v1.75.0',
+    date: new Date(2023, 7, 26),
+  },
+  {
+    icon: mdiServer,
+    title: 'Hardware Transcoding',
+    description: 'Support hardware acceleration (QuickSync, VAAPI, and Nvidia) for video transcoding.',
+    release: 'v1.72.0',
+    tag: 'v1.72.0',
+    date: new Date(2023, 7, 6),
+  },
+  {
+    icon: mdiImageAlbum,
+    title: 'View Albums via Time Buckets',
+    description: 'Upgrade albums to use time buckets, an optimized virtual viewport.',
+    release: 'v1.72.0',
+    tag: 'v1.72.0',
+    date: new Date(2023, 7, 6),
+  },
+  {
+    icon: mdiImageAlbum,
+    title: 'Album Description',
+    description: 'Save an album description.',
+    release: 'v1.72.0',
+    tag: 'v1.72.0',
+    date: new Date(2023, 7, 6),
+  },
+  {
+    icon: mdiRotate360,
+    title: '360° Photos (Web)',
+    description: 'View 360° Photos on the web.',
+    release: 'v1.71.0',
+    tag: 'v1.71.0',
+    date: new Date(2023, 6, 29),
+  },
+  {
+    icon: mdiMotionPlayOutline,
+    title: 'Android Motion Photos',
+    description: 'Add support for Android Motion Photos.',
+    release: 'v1.69.0',
+    tag: 'v1.69.0',
+    date: new Date(2023, 6, 23),
+  },
+  {
+    icon: mdiFaceManOutline,
+    title: 'Show/Hide Faces',
+    description: 'Add the options to show or hide faces.',
+    release: 'v1.68.0',
+    tag: 'v1.68.0',
+    date: new Date(2023, 6, 20),
+  },
+  {
+    icon: mdiMerge,
+    title: 'Merge Faces',
+    description: 'Add the ability to merge multiple faces together.',
+    release: 'v1.67.0',
+    tag: 'v1.67.0',
+    date: new Date(2023, 6, 14),
+  },
+  {
+    icon: mdiImage,
+    title: 'Feature Photo',
+    description: 'Add the option to change the feature photo for a person.',
+    release: 'v1.66.0',
+    tag: 'v1.66.0',
+    date: new Date(2023, 6, 4),
+  },
+  {
+    icon: mdiKeyboardSettingsOutline,
+    title: 'Multi-Select via SHIFT',
+    description: 'Add the option to multi-select while holding SHIFT.',
+    release: 'v1.66.0',
+    tag: 'v1.66.0',
+    date: new Date(2023, 6, 4),
+  },
+  {
+    icon: mdiImageMultipleOutline,
+    title: 'Memories (Mobile)',
+    description: 'View "On this day..." memories in the mobile app.',
+    release: 'v1.65.0',
+    tag: 'v1.65.0',
+    date: new Date(2023, 5, 30),
+  },
+  {
+    icon: mdiFaceMan,
+    title: 'Facial Recognition (Mobile)',
+    description: 'View detected faces in the mobile app.',
+    release: 'v1.63.0',
+    tag: 'v1.63.0',
+    date: new Date(2023, 5, 24),
+  },
+  {
+    icon: mdiImageMultipleOutline,
+    title: 'Memories (Web)',
+    description: 'View pictures taken in past years on this day on the web.',
+    release: 'v1.61.0',
+    tag: 'v1.61.0',
+    date: new Date(2023, 5, 16),
+  },
+  {
+    icon: mdiCollage,
+    title: 'Justified Layout (Web)',
+    description: 'Implement justified layout (collage) on the web.',
+    release: 'v1.61.0',
+    tag: 'v1.61.0',
+    date: new Date(2023, 5, 16),
+  },
+  {
+    icon: mdiRaw,
+    title: 'RAW File Formats',
+    description: 'Support for RAW file formats.',
+    release: 'v1.61.0',
+    tag: 'v1.61.0',
+    date: new Date(2023, 5, 16),
+  },
+  {
+    icon: mdiShareAll,
+    title: 'Partner Sharing (Mobile)',
+    description: 'View shared partner photos in the mobile app.',
+    release: 'v1.58.0',
+    tag: 'v1.58.0',
+    date: new Date(2023, 4, 28),
+  },
+  {
+    icon: mdiFile,
+    title: 'XMP Sidecar',
+    description: 'Attach XMP Sidecar files to assets.',
+    release: 'v1.58.0',
+    tag: 'v1.58.0',
+    date: new Date(2023, 4, 28),
+  },
+  {
+    icon: mdiFolder,
+    title: 'Custom Storage Label',
+    description: 'Replace the user UUID in the storage template with a custom label.',
+    release: 'v1.57.0',
+    tag: 'v1.57.0',
+    date: new Date(2023, 4, 23),
+  },
+  {
+    icon: mdiShareCircle,
+    title: 'Partner Sharing',
+    description: 'Share your entire collection with another user.',
+    release: 'v1.56.0',
+    tag: 'v1.56.0',
+    date: new Date(2023, 4, 18),
+  },
+  {
+    icon: mdiFaceMan,
+    title: 'Facial Recognition',
+    description: 'Detect faces in pictures and cluster them together as people, which can be named.',
+    release: 'v1.56.0',
+    tag: 'v1.56.0',
+    date: new Date(2023, 4, 18),
+  },
+  {
+    icon: mdiMap,
+    title: 'Map View (Web)',
+    description: 'View a global map, with clusters of photos based on corresponding GPS data.',
+    release: 'v1.55.0',
+    tag: 'v1.55.0',
+    date: new Date(2023, 4, 9),
+  },
+  {
+    icon: mdiDevices,
+    title: 'Manage Auth Devices',
+    description: 'Manage logged-in devices and revoke access from User Settings.',
+    release: 'v1.55.0',
+    tag: 'v1.55.0',
+    date: new Date(2023, 4, 9),
+  },
+  {
+    icon: mdiStar,
+    description: 'Reach 10K Starts on GitHub!',
+    title: '10,000 Stars',
+    release: 'v1.54.0',
+    tag: 'v1.54.0',
+    date: new Date(2023, 3, 18),
+  },
+  {
+    icon: mdiText,
+    title: 'Asset Descriptions',
+    description: 'Save an asset description',
+    release: 'v1.54.0',
+    tag: 'v1.54.0',
+    date: new Date(2023, 3, 18),
+  },
+  {
+    icon: mdiArchiveOutline,
+    title: 'Archiving',
+    description: 'Remove assets from the main timeline by archiving them.',
+    release: 'v1.54.0',
+    tag: 'v1.54.0',
+    date: new Date(2023, 3, 18),
+  },
+  {
+    icon: mdiDevices,
+    title: 'Responsive Web App',
+    description: 'Optimize the web app for small screen.',
+    release: 'v1.54.0',
+    tag: 'v1.54.0',
+    date: new Date(2023, 3, 18),
+  },
+  {
+    icon: mdiFileSearch,
+    title: 'Search By Metadata',
+    description: 'Search images by filename, description, tagged people, make, model, and other metadata.',
+    release: 'v1.52.0',
+    tag: 'v1.52.0',
+    date: new Date(2023, 2, 29),
+  },
+  {
+    icon: mdiImageSearch,
+    title: 'CLIP Search',
+    description: 'Search images with free-form text like "Sunset at the beach".',
+    release: 'v1.51.0',
+    tag: 'v1.51.0',
+    date: new Date(2023, 2, 20),
+  },
+  {
+    icon: mdiMagnify,
+    title: 'Explore Page',
+    description: 'View tagged places, object, and people.',
+    release: 'v1.51.0',
+    tag: 'v1.51.0',
+    date: new Date(2023, 2, 20),
+  },
+  {
+    icon: mdiAppleIos,
+    title: 'iOS Background Uploads',
+    description: 'Automatically backup pictures in the background on iOS.',
+    release: 'v1.48.0',
+    tag: 'v1.48.0',
+    date: new Date(2023, 1, 21),
+  },
+  {
+    icon: mdiMotionPlayOutline,
+    title: 'Auto-Link Live Photos',
+    description: 'Automatically link live photos, even when uploaded as separate files.',
+    release: 'v1.48.0',
+    tag: 'v1.48.0',
+    date: new Date(2023, 2, 21),
+  },
+  {
+    icon: mdiMaterialDesign,
+    title: 'Material Design 3 (Mobile)',
+    description: 'Upgrade the mobile app to Material Design 3.',
+    release: 'v1.47.0',
+    tag: 'v1.47.0',
+    date: new Date(2023, 1, 13),
+  },
+  {
+    icon: mdiHeart,
+    title: 'Favorites (Mobile)',
+    description: 'Show favorites on the mobile app.',
+    release: 'v1.46.0',
+    tag: 'v1.46.0',
+    date: new Date(2023, 1, 9),
+  },
+  {
+    icon: mdiPartyPopper,
+    title: 'Immich Turns 1',
+    description: 'Immich is officially one year old.',
+    release: 'v1.43.0',
+    tag: 'v1.43.0',
+    date: new Date(2023, 0, 27),
+  },
+  {
+    icon: mdiHeart,
+    title: 'Favorites Page (Web)',
+    description: 'Favorite and view favorites on the web.',
+    release: 'v1.43.0',
+    tag: 'v1.43.0',
+    date: new Date(2023, 0, 27),
+  },
+  {
+    icon: mdiShareCircle,
+    title: 'Public Share Links',
+    description: 'Share photos and albums publicly via a shared link.',
+    release: 'v1.41.0',
+    tag: 'v1.41.1_64-dev',
+    date: new Date(2023, 0, 10),
+  },
+  {
+    icon: mdiFolder,
+    title: 'User-Defined Storage Structure',
+    description: 'Support custom storage structures.',
+    release: 'v1.39.0',
+    tag: 'v1.39.0_61-dev',
+    date: new Date(2022, 11, 19),
+  },
+  {
+    icon: mdiMotionPlayOutline,
+    title: 'iOS Live Photos',
+    description: 'Backup and display iOS Live Photos.',
+    release: 'v1.36.0',
+    tag: 'v1.36.0_55-dev',
+    date: new Date(2022, 10, 20),
+  },
+  {
+    icon: mdiSecurity,
+    title: 'OAuth Integration',
+    description: 'Support OAuth2 and OIDC capable identity providers.',
+    release: 'v1.36.0',
+    tag: 'v1.36.0_55-dev',
+    date: new Date(2022, 10, 20),
+  },
+  {
+    icon: mdiWeb,
+    title: 'Documentation Site',
+    description: 'Release an official documentation website.',
+    release: 'v1.33.1',
+    tag: 'v1.33.0_52-dev',
+    date: new Date(2022, 9, 26),
+  },
+  {
+    icon: mdiThemeLightDark,
+    title: 'Dark Mode (Web)',
+    description: 'Dark mode on the web.',
+    release: 'v1.32.0',
+    tag: ' v1.32.0_50-dev',
+    date: new Date(2022, 9, 14),
+  },
+  {
+    icon: mdiPanVertical,
+    title: 'Virtual Scrollbar (Web)',
+    description: 'View the main timeline with a virtual scrollbar, allowing to jump to any point in time, instantly.',
+    release: 'v1.27.0',
+    tag: 'v1.27.0_37-dev',
+    date: new Date(2022, 8, 6),
+  },
+  {
+    icon: mdiCheckAll,
+    title: 'Checksum Duplication Check',
+    description: 'Enforce per user sha1 checksum uniqueness.',
+    release: 'v1.27.0',
+    tag: 'v1.27.0_37-dev',
+    date: new Date(2022, 8, 6),
+  },
+  {
+    icon: mdiAndroid,
+    title: 'Android Background Backup',
+    description: 'Automatic backup in the background on Android.',
+    release: 'v1.24.0',
+    tag: 'v1.24.0_34-dev',
+    date: new Date(2022, 7, 19),
+  },
+  {
+    icon: mdiAccountGroup,
+    title: 'Admin Portal',
+    description: 'Manage users and admin settings from the web.',
+    release: 'v1.10.0',
+    tag: 'v1.10.0_15-dev',
+    date: new Date(2022, 4, 29),
+  },
+  {
+    icon: mdiShareCircle,
+    title: 'Album Sharing',
+    description: 'Share albums with other users.',
+    release: 'v1.7.0',
+    tag: 'v1.7.0_11-dev ',
+    date: new Date(2022, 3, 24),
+  },
+  {
+    icon: mdiTag,
+    title: 'Image Tagging',
+    description: 'Tag images with custom values.',
+    release: 'v1.7.0',
+    tag: 'v1.7.0_11-dev ',
+    date: new Date(2022, 3, 24),
+  },
+  {
+    icon: mdiImage,
+    title: 'View Exif',
+    description: 'View metadata about assets.',
+    release: 'v1.3.0',
+    tag: 'V1.3.0-dev ',
+    date: new Date(2022, 2, 22),
+  },
+  {
+    icon: mdiCheckboxMarked,
+    title: 'Multi Select',
+    description: 'Select and execute actions on multiple assets at the same time.',
+    release: 'v1.2.0',
+    tag: 'V0.2-dev ',
+    date: new Date(2022, 1, 8),
+  },
+  {
+    icon: mdiVideo,
+    title: 'Video Player',
+    description: 'Play videos in the web and on mobile.',
+    release: 'v1.2.0',
+    tag: 'v0.2-dev ',
+    date: new Date(2022, 1, 8),
+  },
+  {
+    icon: mdiPartyPopper,
+    title: 'First Commit',
+    description: 'First commit on GitHub, Immich is born.',
+    release: 'v1.0.0',
+    date: new Date(2022, 2, 3),
+  },
+];
+
+export default function MilestonePage(): JSX.Element {
+  return (
+    <Layout title="Milestones" description="History of Immich">
+      <section className="my-8">
+        <h1 className="md:text-6xl text-center mb-10 text-immich-primary dark:text-immich-dark-primary">
+          Major Milestones
+        </h1>
+        <p className="text-center text-xl">
+          A list of project achievements and milestones, <br />
+          by release date.
+        </p>
+        <div className="flex row justify-around mt-8">
+          <div className="flex max-w-full ">
+            <Timeline items={items} />
+          </div>
+        </div>
+      </section>
+    </Layout>
+  );
+}