mirror of
https://github.com/samsonjs/samhuri.net.git
synced 2026-03-25 09:05:47 +00:00
Replace the Swift site generator with a Ruby and Phlex implementation. Loads site and projects from TOML, derive site metadata from posts. Migrate from make to bake and add standardrb and code coverage tasks. Update CI and docs to match the new workflow, and remove unused assets/dependencies plus obsolete tooling.
111 lines
3 KiB
Markdown
111 lines
3 KiB
Markdown
# samhuri.net
|
|
|
|
Source code for [samhuri.net](https://samhuri.net), powered by a Ruby static site generator.
|
|
|
|
## Overview
|
|
|
|
This repository contains the Ruby static-site generator and site content for samhuri.net.
|
|
|
|
If what you want is an artisanal, hand-crafted, static site generator for your personal blog then this might be a decent starting point. If you want a static site generator for other purposes then this has the bones you need to do that too, by ripping out the bundled plugins for posts and projects and writing your own.
|
|
|
|
- Generator core: `lib/pressa/` (entrypoint: `lib/pressa.rb`)
|
|
- Build tasks and utility workflows: `bake.rb`
|
|
- Tests: `test/`
|
|
- Config: `site.toml` and `projects.toml`
|
|
- Content: `posts/` and `public/`
|
|
- Output: `www/`
|
|
|
|
## Requirements
|
|
|
|
- Ruby (see `.ruby-version`)
|
|
- Bundler
|
|
- `rbenv` recommended
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
bin/bootstrap
|
|
```
|
|
|
|
Or manually:
|
|
|
|
```bash
|
|
rbenv install -s "$(cat .ruby-version)"
|
|
bundle install
|
|
```
|
|
|
|
## Build And Serve
|
|
|
|
```bash
|
|
bake debug # build for http://localhost:8000
|
|
bake serve # serve www/ locally
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Site metadata and project data are configured with TOML files at the repository root:
|
|
|
|
- `site.toml`: site identity, default scripts/styles, and a `plugins` list (for example `["posts", "projects"]`), plus `projects_plugin` assets when that plugin is enabled.
|
|
- `projects.toml`: project listing entries using `[[projects]]`.
|
|
|
|
`Pressa.create_site` loads both files from the provided `source_path` and supports URL overrides for `debug`, `beta`, and `release` builds.
|
|
|
|
## Customizing for your site
|
|
|
|
If this workflow seems like a good fit, here is the minimum to make it your own:
|
|
|
|
- Update `site.toml` with your site identity (`author`, `email`, `title`, `description`, `url`) and any global `scripts` / `styles`.
|
|
- Set `plugins` in `site.toml` to explicitly enable features (`"posts"`, `"projects"`). Safe default if omitted is no plugins.
|
|
- Define your projects in `projects.toml` using `[[projects]]` entries with `name`, `title`, `description`, and `url`.
|
|
- Configure project-page-only assets in `site.toml` under `[projects_plugin]` (`scripts` and `styles`) when using the `"projects"` plugin.
|
|
- Add custom plugins by implementing `Pressa::Plugin` in `lib/pressa/` and registering them in `lib/pressa/config/loader.rb`.
|
|
- Adjust rendering and layout in `lib/pressa/views/` and the static content in `public/` as needed.
|
|
|
|
Other targets:
|
|
|
|
```bash
|
|
bake mudge
|
|
bake beta
|
|
bake release
|
|
bake watch target=debug
|
|
bake clean
|
|
bake publish_beta
|
|
bake publish
|
|
```
|
|
|
|
## Draft Workflow
|
|
|
|
```bash
|
|
bake new_draft "Post title"
|
|
bake drafts
|
|
bake publish_draft public/drafts/post-title.md
|
|
```
|
|
|
|
Published posts in `posts/YYYY/MM/*.md` require YAML front matter keys:
|
|
|
|
- `Title`
|
|
- `Author`
|
|
- `Date`
|
|
- `Timestamp`
|
|
|
|
## Tests And Lint
|
|
|
|
```bash
|
|
bake test
|
|
standardrb
|
|
```
|
|
|
|
Or via bake:
|
|
|
|
```bash
|
|
bake test
|
|
bake lint
|
|
bake lint_fix
|
|
```
|
|
|
|
## Notes
|
|
|
|
- `bake watch` is Linux-only and requires `inotifywait`.
|
|
- Deployment uses `rsync` to host `mudge` (configured in `bake.rb`):
|
|
- production: `/var/www/samhuri.net/public`
|
|
- beta: `/var/www/beta.samhuri.net/public`
|