MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
Site personnel johan-chan.fr — articles, séries, devlogs sur le craft et l'IA
Translation pending
MediaTypeScript · AstroGitHub @johan-chan-devOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A space for thinking out loud about software craft in the age of AI — articles, series, and devlogs, in French and English.
Ce que je pense. Ce que j'apprends.
• Live: https://www.johan-chan.fr
• Deployment: GitHub Actions → GitHub Pages (static, fully pre-rendered)Read the full README ↗A space for thinking out loud about software craft in the age of AI — articles, series, and devlogs, in French and English.
Ce que je pense. Ce que j'apprends.
adapter-static + Svelte 5 runes^20.19.0 or >=22.12.0 — see .nvmrc)autumn / abyss)/en/ planned).svx content with embedded Svelte components.md content rendering├── apps/web/ # SvelteKit app (@johan-chan/web)
├── packages/content/ # Content + schema (@johan-chan/content)
├── turbo.json
└── pnpm-workspace.yaml
pnpm install
pnpm dev # start all apps via Turbo
# or
pnpm dev:web # start only the web app
All commands run from the repo root.
# Dev / build
pnpm dev # turbo: dev
pnpm build # turbo: build
pnpm dev:web # apps/web only
pnpm build:web # apps/web only
# Quality
pnpm check:web # svelte-check
pnpm lint # prettier + eslint (via turbo)
pnpm format # prettier --write (apps/web)
# Tests
pnpm test:unit # vitest (apps/web)
pnpm test:e2e # playwright (apps/web)
Content types live under packages/content/:
| Type | Folder | Notes |
|---|---|---|
article | articles/ | Long-form articles |
série | series/ | Multi-part series (parent + chapters) |
devlog | devlogs/ | Development logs |
post | posts/ | Short-form posts |
Each item is a folder containing meta.json, a content file, and optional images/. type and slug are inferred from the folder path — they are not stored in meta.json.
Two rendering paths, selected per item by which content file exists:
content.md — plain markdown, rendered at runtime by marked + shiki. Default.content.svx — markdown with Svelte components, compiled by mdsvex at build time. Used when interactive elements are needed. Components are auto-injected under the C namespace (e.g. <C.Callout>).Full details: apps/web/docs/rendering-pipeline.md.
published | preview | Behavior |
|---|---|---|
true | absent | Public |
true | true | Pre-rendered, hidden from feed, accessible via ?preview=<key> |
false | absent | Not pre-rendered → 404 |
Preview access is controlled by the PUBLIC_PREVIEW_KEY env var.
/ Homepage (Activity Feed)
/articles Articles list
/articles/[slug] Article detail
/series Series grouped view
/series/[series] Series detail
/series/[series]/[chapter] Chapter detail
/devlogs Devlogs grouped view
/devlogs/[slug] Devlog detail
/about About page
/call Unlisted booking page (Cal.com embed, not in nav)
/sitemap.xml Dynamic sitemap
FR is served at / via Paraglide URL rewriting in hooks.ts. EN (/en/) is planned but not yet configured — only the fr locale exists.
A custom Vite plugin (apps/web/vite-plugins/content-images.ts) handles content images:
/@content-images/{typeDir}/{slug}/{filename}xs/sm/md/lg) with sharp, emits to static/images/ with content hashes, writes .image-manifest.jsonPush to main triggers .github/workflows/deploy.yml:
pnpm install + turbo build with cacheapps/web/build uploaded to GitHub PagesManual build:
pnpm turbo run build --filter=@johan-chan/web
# → apps/web/build/
Aligned with Le Foyer du Craft — my ongoing practice around software craft: