This repository hosts a static profile website built with pure HTML, CSS, and JavaScript. Content is data-driven and blog entries are generated from markdown source files.
index.htmlmain page shellstyles/main.csslayout and visual systemscripts/main.jsruntime rendering of structured contentscripts/generate-blog.mjsmarkdown front matter parser and blog index generatorscripts/build.mjsstatic build output generatorscripts/serve.mjslocal static serverdata/profile.jsonprofile, skills, projects, and contact metadatadata/blog-index.jsongenerated blog listing consumed by the UIcontent/blog/markdown blog source files.github/workflows/deploy-pages.ymlGitHub Pages deployment workflow
- Edit
data/profile.jsonfor profile, skills, projects, or contact changes. - Add a markdown file to
content/blog/with front matter. - Run
npm run generate:blogto rebuilddata/blog-index.json. - Run
npm run devfor local preview. - Run
npm run buildandnpm run previewto validate production output.
This workflow assumes gh is installed and already authenticated.
- Run
npm run new-postand provide a title (and optional slug). - The script creates
blog/<slug>, openscontent/blog/<slug>.mdin$EDITOR, commits, pushes, and opens a draft PR tomain. - After PR creation, the script can optionally run the publish script immediately.
- Run
npm run publish-posts -- --pr <number>to publish one PR. - Run
npm run publish-posts -- --allto publish all open blog PRs.
Required blog front matter fields
titleslug(kebab-case)date(ISO-style date)summary
Optional blog front matter fields
tagslistdraftboolean
npm run generate:bloggeneratedata/blog-index.jsonfrom markdown source entriesnpm run devgenerate blog index and serve repository root athttp://localhost:4173npm run buildgenerate blog index and build static output intodist/npm run previewserve built output fromdist/athttp://localhost:4173npm run new-postcreate a draft blog post branch, file, and draft PRnpm run publish-posts -- --pr <number>merge one blog PR intomainnpm run publish-posts -- --allmerge all open blog PRs intomain
Deployment is configured for GitHub Pages through GitHub Actions and publishes dist/ to the gh-pages branch.
- In repository settings, set Pages source to
Deploy from a branch. - Select branch
gh-pagesand folder/ (root). - Set the custom domain to
ci-sourcerer.comin the Pages settings. - Keep
Enforce HTTPSenabled after DNS is configured. - Push changes to
main. - The workflow builds and deploys static output from
dist/.