# Themes They should be put in `themes//`. Templates in `themes//*.html` override default templates in plugins. Assets in `themes//assets/*` are served by the HTTP server at `/themes//assets/*`. # Plugins Plugins can be written in Go or in Lua and live in `plugins//`. Plugins can provide their own templates in `plugins//public/*.html`. Assets in `plugins//public/assets/*` are served by the HTTP server at `/plugins//assets/*`. ## Go plugins They can use the [Go plugin helpers] and need to be included at compile-time in `cmd/alps/main.go`. ## Lua plugins The entry point is at `plugins//main.lua`. API: * `alps.on_render(name, f)`: prior to rendering the template `name`, call `f` with the template data (the special name `*` matches all templates) * `alps.set_filter(name, f)`: set a template function * `alps.set_route(method, path, f)`: register a new HTTP route, `f` will be called with the HTTP context