Oxypogon.js is a simple static website/blog assembling utility that is build over Node.js.
I decided to make a simple blog engine named Colibri years ago (maybe near 2009), but unfortunately this name on npm is already taken. So I've browsed wiki and some sites about birds and found a beautiful and a bit grumpy hummingbird (colibri) which name is Oxypogon. That is, meet Oxypogon.js!
The development is in progress, so it can be unsafe to use the code right now.
- sources in markdown
- support for metadata like in MultiMarkdown format
- assembling static pages
- lists of pages
- tags and lists of tags
- ...
- rather smart content processing
- external links are marked with
target="_blank"
- external links are marked with
Oxypogon.js was meant to be as simple and lightweight as possible. So there are just a few libraries used for development:
- all content is extracted from markdown sources using marked
- I also use metamd to parse out the metadata from the articles
- as Oxypogon deals with filesystem and file patterns it uses:
- moment.js for date formatting
- jade (or Pug? I don't understand why is
jade
package available yet) for templating
features:
- complete the tags functionality, especially in-menu display which was removed when switching to lists config instead of a separate menu config
- add RSS support
- make possible pagination for lists
- enable inserting dynamic parts into
pieces
- make sure that preview creation works like was desired
- rebuild only pages that were actually changed since the last rebuild?
- add support for article writing duration (from-to)
- content:
- what to do with articles that are less than preview size?
- make inserting lists into the preview possible (maybe by entering the special 'list mode' which will collect opening and closing tokens respectively)
to think of:
- use the first h2 in the article as a preview if no one was specified
- what to do when h2 never appears?
- live editing
development:
- figure out a way to pass tags
- try some options for templating to find the best way of passing data
- set default templates in config, not it the sources
- simplify config
promotion:
- write readme with examples and options
- mention added support for copying static pages
- make a site on github pages