Skip to content

Commit d89e188

Browse files
committed
feat: new apps
1 parent 4b9867c commit d89e188

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

public/apps/apps.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,14 @@
703703
"description": "Transform text into the cryptic Fezcodex symbolic cipher.",
704704
"icon": "PenNibIcon",
705705
"created_at": "2025-12-28T12:00:00+03:00"
706+
},
707+
{
708+
"slug": "gokturkish-converter",
709+
"to": "/apps/gokturkish-converter",
710+
"title": "Göktürk Converter",
711+
"description": "Convert text between Latin and Göktürk (Orkhon) script.",
712+
"icon": "TranslateIcon",
713+
"created_at": "2026-01-28T12:00:00+03:00"
706714
}
707715
]
708716
},
@@ -853,6 +861,14 @@
853861
"description": "The ultimate Zero to Hero JavaScript and Node.js course.",
854862
"icon": "CodeIcon",
855863
"created_at": "2025-12-25T12:00:00+03:00"
864+
},
865+
{
866+
"slug": "csv-flashcards",
867+
"to": "/apps/csv-flashcards",
868+
"title": "Flashcard Forge",
869+
"description": "Study tool. Load custom flashcards via CSV for memory recall.",
870+
"icon": "CardsIcon",
871+
"created_at": "2026-01-28T14:00:00+03:00"
856872
}
857873
]
858874
}

src/components/AnimatedRoutes.jsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,11 @@ const WallpaperEnginePage = lazy(() => import('../pages/apps/WallpaperEnginePage
111111
const SymbolFlowPage = lazy(() => import('../pages/apps/SymbolFlowPage'));
112112
const DataPrismPage = lazy(() => import('../pages/apps/DataPrismPage'));
113113
const JsMasterclassPage = lazy(() => import('../pages/apps/JsMasterclassPage'));
114+
const CsvFlashcardsPage = lazy(() => import('../pages/apps/CsvFlashcardsPage'));
114115
const ColorTheoryPage = lazy(() => import('../pages/apps/ColorTheoryPage'));
115116
const TierForgePage = lazy(() => import('../pages/apps/TierForgePage'));
116117
const FezGlyphPage = lazy(() => import('../pages/apps/FezGlyphPage'));
118+
const GokturkishConverterPage = lazy(() => import('../pages/apps/GokturkishConverterPage'));
117119
const AssetConstructorPage = lazy(() => import('../pages/apps/AssetConstructorPage'));
118120
const PatternGeneratorPage = lazy(() => import('../pages/apps/PatternGeneratorPage'));
119121
const CodeblockCreatorPage = lazy(() => import('../pages/apps/CodeblockCreatorPage'));
@@ -1169,6 +1171,10 @@ const AnimatedRoutes = ({
11691171
path="/apps::fg"
11701172
element={<Navigate to="/apps/fezglyph" replace />}
11711173
/>
1174+
<Route
1175+
path="/apps::gokturk"
1176+
element={<Navigate to="/apps/gokturkish-converter" replace />}
1177+
/>
11721178
<Route
11731179
path="/apps::pat"
11741180
element={<Navigate to="/apps/pattern-generator" replace />}
@@ -2508,6 +2514,22 @@ const AnimatedRoutes = ({
25082514
</motion.div>
25092515
}
25102516
/>
2517+
<Route
2518+
path="/apps/csv-flashcards"
2519+
element={
2520+
<motion.div
2521+
initial="initial"
2522+
animate="in"
2523+
exit="out"
2524+
variants={pageVariants}
2525+
transition={pageTransition}
2526+
>
2527+
<Suspense fallback={<Loading />}>
2528+
<CsvFlashcardsPage />
2529+
</Suspense>
2530+
</motion.div>
2531+
}
2532+
/>
25112533
<Route
25122534
path="/apps/fezglyph"
25132535
element={
@@ -2524,6 +2546,22 @@ const AnimatedRoutes = ({
25242546
</motion.div>
25252547
}
25262548
/>
2549+
<Route
2550+
path="/apps/gokturkish-converter"
2551+
element={
2552+
<motion.div
2553+
initial="initial"
2554+
animate="in"
2555+
exit="out"
2556+
variants={pageVariants}
2557+
transition={pageTransition}
2558+
>
2559+
<Suspense fallback={<Loading />}>
2560+
<GokturkishConverterPage />
2561+
</Suspense>
2562+
</motion.div>
2563+
}
2564+
/>
25272565
<Route
25282566
path="/apps/lorem-ipsum-generator"
25292567
element={

0 commit comments

Comments
 (0)