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.