This is the source code for my personal website built with Franklin.jl, a static site generator for Julia.
To run this site locally, you'll need to have Julia installed on your system.
-
Clone this repository:
git clone https://github.com/kambrch/kambrch.github.io.git cd kambrch.github.io -
Install the required Julia packages:
julia --project=@. -e 'import Pkg; Pkg.instantiate();' -
Install build dependencies used by Franklin optimizations (minifier):
python3 -m pip install -r requirements.txt
-
Serve the site locally:
julia --project=@. -e 'using Franklin; serve()'
The site will be available at http://localhost:8000.
To build the static site for production:
julia --project=@. -e 'using Franklin; optimize()'
./scripts/normalize-generated-urls.sh __siteIf you want code-block prerendering during optimize, also install highlight.js once:
julia --project=@. -e 'using NodeJS; run(`$(npm_cmd()) install highlight.js`)'config.md- Global configuration and variablesindex.md- Main landing pageprojects.md- Projects pagecv.md- Curriculum Vitae pageblog.md- Blog index pagekamsoft/index.md- Business services page_layout/- HTML templates and layouts_css/- Stylesheets_assets/- Images and other assetsblog/- Individual blog postsutils.jl- Franklin entrypoint that loads custom Julia helperssrc/site_utils.jl- Custom Julia helper functions/macros for the sitedata/cv_data.jl- CV data in Julia formatscripts/- Project automation scripts (e.g. image optimization)
- CV display system with structured data
- Blog with tagging and filtering
- Responsive design
- Business services page
For optimal performance, all images should be optimized before adding them to the site:
- Resize images to the display size needed
- Use appropriate formats (WebP for photos, SVG for graphics when possible)
- Compress images using tools like ImageOptim, TinyPNG, or command-line tools like ImageMagick
- Consider lazy loading for images below the fold
Example of including an optimized image in a page:
{{img assets/img/example.jpg "Alt text" "600px" "center" "rounded soft shadow framed"}}Generate responsive image variants (480/800/1200 widths by default):
./scripts/optimize-images.shThe {{img ...}} helper will automatically pick up generated *.avif, *.webp, and
same-format responsive variants when present.
This site is deployed to GitHub Pages via the main branch. The CI pipeline in .gitlab-ci.yml builds and deploys the site automatically.