A New File Structure

The first thing I want to address about my vision for Nova NextGen’s features is the file structure. Admittedly, it seems like a funny thing to call out, but even the file structure came under scrutiny as I looked over everything. (Admittedly, the file structure is probably more important than I gave it credit. After all, the file structure is the first thing you see when you’re dealing with something like Nova.)

In Nova 1 and 2, I tried to keep the file structure as simple as possible. What came out of that was 2 directories: application and nova. It didn’t get much simpler than that. The problem with that is that I let the framework dictate how Nova was structured instead of building something that made sense and having the framework fall in line. To make Nova’s structure clearer, I needed to pull items out of their folders and bring them up to the root. The result is a file structure that provides far more clarity.

A while back, someone asked where their skins went and I remember being annoyed having to answer the question. After stepping back recently, I recalled that interaction and kind of scolded myself because the fact was, where to put skins wasn’t immediately obvious. Someone who’s new to Nova can’t possibly be expected to understand that their skins get uploaded to the views folder inside the application directory. That’s a learned behavior through trial and error (or just a lot of time with the current way of doing things). In order to truly understand what’s going on, you end up having to dig through a bunch of folders (not to mention understanding web development parlance). This needed to change. What followed was an incredible number of iterations of the basic file structure for Nova NextGen. In the end, I think I’ve found a good balance:

  • assets
  • config
  • extensions
  • nova
  • ranks
  • storage
  • themes

There isn’t a whole lot of explanation needed here because it’s pretty clear what these things are and what they’re for (except perhaps storage, but that’s about logs, caches, etc. and things that shouldn’t be in the Nova core). The only thing that people may note is the change in terminology from “skin” to “theme”. Theme is a more accurate term for what skins are.

“Where do I put my site themes?” Funny you should ask… just drop it into the themes folder.

“What about a new rank set I downloaded from AnodyneXtras?” Pretty simple: that ranks folder right there.

“Someone in my fleet created an extension/module/MOD, where would that go?” You guessed it: extensions.

There’s far less digging around to find what you’re looking for; most everything you’ll need is right at the root. (Of course, if you’re going to be overriding files you’ll need to dig into the Nova core, but that’s to be expected.) It’s a little thing, but it should highlight the fact that nothing is off limits when it comes to the next generation of Nova.