From the Uncluttered course
Go to file
2023-11-25 19:23:17 +00:00
.gitignore add info in doc 2023-11-25 08:13:09 +00:00
firefox.sh adding script to launch ffox 2023-11-25 19:23:17 +00:00
LICENSE Initial commit 2023-11-25 08:00:08 +01:00
README.org adding script to launch ffox 2023-11-25 19:23:17 +00:00

Uncluttered

Org shortcut

Evaluate the line, apply the config in place
C-c C-c

Webserver

Guile

So we need a webserver to display the HTML page. Since I'm keen on trying fancy pancy standard stuff in Webdev, let's do it to with GNU. Let's try and choose a webserver in Guile.

  guix install guile
  guile --version
guile (GNU Guile) 3.0.9
Copyright (C) 2023 Free Software Foundation, Inc.

License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

or Rust ?

We're exploring Rust as well, so maybe there is some fancy stuff here as well. I mean while we wait and learn about Guile anyway. Well, there's Rocket for Rust but I guess we can wait.

Nah, let's stick to Esbuild

Because this is what the book is doing and we don't want to waste too much time (it's 9:29pm) and I'm too tired for that.

Set up

Repo

Setting up the project is done via the repo template on github.1 Let's clone it from gitlab, or gitea ?

Esbuild

Recommended way is via curl, see the install page.

  curl -fsSL https://esbuild.github.io/dl/v0.19.7 | sh

Now that you have esbulid, install it in your local path if you fancy. We can start a server from here.

  esbuild --serve=8888 --servedir=.
 > Local:   http://127.0.0.1:8888/
 > Network: http://192.168.1.140:8888/
 > Network: http://192.168.122.1:8888/
 > Network: http://10.0.3.1:8888/
 > Network: http://172.17.0.1:8888/

HTTPS

Local servers are considered secure by default. There is no need to over-engineer the setup. At least at this point. As for CORS and other security rules, we will fix them as they arise. No need to fix a problem until it actually becomes a pbm. The solution will be measured agains the reality of the situation. This is the sure way to avoid scope creeps.

Firefox

Because you don't want to share the development setup with other projects or the usual browsing, e.g. same cookie origins, indexdb, and localstorage, … we can launch firefox with a dedicated profile. Assuming we all know where our firefox is launched from.

  #!/bin/bash
  set -eu

  DATA_DIR="$(mktemp -d -t 'firefox_unsafe_data_dir.XXXXXXXXXX')"
  /usr/local/bin/firefox/firefox-bin \
      -profile $DATA_DIR \
      -no-remote \
      -devtools \
      -url http://localhost:8888 \
      > /dev/null 2>&1 &!

Footnotes

1Which causes 2 problems:

  • It's github
  • I want to set up the project from scratch 🤷