txture: a web log engine for people who like flat files, convenience, and Lisp
That fresh-ink scent don't come off a relational database.
I like flat files better than databases for my writing. I also like
meta tags and other search-engine luring information to be derived and
embedded into HTML based on the blog entries I write.
I wanted these two for sure, but I also wanted modern candy like Markdown parsing and Less rendering for CSS. So, I began to write txture.
In the process, I realized that a platform like this could really benefit from an excellent plugin architecture, so I wrote one up and it quickly began driving the development of txture.
txture is readable and easily modified, but it works pleasantly and simply out of the box. It is still in development and has not been formally released yet.
txture offers a bare Model-View-Controller core reliant on a simple plugin architecture for all modern goodies.
txture is shaped according to the Unix philosophy until it becomes stupid.
txture offers a very minimal core which can be extended and manipulated by a robust plugin architecture. A great plugin architecture will allow you to
- easily extend txture to accommodate your likes, and
- allow you to distribute your plugin to others without too much cursing.
Txture's design philosophy is as follows:
- never duplicate functionality that other, better, and existing tools already provide.
- anything that is not basic to txture is a plugin. This includes features like Markdown parsing, LESS rendering, Disqus comments which are included within the core of other minimal weblog platforms. This reliance on a plugin architecture will not only keep the txture core stark, but it will provide numerous examples of how plugins are authored.
|-- README.md |-- metadata | `-- post-dates.data.clj <-- preserve when txture first saw a post here |-- posts <-- posts are stored here, by default | `-- sample.txt under any directory structure you like. |-- project.clj Only caveat: no two posts can have same |-- src filename. | `-- txture | |-- config.clj <-- you modify this to your liking | |-- core.clj | |-- dates.clj | |-- hooks.clj <-- defines plugin architecture | |-- mvc | | |-- controller.clj | | |-- model.clj | | |-- models | | | `-- post.clj | | |-- view.clj | | `-- views | `-- plugins <-- plugins are dropped in here and | `-- markdown automatically detected | `-- core.clj |-- static | |-- js | | |-- render-showdown.js <-- for Markdown plugin | | `-- showdown.js <-| | `-- stylesheets | |-- main.css | `-- main.less `-- test <-- completely unused `-- deltaT `-- core_test.clj
Get Leiningen (Clojure not required)
$ git clone email@example.com:jamesob/txture.git
$ cd txture && lein deps
$ lein run src/txture/core.clj
Browse to http://localhost:8080
src/txture/config.clj. Modify as necessary.
mkdirthe directory where you'll be storing your posts.
cdinto posts directory, crack open your favorite text editor and type up a post in the following form (YAML):
title: Yabba dabba doo subtitle: A stern treatise on the Red Scare labels: fake, phony, lame [Markdown here]
If you don't like Markdown, the Markdown plugin can be disabled simply by removing the
src/txture/plugins/markdownfile. This goes for any other plugin.
Ensure that there is a blank line between the header information and the body, which can be any HTML.
Copyright (c) 2010 jamesob
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Hooks less shitty.
- More bland default theme.
- Cleaner barfing.
- Non-blog pages?