Umbraco for (local?) file management [thought expe...
# help-with-umbraco
j
Hi! Just wanted some opinions on the best approach to something I keep meaning to ask about. My use case for this is music-based, but it boils down to grouping PDF files by various tags and, um, groups. Say you were a musician with: - a band of many different instrumentalists (~10) - a load of songs (~20) - each song having a different part for each instrument (one PDF file per instrument, per song) ...and you wanted to make setlists (i.e. select ~12 songs) from the songs available. The end goal would be to group the files required by instrument, for a specific setlist (say, a pack for BassGuitar for UpcomingGig01) which band members could download. [Bonus marks for file renaming based on the song's order within the setlist]. Is this a thing I could crowbar Umbraco into doing? The files are content, and they should be manageable, and this seems like a system to do it etc. The other side here is hosting the source PDF files - the project itself doesn't even have to be deployed, it could just be a local app (for local people), so can I read off my own local file system (this looks like a case for [FileSystemProviders](https://docs.umbraco.com/umbraco-cms/v/13.latest-lts/reference/configuration/filesystemproviders) but I haven't looked too far into them at this point). Curious about people's approaches/advice/ideas, and whether similar projects have been done before. Hopefully this makes sense - I'm currently recovering from COVID so many things have indeed Stopped Making Sense. TIA! Rich
k
For some Umbraco implementations we've made, 80% of the Umbraco data is indeed non-browsable "data" content items. And we usually have a tag tree as a root node and then properties on every content item (browsable or not) to select tags from that tree. So what you're describing works very well for "managing data" in my opinion.
For the "files are content" part you would need something; links to the media library would be hard to work with. Ideally the media library wouldn't be actively used in your setup, right?
Not sure how you mean with the "local users" part - do you mean running this app on the web, but Umbraco working with local files? I don't see how that would be possible.
j
Local - I literally just mean running on my own computer, with files on my harddrive, organised with Umbraco
k
The only reason for a custom file system provider, then, would be if the entire item contents were to be mapped to disk files. But that doesn't sound like what you'd want.
The ootb media provider is already a local-file-system-provider.
Would there be a frontend part to this? To render the PDF tree in a tag-searchable way etc?
Sounds like ootb Umbraco's got you mostly covered for this. You'd need the frontend app for the "setlist manager" and "file downloader" etc.
I'd use a headless Umbaco setup for this; the razor-based item-based rendering pipeline wouldn't be a good fit.
Now you made me dig up my Renoise product key...
j
OK I'll look into this and get back to you - thanks for the direction!
@kdx-perbol "Tag tree" - I can't find this term in the docs/online, what does this term mean within this context? [Docs for Trees](https://docs.umbraco.com/umbraco-cms/v/13.latest-lts/extending/section-trees/trees)

https://www.youtube.com/watch?v=Mf2OLdLeQGk&t=8s

Hey it's @Warren Buckley
k
Just a custom content tree where each item is a "tag". So the content tree becomes a taxonomy or "tag" tree. Instrument (node) +-- Goodsounding (node) +-- TR-909 +-- Badsounding +-- Rusty trombone etc. And then you select from this tree on properties on other items. And this tree would be an unbrowsable root node in the Umbraco content area. This is the way we usually work with tags in Umbraco
j
AH ok cool, thanks for that.
Initial success! Mapped the songs to the parts to the files and the instruments to the players - files being read locally, no problem. Thanks for the direction! https://cdn.discordapp.com/attachments/1261280343671963658/1261459955408572446/image.png?ex=669309a2&is=6691b822&hm=fa737f75a6ff8aef8576eccb687351cc99f250922a1bb4fcb67ed7351548eca5&
k
Did you end up using a custom provider or some other custom service in Umbraco for this?
j
Hey @kdx-perbol - I made a Controller that reads the various nodes related to the root "Tracks" node (or similar - it's undergone some changes since then). I've included some screenshots, to give a rough idea but things have moved on a touch since I did this. ....so I'm unsure if "defining a Controller" counts as a Custom Provider or Custom Service - I can't stress how inexperienced I am with this area or understanding what those terms truly mean! This project is also largely for my own learning. https://cdn.discordapp.com/attachments/1261280343671963658/1263574568363229335/image.png?ex=669abb05&is=66996985&hm=6a12078d89acc2d900cf9582d250b5371834b64efa3fbfa9f39e15254909bcd5& https://cdn.discordapp.com/attachments/1261280343671963658/1263574568623149199/image.png?ex=669abb05&is=66996985&hm=19360066ec4d9fa5c8f2a858bb36a959d8ebf61aabe2796afe7cdd8f38bb36b8& https://cdn.discordapp.com/attachments/1261280343671963658/1263574568933654529/image.png?ex=669abb05&is=66996985&hm=29c8f377f2833e4b2dee15d6432ae86b3aebcf4cdfaa3a1231157777a969f2d2& https://cdn.discordapp.com/attachments/1261280343671963658/1263574569298432064/image.png?ex=669abb05&is=66996985&hm=9b670c25f3d42b888ad4a3bd64b6a2cfe885d068cc5c474080cf4d2c69945cbe&
k
Well, I can say right away that your solution needs more cowbell. No, this I would call a "classic Umbraco implementation" using controllers and API controllers, so not extending Umbraco with custom providers and custom services. Which is a good thing; extending Umbraco has a lot more overhead than just "implementing your own application".
j
Ah thanks for the feedback! Much appreciated
9 Views