git kitty Hacking through NYC

muse: a CMS scaffolding tool

the beginning

Muse is my first open source project. I tend to be a bad developer by keeping everything I do and learn to myself. So as I was working on a CMS side project I started thinking about how nice it would be if I could just spin up some basic boilerplate code whenever I needed it. It's similar to a Yeoman generator but a bit more advanced in that there will be lots of code injection depending options selected. And if I would find this tool useful maybe others would too. So sent my code out into the world for the masses to evaluate. They might hate it, but that's not the point. The point is that I would have done it.

Now the caveat... I haven't done it. At least not yet. All I've done as of now is set up the project structure, decide on my next steps of action, and begin to write the code that will build the application structure. Eventually you will be able to install the package:

npm install muse -g

...and type a single command with as many options as you need to build out a basic CMS site. Before I started the project I wrote down what I thought would be an MVP version. I always like to start here because I find putting my plan on paper (or in Sublime) means I take the time to invest in my idea and focus the big picture up front.

step 0

The tasks that I decided to tackle first:

  • Finalize default configuration and structure
    • Basic mongoose models and CRUD operations for Users, Pages, Blogs, and Posts
    • Separate view routes from API routes in preparation for client-side framework support
  • User Authentication (Passport)
    • Basic user auth
    • OAuth support for Google+, Twitter, and Facebook
    • Both local and OAuth
  • Blog functionality
    • Single blog with multiple posts (without comments)
    • Single blog with multiple posts (with comments)
  • Admin functionality without permissions
  • Admin functionality with roles containing multi-part permissions
    • Content creation and editing
    • Content publication
    • Content deletion
    • User visibility
    • User creation and editing
  • Navigation
    • Single top level page routing
    • Additional secondary level routing

next steps

There will be many posts associated with this project and this was just the first. I'm going to continue to build out muse and I'll continue to update the world via this blog as I go.