Skip to content

Commit 52309c2

Browse files
committed
feat(apps): add Chladni Plate resonance visualizer
1 parent fd641cd commit 52309c2

4 files changed

Lines changed: 798 additions & 0 deletions

File tree

public/apps/apps.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,14 @@
456456
"icon": "MagicWandIcon",
457457
"order": 3,
458458
"apps": [
459+
{
460+
"slug": "chladni-plate",
461+
"to": "/apps/chladni-plate",
462+
"title": "Chladni Plate",
463+
"description": "Vibrate a square plate at modal frequencies and watch sand settle along the nodal lines.",
464+
"icon": "WaveformIcon",
465+
"created_at": "2026-05-02T12:00:00+03:00"
466+
},
459467
{
460468
"slug": "quote-generator",
461469
"to": "/apps/quote-generator",

src/components/AnimatedRoutes.jsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ const TierForgePage = lazy(() => import('../pages/apps/TierForgePage'));
197197
const QuadtreeSimulationPage = lazy(
198198
() => import('../pages/apps/QuadtreeSimulationPage'),
199199
);
200+
const ChladniPlatePage = lazy(
201+
() => import('../pages/apps/ChladniPlatePage'),
202+
);
200203
const FezGlyphPage = lazy(() => import('../pages/apps/FezGlyphPage'));
201204
const GokturkishConverterPage = lazy(
202205
() => import('../pages/apps/GokturkishConverterPage'),
@@ -1437,6 +1440,22 @@ const AnimatedRoutes = ({
14371440
</motion.div>
14381441
}
14391442
/>
1443+
<Route
1444+
path="/apps/chladni-plate"
1445+
element={
1446+
<motion.div
1447+
initial="initial"
1448+
animate="in"
1449+
exit="out"
1450+
variants={pageVariants}
1451+
transition={pageTransition}
1452+
>
1453+
<Suspense fallback={<Loading />}>
1454+
<ChladniPlatePage />
1455+
</Suspense>
1456+
</motion.div>
1457+
}
1458+
/>
14401459
<Route
14411460
path="/apps::brew"
14421461
element={<Navigate to="/apps/brew-master" replace />}

0 commit comments

Comments
 (0)