Skip to content

Commit 785d7ed

Browse files
committed
feat: notebook read from fs
1 parent dcd9db1 commit 785d7ed

File tree

4 files changed

+261
-122
lines changed

4 files changed

+261
-122
lines changed

public/apps/apps.json

Lines changed: 101 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,22 @@
1313
"icon": "KeyboardIcon",
1414
"created_at": "2025-11-10T14:00:00+03:00"
1515
},
16+
{
17+
"slug": "mastermind",
18+
"to": "/apps/mastermind",
19+
"title": "Mastermind",
20+
"description": "Play the classic code-breaking game of Mastermind (Bulls and Cows).",
21+
"icon": "PuzzlePieceIcon",
22+
"created_at": "2025-11-23T18:28:07+03:00"
23+
},
24+
{
25+
"slug": "nonogram",
26+
"to": "/apps/nonogram",
27+
"title": "Nonogram",
28+
"description": "Solve picture logic puzzles by filling cells according to numerical clues.",
29+
"icon": "GridFourIcon",
30+
"created_at": "2025-11-23T20:43:44+03:00"
31+
},
1632
{
1733
"slug": "card-game",
1834
"to": "/apps/card-game",
@@ -61,14 +77,7 @@
6177
"icon": "AtomIcon",
6278
"created_at": "2025-11-18T05:11:43+03:00"
6379
},
64-
{
65-
"slug": "mastermind",
66-
"to": "/apps/mastermind",
67-
"title": "Mastermind",
68-
"description": "Play the classic code-breaking game of Mastermind (Bulls and Cows).",
69-
"icon": "PuzzlePieceIcon",
70-
"created_at": "2025-11-23T18:28:07+03:00"
71-
},
80+
7281
{
7382
"slug": "word-ladder",
7483
"to": "/apps/word-ladder",
@@ -85,14 +94,6 @@
8594
"icon": "LightbulbFilamentIcon",
8695
"created_at": "2025-11-23T20:20:54+03:00"
8796
},
88-
{
89-
"slug": "nonogram",
90-
"to": "/apps/nonogram",
91-
"title": "Nonogram",
92-
"description": "Solve picture logic puzzles by filling cells according to numerical clues.",
93-
"icon": "GridFourIcon",
94-
"created_at": "2025-11-23T20:43:44+03:00"
95-
},
9697
{
9798
"slug": "whack-a-bug",
9899
"to": "/apps/whack-a-bug",
@@ -126,28 +127,20 @@
126127
"order": 2,
127128
"apps": [
128129
{
129-
"slug": "codename-generator",
130-
"to": "/apps/codename-generator",
131-
"title": "Codename Generator",
132-
"description": "Generate cool, spy-ish project names.",
133-
"icon": "ShieldCheckIcon",
134-
"created_at": "2025-11-09T03:48:19+03:00"
135-
},
136-
{
137-
"slug": "fantasy-name-generator",
138-
"to": "/apps/fantasy-name-generator",
139-
"title": "Fantasy Name Generator",
140-
"description": "Generate fantasy names for characters, places, and items.",
141-
"icon": "SparkleIcon",
142-
"created_at": "2025-11-07T20:00:38+03:00"
130+
"slug": "tcg-card-generator",
131+
"to": "/apps/tcg-card-generator",
132+
"title": "TCG Card Generator",
133+
"description": "Create your own custom TCG cards with this generator.",
134+
"icon": "CardsThreeIcon",
135+
"created_at": "2025-11-26T12:00:00+03:00"
143136
},
144137
{
145-
"slug": "picker-wheel",
146-
"to": "/apps/picker-wheel",
147-
"title": "Picker Wheel",
148-
"description": "A spinning wheel to pick a random winner from a list of entries.",
149-
"icon": "CircleDashedIcon",
150-
"created_at": "2025-11-09T02:43:25+03:00"
138+
"slug": "football-emblem-creator",
139+
"to": "/apps/football-emblem-creator",
140+
"title": "Football Emblem Creator",
141+
"description": "Create your own custom football team emblem.",
142+
"icon": "TrophyIcon",
143+
"created_at": "2025-11-25T18:00:00+03:00"
151144
},
152145
{
153146
"slug": "tournament-bracket",
@@ -157,6 +150,14 @@
157150
"icon": "ListNumbersIcon",
158151
"created_at": "2025-11-07T14:22:02+03:00"
159152
},
153+
{
154+
"slug": "picker-wheel",
155+
"to": "/apps/picker-wheel",
156+
"title": "Picker Wheel",
157+
"description": "A spinning wheel to pick a random winner from a list of entries.",
158+
"icon": "CircleDashedIcon",
159+
"created_at": "2025-11-09T02:43:25+03:00"
160+
},
160161
{
161162
"slug": "dice-roller",
162163
"to": "/apps/dice-roller",
@@ -165,6 +166,30 @@
165166
"icon": "DiceSixIcon",
166167
"created_at": "2025-11-07T20:18:31+03:00"
167168
},
169+
{
170+
"slug": "whiteboard",
171+
"to": "/apps/whiteboard",
172+
"title": "Whiteboard",
173+
"description": "A simple digital whiteboard for sketching and doodling.",
174+
"icon": "PencilSimpleIcon",
175+
"created_at": "2025-11-25T17:00:00+03:00"
176+
},
177+
{
178+
"slug": "codename-generator",
179+
"to": "/apps/codename-generator",
180+
"title": "Codename Generator",
181+
"description": "Generate cool, spy-ish project names.",
182+
"icon": "ShieldCheckIcon",
183+
"created_at": "2025-11-09T03:48:19+03:00"
184+
},
185+
{
186+
"slug": "fantasy-name-generator",
187+
"to": "/apps/fantasy-name-generator",
188+
"title": "Fantasy Name Generator",
189+
"description": "Generate fantasy names for characters, places, and items.",
190+
"icon": "SparkleIcon",
191+
"created_at": "2025-11-07T20:00:38+03:00"
192+
},
168193
{
169194
"slug": "excuse-generator",
170195
"to": "/apps/excuse-generator",
@@ -181,22 +206,6 @@
181206
"icon": "QuestionIcon",
182207
"created_at": "2025-11-18T03:48:58+03:00"
183208
},
184-
{
185-
"slug": "whiteboard",
186-
"to": "/apps/whiteboard",
187-
"title": "Whiteboard",
188-
"description": "A simple digital whiteboard for sketching and doodling.",
189-
"icon": "PencilSimpleIcon",
190-
"created_at": "2025-11-25T17:00:00+03:00"
191-
},
192-
{
193-
"slug": "football-emblem-creator",
194-
"to": "/apps/football-emblem-creator",
195-
"title": "Football Emblem Creator",
196-
"description": "Create your own custom football team emblem.",
197-
"icon": "TrophyIcon",
198-
"created_at": "2025-11-25T18:00:00+03:00"
199-
},
200209
{
201210
"slug": "banana-converter",
202211
"to": "/apps/banana-converter",
@@ -228,14 +237,6 @@
228237
"description": "Pop some virtual bubble wrap to relieve stress.",
229238
"icon": "CirclesFourIcon",
230239
"created_at": "2025-11-25T16:01:56+03:00"
231-
},
232-
{
233-
"slug": "tcg-card-generator",
234-
"to": "/apps/tcg-card-generator",
235-
"title": "TCG Card Generator",
236-
"description": "Create your own custom TCG cards with this generator.",
237-
"icon": "CardsThreeIcon",
238-
"created_at": "2025-11-26T12:00:00+03:00"
239240
}
240241
]
241242
},
@@ -245,6 +246,14 @@
245246
"icon": "MagicWandIcon",
246247
"order": 3,
247248
"apps": [
249+
{
250+
"slug": "color-palette-generator",
251+
"to": "/apps/color-palette-generator",
252+
"title": "Color Palette Generator",
253+
"description": "Generate random color palettes.",
254+
"icon": "PaletteIcon",
255+
"created_at": "2025-11-07T19:33:40+03:00"
256+
},
248257
{
249258
"slug": "json-generator",
250259
"to": "/apps/json-generator",
@@ -285,14 +294,6 @@
285294
"icon": "QrCodeIcon",
286295
"created_at": "2025-11-11T03:04:03+03:00"
287296
},
288-
{
289-
"slug": "color-palette-generator",
290-
"to": "/apps/color-palette-generator",
291-
"title": "Color Palette Generator",
292-
"description": "Generate random color palettes.",
293-
"icon": "PaletteIcon",
294-
"created_at": "2025-11-07T19:33:40+03:00"
295-
},
296297
{
297298
"slug": "lorem-ipsum-generator",
298299
"to": "/apps/lorem-ipsum-generator",
@@ -317,6 +318,14 @@
317318
"icon": "CodeIcon",
318319
"created_at": "2025-11-13T04:36:09+03:00"
319320
},
321+
{
322+
"slug": "morse-code-translator",
323+
"to": "/apps/morse-code-translator",
324+
"title": "Morse Code Translator",
325+
"description": "Translate text to Morse code and vice-versa, with audio playback.",
326+
"icon": "TranslateIcon",
327+
"created_at": "2025-11-23T18:16:28+03:00"
328+
},
320329
{
321330
"slug": "case-converter",
322331
"to": "/apps/case-converter",
@@ -356,14 +365,6 @@
356365
"description": "Convert between px, em, rem, vw, vh, and % units.",
357366
"icon": "RulerIcon",
358367
"created_at": "2025-11-07T19:47:38+03:00"
359-
},
360-
{
361-
"slug": "morse-code-translator",
362-
"to": "/apps/morse-code-translator",
363-
"title": "Morse Code Translator",
364-
"description": "Translate text to Morse code and vice-versa, with audio playback.",
365-
"icon": "TranslateIcon",
366-
"created_at": "2025-11-23T18:16:28+03:00"
367368
}
368369
]
369370
},
@@ -373,6 +374,14 @@
373374
"icon": "ToolboxIcon",
374375
"order": 5,
375376
"apps": [
377+
{
378+
"slug": "notepad",
379+
"to": "/apps/notepad",
380+
"title": "Notepad",
381+
"description": "A simple, distraction-free text editor.",
382+
"icon": "NotePencilIcon",
383+
"created_at": "2025-11-27T14:00:00+03:00"
384+
},
376385
{
377386
"slug": "image-toolkit",
378387
"to": "/apps/image-toolkit",
@@ -389,6 +398,22 @@
389398
"icon": "ArrowsInLineHorizontalIcon",
390399
"created_at": "2025-11-23T12:54:58+03:00"
391400
},
401+
{
402+
"slug": "stopwatch",
403+
"to": "/apps/stopwatch",
404+
"title": "Stopwatch",
405+
"description": "A simple stopwatch with lap functionality.",
406+
"icon": "TimerIcon",
407+
"created_at": "2025-11-23T17:30:23+03:00"
408+
},
409+
{
410+
"slug": "pomodoro-timer",
411+
"to": "/apps/pomodoro-timer",
412+
"title": "Pomodoro Timer",
413+
"description": "A simple and customizable Pomodoro timer to boost your productivity.",
414+
"icon": "TimerIcon",
415+
"created_at": "2025-11-23T18:11:03+03:00"
416+
},
392417
{
393418
"slug": "word-counter",
394419
"to": "/apps/word-counter",
@@ -429,37 +454,13 @@
429454
"icon": "ClockIcon",
430455
"created_at": "2025-11-18T03:40:32+03:00"
431456
},
432-
{
433-
"slug": "stopwatch",
434-
"to": "/apps/stopwatch",
435-
"title": "Stopwatch",
436-
"description": "A simple stopwatch with lap functionality.",
437-
"icon": "TimerIcon",
438-
"created_at": "2025-11-23T17:30:23+03:00"
439-
},
440-
{
441-
"slug": "pomodoro-timer",
442-
"to": "/apps/pomodoro-timer",
443-
"title": "Pomodoro Timer",
444-
"description": "A simple and customizable Pomodoro timer to boost your productivity.",
445-
"icon": "TimerIcon",
446-
"created_at": "2025-11-23T18:11:03+03:00"
447-
},
448457
{
449458
"slug": "bpm-guesser",
450459
"to": "/apps/bpm-guesser",
451460
"title": "BPM Guesser",
452461
"description": "Tap the beat to guess the BPM of a song.",
453462
"icon": "MetronomeIcon",
454463
"created_at": "2025-11-25T16:14:05+03:00"
455-
},
456-
{
457-
"slug": "notepad",
458-
"to": "/apps/notepad",
459-
"title": "Notepad",
460-
"description": "A simple, distraction-free text editor.",
461-
"icon": "NotePencilIcon",
462-
"created_at": "2025-11-27T14:00:00+03:00"
463464
}
464465
]
465466
}

0 commit comments

Comments
 (0)