Server Config
-      
Display this data all pretty, most things will be editable in the future, not now.
-      
-        {JSON.stringify(clients)}
+      
+        Display this data all pretty, most things will be editable in the
+        future, not now.
+      
+      
+        
+        
+        
+        
+        
+
+        {JSON.stringify(config)}
       
 
     
   );
+
+  function InstanceDetails() {
+    console.log(config)
+    if (!config) {
+      return null;
+    }
+    
+    const data = [
+      {
+        name: "Server name",
+        value: config.instanceDetails.name,
+      },
+      {
+        name: "Title",
+        value: config.instanceDetails.title,
+      },
+      {
+        name: "Summary",
+        value: config.instanceDetails.summary,
+      },
+      {
+        name: "Logo",
+        value: config.instanceDetails.logo.large,
+      },
+      {
+        name: "Tags",
+        value: config.instanceDetails.tags.join(", "),
+      },
+      {
+        name: "NSFW",
+        value: config.instanceDetails.nsfw.toString(),
+      },
+      {
+        name: "Shows in Owncast directory",
+        value: config.yp.enabled.toString(),
+      },
+    ];
+
+    const configData = [
+      {
+        name: "Stream key",
+        value: config.streamKey,
+      },
+      {
+        name: "ffmpeg path",
+        value: config.ffmpegPath,
+      },
+      {
+        name: "Web server port",
+        value: config.webServerPort,
+      },
+    ];
+
+    return (
+      <>
+        
+        
+      >
+    );
+  }
+
+   function SocialHandles() {
+    if (!config) {
+      return null;
+    }
+
+     const columns = [
+       {
+         title: "Platform",
+         dataIndex: "platform",
+         key: "platform",
+       },
+       {
+         title: "URL",
+         dataIndex: "url",
+         key: "url",
+         render: (url) => `
${url}`
+       },
+     ];
+
+     return (
+       
+     );
+   }
+  
+  function VideoVariants() {
+    if (!config) {
+      return null;
+    }
+
+    const videoQualityColumns = [
+      {
+        title: "Video bitrate",
+        dataIndex: "videoBitrate",
+        key: "videoBitrate",
+        render: (bitrate) =>
+          bitrate === 0 || !bitrate ? "Passthrough" : `${bitrate} kbps`,
+      },
+      {
+        title: "Framerate",
+        dataIndex: "framerate",
+        key: "framerate",
+      },
+      {
+        title: "Encoder preset",
+        dataIndex: "encoderPreset",
+        key: "framerate",
+      },
+      {
+        title: "Audio bitrate",
+        dataIndex: "audioBitrate",
+        key: "audioBitrate",
+        render: (bitrate) =>
+          bitrate === 0 || !bitrate ? "Passthrough" : `${bitrate} kbps`,
+      },
+    ];
+
+    const miscVideoSettingsColumns = [
+      {
+        title: "Name",
+        dataIndex: "name",
+        key: "name",
+      },
+      {
+        title: "Value",
+        dataIndex: "value",
+        key: "value",
+      },
+    ];
+
+    const miscVideoSettings = [
+      {
+        name: "Segment length",
+        value: config.videoSettings.segmentLengthSeconds,
+      },
+      {
+        name: "Number of segments",
+        value: config.videoSettings.numberOfPlaylistItems,
+      },
+    ];
+
+    return (
+      
+        
Video configuration
+        
+
+        
+      
+    );
+  }
+
+  
+  function PageContent() {
+        if (!config) {
+          return null;
+        }
+
+    return (
+      
+        
Page content
+        
+      
+    );
+  }
+
+  function Storage() {
+    if (!config) {
+      return null;
+    }
+
+    const data = [
+      {
+        name: "Enabled",
+        value: config.s3.enabled.toString(),
+      },
+      {
+        name: "Endpoint",
+        value: config.s3.endpoint,
+      },
+      {
+        name: "Access Key",
+        value: config.s3.accessKey,
+      },
+      {
+        name: "Secret",
+        value: config.s3.secret,
+      },
+      {
+        name: "Bucket",
+        value: config.s3.bucket,
+      },
+      {
+        name: "Region",
+        value: config.s3.region,
+      },
+    ];
+
+    return 
+  }
+
+  function KeyValueTable({ title, data }) {
+        const columns = [
+      {
+        title: "Name",
+        dataIndex: "name",
+        key: "name",
+      },
+      {
+        title: "Value",
+        dataIndex: "value",
+        key: "value",
+      },
+        ];
+    
+    return (
+          
)
+  
+  }
+
 }
+
diff --git a/web/pages/viewer-info.tsx b/web/pages/viewer-info.tsx
index c545506ce6..7e5a482bd7 100644
--- a/web/pages/viewer-info.tsx
+++ b/web/pages/viewer-info.tsx
@@ -44,7 +44,7 @@ export default function ViewersOverTime() {
     return "no info";
   }
 
-  const timeFormatter = (tick) => {return timeFormat('%H:%M:%S')(new Date(tick));};
+  const timeFormatter = (tick) => {return timeFormat('%H:%M')(new Date(tick));};
 
   const CustomizedTooltip = (props) => {
     const { active, payload, label } = props;