website
git clone https://git.pyrossh.dev/website
木 Personal website of pyrossh. Built with astrojs, shiki, vite.
af5a5b2
— pyrossh
2026-07-07T11:26:41+05:30
feat: scaffold monorepo with shared config package
- .gitignore +1 -1
- package.json +2 -0
- packages/shared/config/package.json +8 -0
- packages/shared/config/src/index.ts +132 -0
- packages/shared/config/tsconfig.json +4 -0
- pnpm-lock.yaml +36 -8
- pnpm-workspace.yaml +4 -0
- tsconfig.base.json +16 -0
.gitignore
CHANGED
|
@@ -58,4 +58,4 @@ dist-ssr
|
|
|
58
58
|
*.sw?
|
|
59
59
|
target
|
|
60
60
|
.wrangler
|
|
61
|
-
repos/
|
|
61
|
+
repos/*
|
package.json
CHANGED
|
@@ -28,12 +28,14 @@
|
|
|
28
28
|
"remark-rehype": "^11.1.2",
|
|
29
29
|
"spamscanner": "^6.1.5",
|
|
30
30
|
"timeago.js": "^4.0.2",
|
|
31
|
+
"typed-htmx": "^0.3.1",
|
|
31
32
|
"unified": "^11.0.5"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@astrojs/check": "^0.9.9",
|
|
35
36
|
"@astrojs/rss": "^4.0.18",
|
|
36
37
|
"@astrojs/sitemap": "^3.7.2",
|
|
38
|
+
"@cloudflare/workers-types": "^5.20260706.1",
|
|
37
39
|
"@iconify-json/material-symbols": "^1.2.39",
|
|
38
40
|
"@iconify-json/mdi": "^1.2.3",
|
|
39
41
|
"@iconify-json/vscode-icons": "^1.2.36",
|
packages/shared/config/package.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pyrossh/config",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.ts",
|
|
7
|
+
"types": "src/index.ts"
|
|
8
|
+
}
|
packages/shared/config/src/index.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export const SITE_TITLE = "pyrossh";
|
|
2
|
+
export const SITE_DESCRIPTION = "Welcome to my website!";
|
|
3
|
+
export const REPOS = [
|
|
4
|
+
{
|
|
5
|
+
title: "rust-embed",
|
|
6
|
+
description:
|
|
7
|
+
"rust macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.",
|
|
8
|
+
tags: ["rust", "proc-macro", "http"],
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
title: "website",
|
|
12
|
+
description: "木 Personal website of pyrossh. Built with astrojs, shiki, vite.",
|
|
13
|
+
tags: ["astro", "js", "html", "css"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
title: "plum",
|
|
17
|
+
description: "A statically typed, imperative programming language inspired by rust, python",
|
|
18
|
+
tags: ["treesitter", "compiler", "wasm"],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
title: "edge-city",
|
|
22
|
+
description:
|
|
23
|
+
"edge-city is a next level meta-framework for react that runs only on edge runtimes",
|
|
24
|
+
tags: ["react", "js", "ssr"],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
title: "gromer",
|
|
28
|
+
description:
|
|
29
|
+
"gromer is a framework and cli to build multipage web apps in golang using htmx and alpinejs.",
|
|
30
|
+
tags: ["golang", "htmx", "ssr"],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: "atoms-element",
|
|
34
|
+
description:
|
|
35
|
+
"A simple web component library for defining your custom elements. It works on both client and server.",
|
|
36
|
+
tags: ["js"],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "atoms-state",
|
|
40
|
+
description: "Simple State management for react",
|
|
41
|
+
tags: ["js", "react", "flux"],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "remote-monitor",
|
|
45
|
+
description: "Remote Monitoring and Control using GSM-SMS",
|
|
46
|
+
tags: ["c++", "teensy", "arduino"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: "only-bible-app",
|
|
50
|
+
description:
|
|
51
|
+
"The only bible app you will ever need. No ads. No in-app purchases. No distractions.",
|
|
52
|
+
tags: ["kotlin", "android", "ios"],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: "gdx-studio",
|
|
56
|
+
description:
|
|
57
|
+
"An IDE for creating Games using libgdx and Java supported on all platforms Android, iOS, Desktop",
|
|
58
|
+
tags: ["libgdx", "java", "desktop"],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
title: "rp2350",
|
|
62
|
+
description: "code to drive rp2350",
|
|
63
|
+
tags: ["zig", "raspberry-pi"],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
title: "config",
|
|
67
|
+
description: "Common configuration",
|
|
68
|
+
tags: ["brew", "nushell"],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: "sabel-ide",
|
|
72
|
+
description: "sabel-ide",
|
|
73
|
+
tags: ["python", "qt"],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
title: "tide-jsx",
|
|
77
|
+
description: "Tide + JSX",
|
|
78
|
+
tags: ["rust", "proc-macro", "jsx"],
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
export const TOOLS = [
|
|
82
|
+
{
|
|
83
|
+
name: "Stats",
|
|
84
|
+
link: "https://github.com/exelban/stats",
|
|
85
|
+
image: "/assets/logos/stats.png",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: "Void",
|
|
89
|
+
link: "https://github.com/voideditor/void",
|
|
90
|
+
image: "/assets/logos/void.png",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "Helix",
|
|
94
|
+
link: "https://github.com/helix-editor/helix",
|
|
95
|
+
image: "/assets/logos/helix.png",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "Nushell",
|
|
99
|
+
link: "https://github.com/nushell/nushell",
|
|
100
|
+
image: "/assets/logos/nu.png",
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "Ghostty",
|
|
104
|
+
link: "https://github.com/ghostty-org/ghostty",
|
|
105
|
+
image: "/assets/logos/ghostty.png",
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: "Zellij",
|
|
109
|
+
link: "https://zellij.dev/",
|
|
110
|
+
image: "/assets/logos/zellij.png",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "Zen",
|
|
114
|
+
link: "https://github.com/zen-browser/desktop",
|
|
115
|
+
image: "/assets/logos/zen.svg",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: "Bruno",
|
|
119
|
+
link: "https://github.com/usebruno/bruno",
|
|
120
|
+
image: "/assets/logos/bruno.png",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "Secretive",
|
|
124
|
+
link: "https://github.com/maxgoedjen/secretive",
|
|
125
|
+
image: null,
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
export const NAV_ITEMS = [
|
|
129
|
+
{ href: "/cv", label: "cv" },
|
|
130
|
+
{ href: "/posts", label: "posts" },
|
|
131
|
+
] as const;
|
|
132
|
+
export const SITE_URL = "https://pyrossh.dev";
|
packages/shared/config/tsconfig.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../../tsconfig.base.json",
|
|
3
|
+
"include": ["src"]
|
|
4
|
+
}
|
pnpm-lock.yaml
CHANGED
|
@@ -221,7 +221,7 @@ importers:
|
|
|
221
221
|
version: 1.2.0
|
|
222
222
|
'@astrojs/cloudflare':
|
|
223
223
|
specifier: ^13.5.0
|
|
224
|
-
version: 13.7.0(@types/[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])
|
|
224
|
+
version: 13.7.0(@types/[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected](@cloudflare/[email protected]))([email protected])
|
|
225
225
|
astro:
|
|
226
226
|
specifier: 6.3.1
|
|
227
227
|
version: 6.3.1(@types/[email protected])([email protected])([email protected])([email protected])
|
|
@@ -261,6 +261,9 @@ importers:
|
|
|
261
261
|
timeago.js:
|
|
262
262
|
specifier: ^4.0.2
|
|
263
263
|
version: 4.0.2
|
|
264
|
+
typed-htmx:
|
|
265
|
+
specifier: ^0.3.1
|
|
266
|
+
version: 0.3.1
|
|
264
267
|
unified:
|
|
265
268
|
specifier: ^11.0.5
|
|
266
269
|
version: 11.0.5
|
|
@@ -274,6 +277,9 @@ importers:
|
|
|
274
277
|
'@astrojs/sitemap':
|
|
275
278
|
specifier: ^3.7.2
|
|
276
279
|
version: 3.7.3
|
|
280
|
+
'@cloudflare/workers-types':
|
|
281
|
+
specifier: ^5.20260706.1
|
|
282
|
+
version: 5.20260706.1
|
|
277
283
|
'@iconify-json/material-symbols':
|
|
278
284
|
specifier: ^1.2.39
|
|
279
285
|
version: 1.2.82
|
|
@@ -309,7 +315,9 @@ importers:
|
|
|
309
315
|
version: https://codeload.github.com/vscode-icons/vscode-icons/tar.gz/e4668f9a6cd557cfa4c2546a2449b66a8bb66ddb
|
|
310
316
|
wrangler:
|
|
311
317
|
specifier: ^4.105.0
|
|
312
|
-
version: 4.107.0
|
|
318
|
+
version: 4.107.0(@cloudflare/[email protected])
|
|
319
|
+
|
|
320
|
+
packages/shared/config: {}
|
|
313
321
|
|
|
314
322
|
packages:
|
|
315
323
|
|
|
@@ -471,6 +479,9 @@ packages:
|
|
|
471
479
|
cpu: [x64]
|
|
472
480
|
os: [win32]
|
|
473
481
|
|
|
482
|
+
'@cloudflare/[email protected]':
|
|
483
|
+
resolution: {integrity: sha512-PdGrKyJMmKjrZs6xPN/LYN2zpKo9bgn8Iq3JLYho1/76t0HEfUYnssgUljqFxQYPzH4SZ8wsIThaGHmW5GZkLg==}
|
|
484
|
+
|
|
474
485
|
'@colors/[email protected]':
|
|
475
486
|
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
|
|
476
487
|
engines: {node: '>=0.1.90'}
|
|
@@ -5077,6 +5088,14 @@ packages:
|
|
|
5077
5088
|
|
|
5078
5089
|
resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
|
|
5079
5090
|
|
|
5091
|
|
|
5092
|
+
resolution: {integrity: sha512-JKCM9zTfPDuPqQqdGZBWSEiItShliKkBFg5c6yOR8zth43v763XkAzTWaOlVqc0Y6p9ee8AaAbipGfUnCsYZUA==}
|
|
5093
|
+
engines: {node: '>=12'}
|
|
5094
|
+
|
|
5095
|
|
|
5096
|
+
resolution: {integrity: sha512-6WSPsukTIOEMsVbx5wzgVSvldLmgBUVcFIm2vJlBpRPtcbDOGC5y1IYrCWNX1yUlNsrv1Ngcw4gGM8jsPyNV7w==}
|
|
5097
|
+
engines: {node: '>=12'}
|
|
5098
|
+
|
|
5080
5099
|
|
|
5081
5100
|
resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==}
|
|
5082
5101
|
|
|
@@ -5664,16 +5683,16 @@ snapshots:
|
|
|
5664
5683
|
- prettier
|
|
5665
5684
|
- prettier-plugin-astro
|
|
5666
5685
|
|
|
5667
|
-
'@astrojs/[email protected](@types/[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected])([email protected])':
|
|
5686
|
+
'@astrojs/[email protected](@types/[email protected])([email protected](@types/[email protected])([email protected])([email protected])([email protected]))([email protected])([email protected])([email protected](@cloudflare/[email protected]))([email protected])':
|
|
5668
5687
|
dependencies:
|
|
5669
5688
|
'@astrojs/internal-helpers': 0.10.0
|
|
5670
5689
|
'@astrojs/underscore-redirects': 1.0.3
|
|
5671
|
-
'@cloudflare/vite-plugin': 1.43.0([email protected](@types/[email protected])([email protected])([email protected]))([email protected])([email protected])
|
|
5690
|
+
'@cloudflare/vite-plugin': 1.43.0([email protected](@types/[email protected])([email protected])([email protected]))([email protected])([email protected](@cloudflare/[email protected]))
|
|
5672
5691
|
astro: 6.3.1(@types/[email protected])([email protected])([email protected])([email protected])
|
|
5673
5692
|
piccolore: 0.1.3
|
|
5674
5693
|
tinyglobby: 0.2.17
|
|
5675
5694
|
vite: 7.3.6(@types/[email protected])([email protected])([email protected])
|
|
5676
|
-
wrangler: 4.107.0
|
|
5695
|
+
wrangler: 4.107.0(@cloudflare/[email protected])
|
|
5677
5696
|
transitivePeerDependencies:
|
|
5678
5697
|
- '@types/node'
|
|
5679
5698
|
- bufferutil
|
|
@@ -5839,13 +5858,13 @@ snapshots:
|
|
|
5839
5858
|
optionalDependencies:
|
|
5840
5859
|
workerd: 1.20260701.1
|
|
5841
5860
|
|
|
5842
|
-
'@cloudflare/[email protected]([email protected](@types/[email protected])([email protected])([email protected]))([email protected])([email protected])':
|
|
5861
|
+
'@cloudflare/[email protected]([email protected](@types/[email protected])([email protected])([email protected]))([email protected])([email protected](@cloudflare/[email protected]))':
|
|
5843
5862
|
dependencies:
|
|
5844
5863
|
'@cloudflare/unenv-preset': 2.16.1([email protected])([email protected])
|
|
5845
5864
|
miniflare: 4.20260701.0
|
|
5846
5865
|
unenv: 2.0.0-rc.24
|
|
5847
5866
|
vite: 7.3.6(@types/[email protected])([email protected])([email protected])
|
|
5848
|
-
wrangler: 4.107.0
|
|
5867
|
+
wrangler: 4.107.0(@cloudflare/[email protected])
|
|
5849
5868
|
ws: 8.21.0
|
|
5850
5869
|
transitivePeerDependencies:
|
|
5851
5870
|
- bufferutil
|
|
@@ -5867,6 +5886,8 @@ snapshots:
|
|
|
5867
5886
|
'@cloudflare/[email protected]':
|
|
5868
5887
|
optional: true
|
|
5869
5888
|
|
|
5889
|
+
'@cloudflare/[email protected]': {}
|
|
5890
|
+
|
|
5870
5891
|
'@colors/[email protected]':
|
|
5871
5892
|
optional: true
|
|
5872
5893
|
|
|
@@ -10651,6 +10672,12 @@ snapshots:
|
|
|
10651
10672
|
|
|
10652
10673
|
|
|
10653
10674
|
|
|
10675
|
+
[email protected]: {}
|
|
10676
|
+
|
|
10677
|
|
|
10678
|
+
dependencies:
|
|
10679
|
+
typed-html: 3.0.1
|
|
10680
|
+
|
|
10654
10681
|
|
|
10655
10682
|
|
|
10656
10683
|
|
|
@@ -11066,7 +11093,7 @@ snapshots:
|
|
|
11066
11093
|
'@cloudflare/workerd-linux-arm64': 1.20260701.1
|
|
11067
11094
|
'@cloudflare/workerd-windows-64': 1.20260701.1
|
|
11068
11095
|
|
|
11069
|
|
|
11096
|
+
[email protected](@cloudflare/[email protected]):
|
|
11070
11097
|
dependencies:
|
|
11071
11098
|
'@cloudflare/kv-asset-handler': 0.5.0
|
|
11072
11099
|
'@cloudflare/unenv-preset': 2.16.1([email protected])([email protected])
|
|
@@ -11077,6 +11104,7 @@ snapshots:
|
|
|
11077
11104
|
unenv: 2.0.0-rc.24
|
|
11078
11105
|
workerd: 1.20260701.1
|
|
11079
11106
|
optionalDependencies:
|
|
11107
|
+
'@cloudflare/workers-types': 5.20260706.1
|
|
11080
11108
|
fsevents: 2.3.3
|
|
11081
11109
|
transitivePeerDependencies:
|
|
11082
11110
|
- bufferutil
|
pnpm-workspace.yaml
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
packages:
|
|
2
|
+
- "packages/shared/*"
|
|
3
|
+
- "packages/workers/**"
|
|
4
|
+
|
|
1
5
|
catalog:
|
|
2
6
|
vite: ^7.3.6
|
|
3
7
|
vite-plus: ^0.2.2
|
tsconfig.base.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"jsx": "react-jsx",
|
|
7
|
+
"jsxImportSource": "typed-htmx/typed-html",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"isolatedModules": true,
|
|
13
|
+
"noEmit": true,
|
|
14
|
+
"types": ["@cloudflare/workers-types"]
|
|
15
|
+
}
|
|
16
|
+
}
|