Use a template from either git submodule or direct clone method.
# git submodule add git@github.com:yhatt/marp-cli-example.git
git submodule update --init --recursiversync --archive \
--exclude='.git' \
--exclude='.github' \
--exclude='assets/netlify-deploy-button.svg' \
--exclude='LICENSE' \
--exclude='netlify.toml' \
--exclude='README.md' \
marp-cli-example/ new-slides/# git clone git@github.com:yhatt/marp-cli-example.git
# rm --recursive --force marp-cli-example/.git/- Git
- Node.js LTS
- Python 3 (for the landing page dev server)
The landing page (index.html) embeds a Google Maps map loaded from talks.toml. A dev server injects your API key at startup.
Set the key in whichever env file you prefer — dev.sh checks .envrc first, then .env:
# direnv (.envrc)
echo 'export GOOGLE_MAPS_API_KEY=your_key' >> .envrc
# or plain .env
cp .env.example .env
# Edit .env and set your Google Maps API keyIf your
.envrccontains secrets, add it to.gitignore.
./dev.sh
# Serving at http://localhost:8080Override the port if needed:
PORT=3000 ./dev.shOr pass the key inline without any env file:
GOOGLE_MAPS_API_KEY=your_key ./dev.shThe seasonal landing page source is in seasonal/. The deployment publishes
its build at the site root. It keeps the landing page content and layout and
selects a background scene at build time from the seven day Oslo forecast
supplied by MET Norway. It applies MET Norway's temperature
thresholds for meteorological seasons. Each page refresh requests current Oslo
weather after the initial content renders. The page shows a loading message
until the live request succeeds and shows an unavailable message if it fails.
Append
?season=spring, ?season=summer, ?season=autumn, or ?season=winter to
inspect a specific scene.
npm --prefix seasonal install
npm --prefix seasonal run devThe landing page uses the MET Norway Locationforecast Compact endpoint:
https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.9139&lon=10.7522
Use Nushell to inspect the raw weather measurements:
http get 'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.9139&lon=10.7522'
| get properties.timeseries
| first
| get data.instant.detailsFor Nushell debugging, inspect the update time and all forecast periods:
let u = "https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.9139&lon=10.7522"
let d = (http get $u)
let ts0 = $d.properties.timeseries.0
{
updated_at: $d.properties.meta.updated_at
instant: $ts0.data.instant.details
next_1_hours: $ts0.data.next_1_hours
next_6_hours: $ts0.data.next_6_hours
next_12_hours: $ts0.data.next_12_hours
}Each slide project has its own dev server powered by Marp CLI.
cd slides/demystifying-the-nix-store
npm install
npm start
# Opens a preview in the browser with live reloadReplace demystifying-the-nix-store with any of the other slide directories:
governing-azure-resources-with-policyreproducible-environments-docker-vs-nixrunning-kernel-based-virtual-machinetracking-nixpkgs-merged-pull-requests
Noto Color Emoji by Google is licensed under the Creative Commons Attribution 4.0 International License.
The seasonal landing page uses the Sylva Living World scene from Three UI.
See the Noto Emoji Animation documentation for technical details on animated emoji.