mirror of
https://github.com/yusing/godoxy.git
synced 2026-01-11 14:20:32 +01:00
Predefined categories #87
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @dacagi on GitHub (Jun 10, 2025).
Foreword
I only recently discovered this project and I've been implementing it side by side with my existing SWAG setup for a reverse proxy. I really like that this is simple enough for most people but also combines many features that would otherwise mean having separate services like Uptime-Kuma and Beszel for service and host monitoring respectively. I specially love its autodiscovery feature via providers, that's the most useful thing ever. In summary, congrats for such an awesome project, I'm super hyped and keep a close eye on it.
Question
That being said, my question/proposal was in relation to the predefined categories. I was looking to update the existing list with some more apps that I use and post a PR, and while I was doing that I noticed that I got some categories on my dashboard that I don't see mentioned in the categories.go file.
For example I got SearxNG categorized as Search, correctly, but I don't see the app or the category listed in the file. Also, Jellyfin appears to be under Media, but I got it listed in a new category Streaming. Similarly I got other services like Vaultwarden, Nextcloud, and even Filestash categorized but they don't appear at all in the file.
So my first question is, is there any other file I should be looking for which defines the categories used on the homepage? Where did these unknown categories come from?
Proposal
Second question, possibly maybe a feature too, what are your future plans around this? I would be willing to create a much bigger list of supported predefined services if you'd like me to. But then I thought about the difficulties around maintaining it up to date whenever new services come and go.
So I remembered as an example the well known and curated awesome-selfhosted list of apps, which kind of already does the same job. I was investigating the possibility of querying its dataset on awesome-selfhosted-data to externalize the issue. It provides not only service and category (tags) but also many other interesting details we could make good use of in the homepage dashboard.
I was wondering what your thoughts about these topics were, before I proceed further with either the PR to update the existing predefined list or a deeper investigation on the possibility to integrate an external tool to achieve similar results.
@yusing commented on GitHub (Jun 10, 2025):
Hi, first of all, thanks for loving the project and willing to contribute.
Seems like I forgot to mention this on the wiki, those categories are from selfh.st's icons.json: https://cdn.selfh.st/directory/icons.json. I think it should be enough and we could remove the
categories.go.Thanks for the dataset, will consider using this as a fallback when categories not found from selfh.st's list. If you're interested to implement this, please have a look at
internal/homepage/list_icons.go.@yusing commented on GitHub (Jun 10, 2025):
I see some interesting info there, I could add some of these to the homepage as well:
@dacagi commented on GitHub (Jun 11, 2025):
My bad, guess I didn't even consider where you'd be getting the icons from, that makes sense now.
I'm not versed in Go programming so I may not be the best candidate for such a big refactor. From why I seem to understand, you're getting most data from selfh.st including category from tags, then completing missing icons from walkxcode right?
homarr-labs/dashboard-icons aka walkxcode has categories and aliases, but I've found too many services without them. So it makes sense you only consider this source as backup icons. It currently has 1967 icons, the biggest dataset of following comparison.
selfh.st/icons has categories and tags (on their CDN version only), but most categories are simply "Self-Hosted" or "Other" and only 381 items have tags that we can read from. It currently has 1773 icons.
But I also saw the selfh.st/apps repo which could be an interesting solution too. It has far more data points than the icons repo (including tags), but on the other hand it has fewer services, only 997.
Lastly, there's awesome-selfhosted-data with I believe 1266 services. It does not have icons, and most if not all of the data is already present in selfh.st/apps.
All of this to say that maybe my awesome-selfhosted-data proposal wasn't as good as I initially thought.
You've already coded ability to parse json from selfh.st/icons. It would probably be far easier to adapt and extract from selfh.st/apps too, if we want to extract project details like github repo and last commit date.
The apps repo is not included in the same CDN as the icons, but I've seen the site fetches from selfhst.github.io. Hopefully this is a feasible solution without getting into Github rate limits since you use an internal cache for the icons anyway.
@yusing commented on GitHub (Jun 12, 2025):
Thanks for the info. Will have s look later
@dacagi commented on GitHub (Jun 12, 2025):
As already mentioned I'm not well versed in Go, but since we now have AI to help us, I decided to try and see what I could achieve today.
I won't open a PR unless you tell me to do so, I have limited trust in AI agents. Since it was me who proposed the changes I wanted to help as much as possible.
Please review my feat/app-metadata branch and let me know if this is even helpful. Do not hesitate to discard if useless.
App Metadata Integration Summary
Implemented a new metadata system that provides rich application information while maintaining backward compatibility with the existing icon system. The implementation tries to follow a clean separation of concerns and allows for gradual adoption.
Key Changes
/v1/list/metadata)referenceparameter to identify the appinternal/homepage/list_apps.go)AppMetastruct for rich application dataGetAppInfofunction that combines:constants.gomain.goBenefits
Backward Compatibility
Performance Optimization
Flexible Integration
Commit Structure
feat(api): add new metadata endpoint for combined app informationfeat(api): register metadata endpoint in API handlerfeat(homepage): implement app metadata system with cachingfeat(config): add app metadata cache configuration and initializationTesting
The test suite (
list_apps_test.go) covers:Next Steps
@yusing commented on GitHub (Jun 12, 2025):
Thanks for implementing the feature. Have had a slight peek, I think it would be useful. Will pull your branch directly and edit with interactive rebase.