You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Niko Abeler 0934aaa121 use 'note' as slug for untitled posts 10 months ago
.vscode refactoring 1 year ago
assets removed reference 1 year ago
cmd/owl show error in h value 10 months ago
embed title substitute if no title set 10 months ago
test redirect uri verification 11 months ago
.gitignore renamed old file 1 year ago
Dockerfile adjust Dockerfile 1 year ago
README.md warning 11 months ago
auth_test.go redirect uri verification 11 months ago
directories.go resolved warnings 11 months ago
embed.go refactoring rendering 1 year ago
files.go refactoring yaml save/load into functions 11 months ago
go.mod setting user password 11 months ago
go.sum setting user password 11 months ago
html.go split webmention into html and http 11 months ago
http.go split webmention into html and http 11 months ago
owl_test.go WIP redirect_uri verification 11 months ago
post.go added some OpenGraph meta tags 11 months ago
post_test.go WIP redirect_uri verification 11 months ago
release.sh release 1 year ago
renderer.go error rendering 11 months ago
renderer_test.go title substitute if no title set 10 months ago
repository.go remove ioutil 11 months ago
repository_test.go WIP redirect_uri verification 11 months ago
rss.go setting user password 11 months ago
rss_test.go WIP redirect_uri verification 11 months ago
user.go use 'note' as slug for untitled posts 10 months ago
user_test.go WIP micropub 11 months ago
utils.go CSRF 11 months ago
webmention.go split webmention into html and http 11 months ago
webmention_test.go WIP redirect_uri verification 11 months ago

README.md

Mascot

Owl Blogs

A simple web server for blogs generated from Markdown files.

This project is not yet stable. Expect frequent breaking changes! Only use this if you are willing to regularly adjust your project accordingly.

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
            \- incoming_webmentions.yml
                -- Used to track incoming webmentions
            \- outgoing_webmentions.yml
                -- Used to track outgoing webmentions
            \- 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
       \- config.yml
            -- Holds information about the user
       \- VERSION
            -- Contains the version string.
            -- Used to determine compatibility in the future
  \- media/
       -- All this files will be publicly available. To be used for general files
       \- avatar.{png|jpg|jpeg|gif}
            -- Optional: Avatar to be used in various places
       \- favicon.{png|jpg|jpeg|gif|ico}
            -- Optional: Favicon for the site

User Config

Stored in meta/config.yml

title: "Title of the Blog"
subtitle: "Subtitle of the Blog"
header_color: "#ff0000"
author_name: "Your Name"
me:
  - name: "Connect on Mastodon"
    url: "https://chaos.social/@h4kor"
  - name: "I'm on Twitter"
    url: "https://twitter.com/h4kor"

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.
  • description is optional. At the moment this is only used for the HTML head meta data.
  • aliases are optional. They are used as permanent redirects to the actual blog page.
  • draft is false by default. If set to true the post will not be accessible.
  • reply optional. Will add the link to the top of the post with rel="in-reply-to". For more infos see: https://indieweb.org/reply
---
title: My new Post
Description: Short text used in meta data (and lists in the future)
date: 13 Aug 2022 17:07 UTC
aliases:
     - /my/new/post
     - /old_blog_path/
draft: false
reply:
     url: https://link.to/referred_post
     text: Text used for link
---

Actual post

Webmentions

This feature is not yet full supported and needs a lot of manual work. Expect this to change quiet frequently and breaking existing usages.

To send webmentions use the command owl webmention

Retrieved webmentions have to be approved manually by changing the approval_status in the incoming_webmentions.yml file.

incoming_webmentions.yml

- source: https://example.com/post
  title: Example Post
  approval_status: ["", "approved", "rejected"]
  retrieved_at: 2021-08-13T17:07:00Z

outgoing_webmentions.yml

- target: https://example.com/post
  supported: true
  scanned_at: 2021-08-13T17:07:00Z
  last_sent_at: 2021-08-13T17:07:00Z