A screw press is a type of machine press in which the ram is driven up and down by a screw. The screw shaft can be driven by a handle, or a wheel. It works by using a coarse screw to convert the rotation of the handle or drive-wheel into a small downward movement of greater force. The screwpress was also used in Gutenberg's printing press in the mid-15th century. - wikipedia
ScrewPress is a content managment system built with node.js and verboten.js among other libraries. ScrewPress is inteded for developers, but general use is an intended goal as the platform matures. I took a fresh start at a blogging system, while still taking into account the best features of existing industry leaders. Instead of a wysiwyg editor, I've opted for markdown syntax for content creation and jade templates for more complex layouts and functionality. Most of the base features of the CMS are implemented via plugins, so the platform will be extremely flexible by allowing customizations to almost any feature. The platform supports a multi-site implementation or a single-site implementation at its core. Content migration is seamless via root relative urls. Content merging and versioning is handled via Mercurial (hg) so modifications can be made in development, staging, and production environments without the difficulty of manually merging content between each. Best of all, the core application code is only about a thousand lines of code.
What Doesn't ScrewPress Do?
This platform is by no means production ready. I use it for my personal site, and a blog site dedicated to my daughter, but that's all really. It could use some style updates, some plugins, some more core logic, a database (probably mongodb) for storing meta information about the pages on the filesystem. I also need to update some core libraries like expressjs, - since they have been hacked to fix bugs in their cores I haven't taken the time to update the projects and re-hack the bug fixes that are most likely still there. And the list goes on before I'd consider using this for any client. But I'll get there, eventually. Currently I'm interested in purchasing a logo for the site, something along the shape of this style of screwpress so if you have a recommendation or would like to contribute some work, please contact me at marcuspope.com.
Where Can I Get It?
Right now the project is hosted on bitbucket but it does not have core dependencies published at the moment. But soon I will offer a direct download link here on this site.
Phase 1 of the project is already complete. The initial goal was a platform designed to create content of virtually any type. Key aspects include the ability to quickly add and edit content, extend core functionality with plugins, reuse content via an include system, version content with Mercurial, and host media items from a 3rd party cdn. As an added bonus I included a multi-host infrastructure to allow hosting multiple sites from one nodejs instance.
Phase 2 will offer user input over port 80. In order to reduce development time for phase 1 I opted to force content updates and user data input occur only over port 3000. The caveat to this design is that content updates must occur from within my local network as port 3000 is blocked to public use. The benefit of this design is an almost complete prevention of injection and execution attacks as all port 80 requests are read-only. So with phase 1 completed, I can now devote the time and attention content modifications deserve, while still producing and updating content for friends and family. This phase of development will include features such as user comments, contact forms, rich applications, and file uploads. So in addition to a secure architecture, there will also be several new plugins provided by the core installation, and a complete overhaul of the built-in search engine.
Phase 3 will be the final major phase of core development. Basically I'll polish, refactor and optimize the entire codebase. I'll produce some professional themes to enhance the UI for both the default base theme and the administrative interface. An admin portal will be created to simplify configuration changes and plugin management. And everything will be done under the guise of pure simplicity. I hope to have a final product that is no more than 2,000 lines of core code. Any development efforts past phase 3 will likely be dedicated exclusively to plugins or core modifications made to improve plugin creation.
If the product gains popularity I'll probably create a forum, support site, and other hosted services. But that's based on a pretty big assumption that this product will gain even a few hundred users. So phase 4 is not currently on the roadmap in any shape.