diff --git a/striker-ui/components/Display.tsx b/striker-ui/components/Display.tsx
new file mode 100644
index 00000000..0c2f5495
--- /dev/null
+++ b/striker-ui/components/Display.tsx
@@ -0,0 +1,12 @@
+import { Panel } from './Panels';
+import { HeaderText } from './Text';
+
+const Display = (): JSX.Element => {
+ return (
+
+
+
+ );
+};
+
+export default Display;
diff --git a/striker-ui/components/Domain.tsx b/striker-ui/components/Domain.tsx
new file mode 100644
index 00000000..c25ff26e
--- /dev/null
+++ b/striker-ui/components/Domain.tsx
@@ -0,0 +1,12 @@
+import { Panel } from './Panels';
+import { HeaderText } from './Text';
+
+const Domain = (): JSX.Element => {
+ return (
+
+
+
+ );
+};
+
+export default Domain;
diff --git a/striker-ui/components/Resource.tsx b/striker-ui/components/Resource.tsx
new file mode 100644
index 00000000..52816d41
--- /dev/null
+++ b/striker-ui/components/Resource.tsx
@@ -0,0 +1,12 @@
+import { Panel } from './Panels';
+import { HeaderText } from './Text';
+
+const Resource = (): JSX.Element => {
+ return (
+
+
+
+ );
+};
+
+export default Resource;
diff --git a/striker-ui/pages/server.tsx b/striker-ui/pages/server.tsx
new file mode 100644
index 00000000..fe917cf3
--- /dev/null
+++ b/striker-ui/pages/server.tsx
@@ -0,0 +1,72 @@
+import { Box } from '@material-ui/core';
+import { makeStyles } from '@material-ui/core/styles';
+
+import CPU from '../components/CPU';
+import Memory from '../components/Memory';
+import Resource from '../components/Resource';
+import PeriodicFetch from '../lib/fetchers/periodicFetch';
+import Display from '../components/Display';
+import Header from '../components/Header';
+import Domain from '../components/Domain';
+
+const useStyles = makeStyles((theme) => ({
+ child: {
+ width: '22%',
+ height: '100%',
+ [theme.breakpoints.down('lg')]: {
+ width: '25%',
+ },
+ [theme.breakpoints.down('md')]: {
+ width: '100%',
+ },
+ },
+ server: {
+ width: '35%',
+ [theme.breakpoints.down('lg')]: {
+ width: '25%',
+ },
+ [theme.breakpoints.down('md')]: {
+ width: '100%',
+ },
+ },
+ container: {
+ display: 'flex',
+ flexDirection: 'row',
+ width: '100%',
+ justifyContent: 'space-between',
+ [theme.breakpoints.down('md')]: {
+ display: 'block',
+ },
+ },
+}));
+
+const Home = (): JSX.Element => {
+ const classes = useStyles();
+
+ const { data } = PeriodicFetch(
+ `${process.env.NEXT_PUBLIC_API_URL}/anvils/get_anvils`,
+ );
+
+ return (
+ <>
+
+ {data?.anvils && (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )}
+ >
+ );
+};
+
+export default Home;