noer is a minimal, elegant and content-orientated static style blog CMS for those who prefer Markdown, static site, Web-Assembly. Markdown-based, simple to use; Static Style, github-pages supported, easy to deploy, serve and maintain; No JS/CSS/HTML touched; It makes content management Simple and Efficint.
See demo site
there are some requirements to be satisfied before we use it.
- First of all, rust language and its building tool are necessary. you can install them following the description here;
- Noer is built upon Web-Assembly and yew, the tutorial is recommanded before getting started;
- build tools are needed
-- trunk (
cargo install trunk
) -- wasm32-unknown-unknown (rustup target add wasm32-unknown-unknown
)
By default, the compiled output is not suitable for github pages, you got to enable it in the configuration file src/constant.rs
// if using github pages, it is required to deploy it to subpath
// specify the sub-path(ends with `/`)
// if not specified, it wont use sub-path
pub const SUBPATH: &str = "demo/";
There are some basic info about the site in stc/constant.rs
, including
MODE
the current mode of the project, noer will set logger if in development mode and disable it is release mode.ITEMS_PER_PAGE
number of posts card that a page to display, note that it shall be multiple of 3.ADMIN
username of the ower.SITE_NAME
the name you want call the site.LOGO_PIC
: the logo display in the page.AVATR_PIC
avatar of the userSITE_DESCRIPTION
just site Description.USER_INFO
some extra infomation of the user present to viewers, such as social network, email, etc. Note that it is line-separated, each line is a key-value pair.
//normal
sh ./build.sh
// use trunk to preview the site
- without sub-path (`SUBPATH` is "/")
trunk serve
- with sub-path (`SUBPATH` is **not** "/")
trunk serve --public-url /demo
noer
is static style site, Deploying noer as web application is just as simple as exposing the compiled index.html
. here representing an example for nginx user
// /etc/nginx/sites-enabled/noer.conf
server {
listen 8080;
listen [::]:8080 ;
root <absolute-path-to-project-directory>/<compiled-output-directory>;
index index.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
// Note that the example above is deployed to localhost:8080/
// if you prefer to deploying to sub path `localhost:8080/demo/`
// configue the `subpath` in `src/constant.rs`
// rename the compiled output directory to `demo`
server {
...
root <absolute-path-to-project-directory>;
location /demo {
...
}
...
}
- due to the limit of yew,
late
orkatex
is not supported, see issue - some uncommon features of markdown are not supported so far (subscript/supscript, some Markup, Definition, Abbreviations)