Niko Abeler 0b9da1860f | ||
---|---|---|
.vscode | ||
assets | ||
cmd/owl | ||
embed | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
directories.go | ||
embed.go | ||
go.mod | ||
go.sum | ||
owl_test.go | ||
post.go | ||
post_test.go | ||
release.sh | ||
renderer.go | ||
renderer_test.go | ||
repository.go | ||
repository_test.go | ||
rss.go | ||
rss_test.go | ||
user.go | ||
user_test.go | ||
webmention.go | ||
webmention_test.go |
README.md
Owl Blogs
A simple web server for blogs generated from Markdown files
Repository
A repository holds all data for a web server. It contains multiple users.
User
A user has a collection of posts.
Each directory in the /users/
directory of a repository is considered a user.
User Directory structure
<user-name>/
\- public/
\- <post-name>
\- index.md
-- This will be rendered as the blog post.
-- Must be present for the blog post to be valid.
-- All other folders will be ignored
\- status.yml
-- Used to track various process status related to the post,
-- such as if a webmention was sent.
\- media/
-- Contains all media files used in the blog post.
-- All files in this folder will be publicly available
\- webmention/
\- <hash>.yml
-- Contains data for a received webmention
\- meta/
\- base.html
-- The template used to render all sites
\- VERSION
-- Contains the version string.
-- Used to determine compatibility in the future
\- config.yml
-- Contains settings global to the user.
-- For example: page title and style options
Post
Posts are Markdown files with a mandatory metadata head.
- The
title
will be added to the web page and does not have to be reapeated in the body. It will be used in any lists of posts. aliases
are optional. They are used as permanent redirects to the actual blog page.
---
title: My new Post
date: 13 Aug 2022 17:07 UTC
aliases:
- /my/new/post
- /old_blog_path/
---
Actual post
status.yml
webmentions:
- target: https://example.com/post
supported: true
scanned_at: 2021-08-13T17:07:00Z
last_sent_at: 2021-08-13T17:07:00Z