Files
hedgeblog/README.md
jetstream0 db4f5fea22 add css, next post feature
change favicon, add more readme, add extra example post, dark/light mode toggle
2023-07-31 22:54:05 -07:00

57 lines
2.7 KiB
Markdown

# Hedgeblog
My [personal blog](https://www.prussiafan.club), because what the world needs is yet another semi-abandoned blog. All the code in this repo is licensed under the AGPL license, with the exception of Makoto, which is licensed under the MIT license.
## Technical Goals
- Completely rewrite the blog, and get it working
- Be able to be served statically (so it can be deployed on Github Pages or Cloudflare Pages for no dinero)
- No dependencies - or basically, I want to write every line of code (builtin modules like `path`, `fs` are ok of course)
- No Javascript served to client - the web pages should be pure HTML and CSS
These goals are accomplished!
## Non-Technical Goals
- Make two things I can call "Ryuji" and "Saki" to go along with "Makoto" (those are the three main characters of one of the best manga series ever)
- Move over some of the old blog posts (only the stuff I like), after rewriting them
- Start writing stuff on the blog again, at least semi-regularly
The third goal may never be accomplished.
## Makoto
Makoto is the markdown-to-html parser, made with no dependencies. It was made around two months before Ryuji and Saki, and is meant to be more of a standalone thing. This is the sole npm dependency of the project. I `npm install`ed it instead of just copying the file over mostly because I published Makoto to npm and wanted to make sure it worked. Also it has different license, documentation and stuff.
It also has a very cool warnings feature, that isn't used in this project, but can be seen in action if you use the [Makoto Web Editor](https://makoto.prussia.dev).
## Ryuji
Ryuji is a simple, Jinja/Nunjucks inspired templating system that supports `if` statements, `for` loops, components, and inserting variables. It isn't quite as fully featured as Jinja/Nunjucks, but on the upside, Ryuji is around just 200 lines of code, and worked very well for my usecase. I think it's pretty cool.
I didn't write any docs for it (yet), but you can see the syntax if you look in the `templates` directory or look in `tests.ts`.
## Saki
Saki is the build system that puts it all together and outputs the blog's static html. Even more simple than Ryuji, it is just around 70 lines of code.
## Running
First, install the dependencies (well, dependency, since Makoto is the only one).
```bash
npm install
```
## Building
```bash
npm run build
```
## Previewing
```bash
npm run preview
```
This builds the project and then serves the `build` folder at [http://localhost:8042](http://localhost:8042). As you can see in `preview.ts`, this part also relies on no dependencies - only builtin module `http` is used.
## Tests for Ryuji (templating)
```bash
npm run test
```
Uses Endosulfan, my very basic <40 LOC test assertion thingy.