Open almereyda opened 9 years ago
This is something I thought about too... The idea would be that Jingo will have basically no UI, but will expose a REST API to a "git backed Markdown Wiki". Incidentally this is exactly what Gollum is, after all.
Once there is a REST server, we could write a UI over it, developed independently.
I'd also like to think to move to a "plugin" system for the authentication subsystem. I know people want Facebook, for example, but I don't like to add it to the core. I think this could be done before than moving to the API-only back-end, but I wonder it the jingo-auth-facebook
would be then compatible with the new API architecture (if not, there will be the need to write another auth plugin or a compatibility layer).
For a plugin system, we'd also have to identify places where plugins can register.
Like HTML header, footer, custom CSS, custom JS, routes, views, etc.
I actually liked the way how Hadron.js solves this problem by using the scatter and particles tool chains, but there may be different options.
You may also be interested in Node Organic. If this refactoring works out, maybe there'll even be a Jingo core that can be easily embedded into other applications, either server or client side.
Update: Incrementally refined the argument. @claudioc A simple design pattern for plugins could be the directory require pattern.
I am proposing to think about a Plugin System for Jingo, maybe version 2. Generally accepted use of
npm
as the package manager is clear.Together with this, seperation of Client and Server could be undertaken, to render Jingo more data friendly (thus, being an Open API at the core). It would innovate by providing an HTTP API to a git backed Markdown Wiki. Additionally this seperation would make it more easy for me to include real time aspects for an Etherwiki.
Plugins should have names like
jingo-plugin-persona
,jingo-plugin-ether
orjingo-plugin-rss
. What these do could then be discussed in seperate Repos.I will try to build both into core first, but as a plugin would be much more appreciated.