> I personally prefer good ol' Python because I like it and so being much more 
> familiar with it.

Same here, I've been using it for almost everything I need scripting language 
for since about 15 years or so, just not for web stuff (with the exception of a 
few backends using Flask).

> The only requirement I would like to consider is that the site should work 
> mostly with JavaScript enabled in the browser.

I assume you mean **without** JavaScript, if so I agree.

> Obviously this is quite hard when using Vue or the like for the frontend

IMO, using Vue or other frontend frameworks isn't really appropriate for a site 
like Geany anyway since it's not really a "SPA", just a document/info site that 
is almost entirely static.


I started working on the frontend a bit. Basically it goes like this:

  1. Scan "pages" directory recursively looking for `*.md` files.
  2. Using [front-matter](https://www.npmjs.com/package/front-matter) to get 
meta data for the page (ex. title, description, keywords, output file, etc.).
  3. Convert the markdown body to HTML using 
[markdown-it](https://github.com/markdown-it/markdown-it) along with 
[highlight.js](https://highlightjs.org/) for any fenced code blocks.
  4. For each of the pages, process it into a full HTML document using 
[nujucks](https://mozilla.github.io/nunjucks/) and a few templates/partials.
  5. Using [Webpack](https://webpack.js.org/), the resulting pages, images, 
SCSS/CSS, JS, etc. are bundled into a production-ready, tiny, optimized, 
front-end site.

Basically it just pushes all of the work to "compile-time" to build the site 
before deploying, without any backend (so far at least, some stuff will likely 
need a bit of backend like nightly builds, IRC stuff, etc). Updating the site 
contents involves just adding/editing a markdown file in the "pages" directory 
and then running the build command to regenerate the site.

I wrote the compiler code in JS/Node because NPM has all of the needed tooling 
readily available and to start hacking on the site is as simple as running `npm 
install` in the source directory. To this point there's about 100 lines of JS 
for the compiler and about 50 lines of code for a dev 
server/file-monitoring/live-browser-reloading/etc for development. So far the 
dependencies (from `package.json`) look like this:

  "dependencies": {
    "highlight.js": "^9.15.10",
    "normalize.css": "^8.0.1"
  "devDependencies": {
    "@babel/core": "^7.6.0",
    "@babel/preset-env": "^7.6.0",
    "babel-loader": "^8.0.6",
    "browser-sync": "^2.26.7",
    "chokidar": "^3.0.2",
    "css-loader": "^3.2.0",
    "file-loader": "^4.2.0",
    "front-matter": "^3.0.2",
    "glob": "^7.1.4",
    "html-loader": "^0.5.5",
    "html-webpack-plugin": "^3.2.0",
    "markdown-it": "^9.1.0",
    "mini-css-extract-plugin": "^0.8.0",
    "node-sass": "^4.12.0",
    "nodemon": "^1.19.2",
    "nunjucks": "^3.2.0",
    "postcss-loader": "^3.0.0",
    "postcss-preset-env": "^6.7.0",
    "pretty": "^2.0.0",
    "sass-loader": "^8.0.0",
    "webpack": "^4.39.3",
    "webpack-cli": "^3.3.8"

So basically the actual site itself only depends on highlight.js package (only 
for the CSS theme, the rest is done at compile-time) and normalize.css (to make 
SCSS/CSS easier, since it doesn't use any CSS frameworks like Bootstrap). All 
of the other `devDependencies` are for the compiler, Webpack and to make 
development of the site easier.

What do you think?

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:

Reply via email to