Live at arc42.org
Built with Jekyll and served by Netlify.
Stack: Jekyll 4 (Ruby) · Minimal Mistakes theme (fully vendored) · Docker Compose for local development · Netlify for build & deploy.
All development runs in Docker — no local Ruby, Bundler, or Jekyll needed, just Docker and make.
make build # build the dev image once (installs the pinned gems — needs network)
make dev # start Jekyll with live reload at http://localhost:4000Everything after the first make build works fully offline (e.g. on a train): the
gems are baked into the Docker image and the theme is vendored into the repo, so no
build step reaches out to the network.
| Command | What it does |
|---|---|
make help |
List all targets. |
make dev |
Start the dev server with live reload at http://localhost:4000. |
make build |
Build the arc42-site:latest Docker image from the pinned gems. |
make site |
Generate the static site into _site/. |
make check-links |
Build, then validate internal links/images/HTML with html-proofer. |
make shell |
Open a shell inside the container for debugging. |
make install |
Refresh gems in the image after editing the Gemfile. |
make update |
Update gems to their latest allowed versions (rewrites Gemfile.lock). |
make stop |
Stop and remove the running container. |
make logs |
Tail the dev server logs. |
make clean |
Remove _site/ and local caches. |
After make update (or any change to Gemfile.lock), the container refuses to serve
until you re-run make build — the entrypoint compares the lockfile against the gems
baked into the image and fails loudly on drift, so you never run against stale gems.
The Minimal Mistakes theme (v4.24.0) is
vendored into this repository — its _layouts/, _includes/, _sass/, and
assets/js/ live here directly rather than being pulled from a remote theme or gem at
build time. This keeps builds fully offline and puts every template under version
control. arc42-specific customizations (masthead, footer, head, SCSS) sit alongside the
stock theme files and override them via Jekyll's normal precedence.
Netlify builds and deploys on push. The build configuration lives in
netlify.toml (build command, publish directory, JEKYLL_ENV=production)
and the Ruby version is pinned in .ruby-version — these override the
Netlify dashboard's build settings.
The search uses the Simple-Jekyll-Search Javascript Function,
Copyright 2015-2020, Christian Fei, licensed under the MIT License.
This function is available in the search-script.js file.
In the search.json file, all content we want to include within the search is converted into
key-value pairs which can then be easily read by the search script.
In search.html, we create the page that shows the search box and results, using the
script and the json, and with that, the search is ready.
- Free images can be found at Unsplash
- I bought several icons from IconFinder, a great source for professional-grade icons. Recommended!
- I generated the various favicon files with RealFavIconGenerator.
The arc42 template is licensed under a CreativeCommons Sharealike International 4.0 License.
You are free to:
- Share — copy and redistribute the template in any medium or format
- Adapt — remix, transform, and build upon the material for any purpose, even commercially.
Copyright (c) 2016ff Michael Rose
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.