2

I am working on a system of websites and am back to an age-old problem of how to group the content.

In simplest terms, I am wanting to build something like a hierarchical organization of content, which most of the time gets modeled as 2 or 3 different types of objects in a nesting relationship (maybe 4):

  • GitHub: org/user > repo > content
  • Google Drive: org > drive > content
  • Linear (task manager): org > team > issue

I'm sure there'a million more SaaS app examples. On social media sites it's the general model too, you have like /@handle > content.

But here's my conundrum, what if I want to build like a Wikipedia-like system of content, which is bootstrapped by public domain content, and then "people/orgs/whatever" can create their own top-level "group/workspace/org/whatever", and create their own "projects/repos/etc." underneath. I was brainstorming recently and considered this:

mywebsite.com/ /@community # community content "workspace" /languages # project? or sub-space? /english # better project... /spanish /tibetan ... /programming-languages # another community sub-space /c++ /javascript ... ... /@some-brand-or-org # some person/brand/org workspace /my-fantasy-world # one of the brand's projects /some-fantasy-language # another of their projects ... 

So there we have:

  • workspace > sub-workspace > project > content

But projects too could become nested, like imagining J.R.R. Tolkien's languages:

/@jrr-tolkien /elvish /quenya /sindarin /lord-of-the-rings-book .... 

So that abstraction problem I'm running into is:

  • Workspaces can be nested
  • Projects can be nested

So.... How to solve this without just falling back to the simplified 3-tier structure of GitHub et al.?

It seems like in the end basically you have a tree of folders perhaps?? And then folders can be owned/controlled, and so everything is just like a "space" I guess.

/@alphabet /google /search /ads /maps /android /youtube /... 

Are there any examples like this to gain inspiration from? How would you solve this? I am literally thinking at the SQL DB level, because I don't want to create "workspaces have many projects have many folders, and then each of those 3 has custom roles and permissions and visibility and whatnot", it seems like there could be a clean general model, which is what I'm looking to find.

Note: What I don't want to do is have a simple "GitHub" model where the top level you just have nested namespaces like:

  • /google-fonts
  • /google
  • /google-research
  • ...

That is too messy.

2
  • 2
    Community, downvotes are for bad questions, not for a description of a bad attempt to solve a real problem. Commented Nov 19 at 17:26
  • Is this in the context of a web application, or folders with files? Commented Nov 20 at 18:47

1 Answer 1

3

I am wanting to build something like a hierarchical organization of content

This is your mistake. You jump to a familiar solution (which happens to be wrong most of the time), and then you try to fit your project into it.

Do it the other way around.

Collect the requirements. Think about how the information would be accessed. And only then come with the data structures that fit.

It may end up being a hierarchy. I hardly doubt it (as your own very basic example already shows a problem, where something can belong to multiple categories at once), but it might.

It may also be a flat structure with either tags or cross links or both. Such as on Wikipedia, where C++ page is at the root, not hidden in some arbitrary categories, such as “statically typed programming languages” which is part of “programming languages” which itself is part of “software development.”

It may be a tree of connections, such as Facebook.

Or it may be a mix of all those approaches, or something completely different.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.