{"id":24037094,"url":"https://github.com/whatphilipcodes/dox","last_synced_at":"2026-05-06T15:37:27.333Z","repository":{"id":270972963,"uuid":"912006708","full_name":"whatphilipcodes/dox","owner":"whatphilipcodes","description":"simple approach to documentation websites","archived":false,"fork":false,"pushed_at":"2025-02-22T19:40:06.000Z","size":1482,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T20:26:32.808Z","etag":null,"topics":["documentation","static-site"],"latest_commit_sha":null,"homepage":"https://dox.whatphilipdoes.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/whatphilipcodes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-04T12:53:42.000Z","updated_at":"2025-02-22T19:37:46.000Z","dependencies_parsed_at":"2025-01-04T13:50:32.988Z","dependency_job_id":"c20cc456-3551-4981-b3f8-1dc16db950b3","html_url":"https://github.com/whatphilipcodes/dox","commit_stats":null,"previous_names":["whatphilipcodes/dox"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whatphilipcodes%2Fdox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whatphilipcodes%2Fdox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whatphilipcodes%2Fdox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/whatphilipcodes%2Fdox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/whatphilipcodes","download_url":"https://codeload.github.com/whatphilipcodes/dox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240801612,"owners_count":19859813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","static-site"],"created_at":"2025-01-08T19:37:56.984Z","updated_at":"2026-05-06T15:37:27.328Z","avatar_url":"https://github.com/whatphilipcodes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003e\u003cimg src=\"./public/favicon.svg\" alt=\"logo\" width=\"80\" align=\"center\"/\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;dox\u003c/h1\u003e\n\nSimple template to create documentation-style static websites from .md(x) files.\nMore in-depth information can be found [here](https://dox.whatphilipdoes.com/log/04-dox-release/).\n\nFeatures:\n\n- Markdown and MDX as content source\n- Prebuilt Routes\n  - Home\n  - Development Log\n  - Download\n  - Roadmap\n- FTP Deployment already set up\n  - directly via script\n  - workflow for GitHub Actions\n- Syntax highlighting in code blocks courtesy of [`Expressive Code`](https://expressive-code.com/)\n\n---\n\nBased on [Astro's](https://astro.build/) [Blog Example](https://stackblitz.com/github/withastro/astro/tree/latest/examples/blog), the docs are built using [React](https://react.dev/), [Vite](https://vitejs.dev/), [MDX](https://mdxjs.com/), and [Tailwind CSS](https://tailwindcss.com/). Refer to respective documentations for more information.\n\nCertain architectural decisions (eg. tags) have taken strong inspiration from [astro-erudite](https://github.com/jktrn/astro-erudite) which I stumbled across after starting dox. If you are looking for a more comprehensive blogging template make sure to check that out as well.\n\n---\n\n### known issues\n\n- [ ] HMR issues with `tailwindcss v4` and `vite`\n  - Since tailwind v4 changed the way the vite integration worked I have been having issues with HMR. My nested CSS import structure (not ideal but the easiest way to style Markdown content coming from Astro) HMR stopped working completely requiring a full dev server restart. Since that is not acceptable for styling where iterating through a lot of versions is necessary I restructured the tailwind and CSS imports in a way that works with HMR. This however introduces some console errors that come up when changing CSS files during dev server runtime:\n    - Laden fehlgeschlagen für das Modul mit der Quelle \"url/to/changed/file.css\".\n    - [vite] TypeError: error loading dynamically imported module: url/to/changed/file.css\n    - [vite] Failed to reload path/to/changed/file.css. This could be due to syntax errors or importing non-existent modules. (see errors above)\n    - Source-Map-Fehler: request failed with status 404\n      Ressourcen-Adresse: useless/url\n      Source-Map-Adresse: installHook.js.map\n    - Source-Map-Fehler: can't access property \"sources\", map is undefined\n      Ressourcen-Adresse: useless/url\n      Source-Map-Adresse: react_devtools_backend_compact.js.map\n  - while this is annoying to look at this way HMR does work and for the time being this seems to be a fair compromise.\n- [x] `fixed` : ~~Tailwindcss v4 and Expressive Code~~\n  - Expressive Code briefly generates CSS that Tailwind tries to parse. When Tailwind encounters those transient files, it can trigger a path error. This causes occasional failures until the generated file no longer exists or is excluded from scanning.\n  - Error:\n    ```\n    Astro detected an unhandled rejection. Here's the stack trace:\n    TypeError [ERR_INVALID_ARG_VALUE]: The argument 'path' must be a string, Uint8Array, or URL without null bytes. Received '/Users/philip/Documents/Repos/dox/\\x00/_astro/ec.1zj23.css'\n      at Object.stat (node:internal/fs/promises:1038:18)\n      at C.addBuildDependency (file:///Users/philip/Documents/Repos/dox/node_modules/.pnpm/@tailwindcss+vite@4.0.8_vite@6.1.1_jiti@2.4.2_lightningcss@1.29.1_yaml@2.7.0_/node_modules/@tailwindcss/vite/dist/index.mjs:1:5234)\n      at C.generate (file:///Users/philip/Documents/Repos/dox/node_modules/.pnpm/@tailwindcss+vite@4.0.8_vite@6.1.1_jiti@2.4.2_lightningcss@1.29.1_yaml@2.7.0_/node_modules/@tailwindcss/vite/dist/index.mjs:1:3810)\n      at TransformPluginContext.transform (file:///Users/philip/Documents/Repos/dox/node_modules/.pnpm/@tailwindcss+vite@4.0.8_vite@6.1.1_jiti@2.4.2_lightningcss@1.29.1_yaml@2.7.0_/node_modules/@tailwindcss/vite/dist/index.mjs:1:1967)\n      at EnvironmentPluginContainer.transform (file:///Users/philip/Documents/Repos/dox/node_modules/.pnpm/vite@6.1.1_jiti@2.4.2_lightningcss@1.29.1_yaml@2.7.0/node_modules/vite/dist/node/chunks/dep-Cg8OuIew.js:48466:19)\n      at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n      at async loadAndTransform (file:///Users/philip/Documents/Repos/dox/node_modules/.pnpm/vite@6.1.1_jiti@2.4.2_lightningcss@1.29.1_yaml@2.7.0/node_modules/vite/dist/node/chunks/dep-Cg8OuIew.js:42166:27)\n    ```\n  - Workaround:\u003cbr\u003e\n    Reload the page (`cmd + r`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhatphilipcodes%2Fdox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwhatphilipcodes%2Fdox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwhatphilipcodes%2Fdox/lists"}