aboutsummaryrefslogtreecommitdiff
path: root/docs/themes-and-plugins.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/themes-and-plugins.md')
-rw-r--r--docs/themes-and-plugins.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/docs/themes-and-plugins.md b/docs/themes-and-plugins.md
new file mode 100644
index 0000000..1d793f8
--- /dev/null
+++ b/docs/themes-and-plugins.md
@@ -0,0 +1,32 @@
+# Themes
+
+They should be put in `themes/<name>/`.
+
+Templates in `themes/<name>/*.html` override default templates in plugins.
+Assets in `themes/<name>/assets/*` are served by the HTTP server at
+`/themes/<name>/assets/*`.
+
+# Plugins
+
+Plugins can be written in Go or in Lua and live in `plugins/<name>/`.
+
+Plugins can provide their own templates in `plugins/<name>/public/*.html`.
+Assets in `plugins/<name>/public/assets/*` are served by the HTTP server at
+`/plugins/<name>/assets/*`.
+
+## Go plugins
+
+They can use the [Go plugin helpers] and need to be included at compile-time in
+`cmd/koushin/main.go`.
+
+## Lua plugins
+
+The entry point is at `plugins/<name>/main.lua`.
+
+API:
+
+* `koushin.on_render(name, f)`: prior to rendering the template `name`, call
+ `f` with the template data (the special name `*` matches all templates)
+* `koushin.set_filter(name, f)`: set a template function
+* `koushin.set_route(method, path, f)`: register a new HTTP route, `f` will be
+ called with the HTTP context