diff --git a/src/app/(with-header)/dashboard/page.tsx b/src/app/(with-header)/dashboard/page.tsx
new file mode 100644
index 0000000..2190c09
--- /dev/null
+++ b/src/app/(with-header)/dashboard/page.tsx
@@ -0,0 +1,3 @@
+export default function DashboardPage() {
+ return
+
setMenuOpen(false)} />
+
+
+
+
+
+
+ {ROUTES.map((route, i) =>
+
+ {!filter(route) ?
+ {route.name}
+
:
setMenuOpen(false)}
+ className={`text-2xl transition hover:text-secondary ${route === routeGroup ? 'font-bold' : 'font-semibold'}`}>
+ {route.name}
+ }
+
+ {route.routes?.filter(filter)?.map(subroute =>
+ setMenuOpen(false)}
+ className={`text-xl transition hover:text-secondary ${path.startsWith(subroute.url) ? 'font-semibold' : ''}`}>
+ {subroute.name}
+
+
)}
+
+
+ {i < ROUTES.length - 1 && }
+ )}
+
+
+
+
+ {user &&
+
+ }
+
+
+
+
+
+
+
+
+ {routeGroup.routes?.filter(filter).map(route =>
+
+ {route.name}
+ )
+ }
+
+ {routeGroup !== MAIN_ROUTES &&
+ {MAIN_ROUTES.routes.filter(filter).map(route =>
+ {route.name}
+ )}
+
}
+
+
+ {user &&
}
+
+
+
+
+
+
+ {children}
+
+
+ >)
+};
diff --git a/src/routes.ts b/src/routes.ts
new file mode 100644
index 0000000..5233be8
--- /dev/null
+++ b/src/routes.ts
@@ -0,0 +1,50 @@
+import { UserPayload } from '@/types/user';
+
+export type UserOnly = boolean | keyof UserPayload;
+
+type Subroute = {
+ url: string,
+ name: string,
+ userOnly?: UserOnly
+};
+
+type Route = {
+ url: string,
+ name: string,
+ title: string,
+ userOnly?: UserOnly,
+ routes: Subroute[]
+};
+
+export const MAIN_ROUTES: Route = {
+ url: '/',
+ name: "Actaeon",
+ title: 'Actaeon',
+ routes: [{
+ url: '/dashboard',
+ name: 'Overview'
+ }]
+};
+
+export const ROUTES: Route[] = [{
+ url: '/chuni',
+ name: 'Chunithm',
+ title: 'Chunithm',
+ userOnly: 'chuni',
+ routes: [{
+ url: '/chuni/dashboard',
+ name: 'Dashboard',
+ userOnly: 'chuni'
+ }, {
+ url: '/chuni/music',
+ name: 'Music List'
+ }, {
+ url: '/chuni/playlog',
+ name: 'Playlog',
+ userOnly: 'chuni'
+ }, {
+ url: '/chuni/userbox',
+ name: 'Userbox',
+ userOnly: 'chuni'
+ }]
+}, MAIN_ROUTES];