Skip to content

Commit 4fefc70

Browse files
committed
feat: data metric app
1 parent 76bfee3 commit 4fefc70

File tree

3 files changed

+501
-1
lines changed

3 files changed

+501
-1
lines changed

public/apps/apps.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,14 @@
407407
"description": "Generative stream visualizer using technical symbol protocols and procedural noise fields.",
408408
"icon": "WindIcon",
409409
"created_at": "2025-12-20T18:00:00+03:00"
410+
},
411+
{
412+
"slug": "data-prism",
413+
"to": "/apps/data-prism",
414+
"title": "Data Prism",
415+
"description": "Transform raw datasets into high-fidelity Bauhaus visualizations and technical diagrams.",
416+
"icon": "GraphIcon",
417+
"created_at": "2026-01-18T18:00:00+03:00"
410418
}
411419
]
412420
},

src/components/AnimatedRoutes.jsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ const PosterLoomPage = lazy(() => import('../pages/apps/PosterLoomPage'));
108108
const MagazinerPage = lazy(() => import('../pages/apps/MagazinerPage'));
109109
const WallpaperEnginePage = lazy(() => import('../pages/apps/WallpaperEnginePage'));
110110
const SymbolFlowPage = lazy(() => import('../pages/apps/SymbolFlowPage'));
111+
const DataPrismPage = lazy(() => import('../pages/apps/DataPrismPage'));
111112
const JsMasterclassPage = lazy(() => import('../pages/apps/JsMasterclassPage'));
112113
const TierForgePage = lazy(() => import('../pages/apps/TierForgePage'));
113114
const FezGlyphPage = lazy(() => import('../pages/apps/FezGlyphPage'));
@@ -1117,7 +1118,6 @@ const AnimatedRoutes = ({
11171118
path="/apps::pat"
11181119
element={<Navigate to="/apps/pattern-generator" replace />}
11191120
/>
1120-
{/* End of hardcoded redirects */}
11211121
<Route
11221122
path="/apps::code"
11231123
element={<Navigate to="/apps/codeblock-creator" replace />}
@@ -1126,6 +1126,11 @@ const AnimatedRoutes = ({
11261126
path="/apps::stego"
11271127
element={<Navigate to="/apps/steganography" replace />}
11281128
/>
1129+
<Route
1130+
path="/apps::metrics"
1131+
element={<Navigate to="/apps/data-prism" replace />}
1132+
/>
1133+
{/* End of hardcoded redirects */}
11291134
<Route
11301135
path="/apps/steganography"
11311136
element={
@@ -1142,6 +1147,22 @@ const AnimatedRoutes = ({
11421147
</motion.div>
11431148
}
11441149
/>
1150+
<Route
1151+
path="/apps/data-prism"
1152+
element={
1153+
<motion.div
1154+
initial="initial"
1155+
animate="in"
1156+
exit="out"
1157+
variants={pageVariants}
1158+
transition={pageTransition}
1159+
>
1160+
<Suspense fallback={<Loading />}>
1161+
<DataPrismPage />
1162+
</Suspense>
1163+
</motion.div>
1164+
}
1165+
/>
11451166
<Route
11461167
path="/apps/aether"
11471168
element={

0 commit comments

Comments
 (0)