A very small, very minimal CMS for allowing admins deploying your web applications to add custom pages and have them accessible from a nav bar.
A typical application using TeensyCMS dos so like this:
pages_dir
variable in its config/pages/{tail:.*}
that renders TeensyCMS contentThat's it.
A typical use case for this would be if you wanted a admin to be able to provide their own pages that may or maybe not include:
About
pageContact
pageTerms of Service
pageCode of Conduct
pageA full working example of a website implementing TeensyCMS can be found in the examples/
directory and run with cargo run
, but for reference a simple app might look like this:
```rust use teensy_cms::{TeensyCms, Page}; use serde::{Serialize, Deserialize};
// this page struct is defined by the application developer // the fields here are the "contract" for what a developer can use in their templates
struct MyPage { title: String, url: String, }
impl Page for MyPage { fn title(&self) -> String { self.title.clone() } fn url(&self) -> String { self.url.clone() } }
let myconfig = MyConfig::fromenv();
let cms = TeensyCms::
// imagine some fancy routing macro that wraps this
fn handlepagerequest(req: Request) -> String {
// something like "contact" or "about"
let page = &req.path_args()["page"];
req.data::
A page looks like the following:
title: My Page url: /my-page
```
Intellectual property isn't real. There is no license. If you insist on having one, this is Creative Commons Zero (public domain).