In the "About" pop-up of your Damselfy DAM app, it says "Powerd by Blazor". The wikipedia page for
Blazor says "Blazor is a free and open-source web framework that enables developers to create web apps using C# and HTML. (...) It is being developed by Microsoft."
I guess the client side (web browser) can run on MacOS. Is it a self-contained web client app ?
And does the web server side run on MacOS ?
The app is written in C# and .Net Core, which means the server can run on Windows, Mac or Linux (it could also run on Android, I guess). I've dockerised it and run it on my Linux NAS, but do all the development (and hence run it for debugging) on MacOS. The client-side is all browser-based, so yes, will run on any OS with a browser (it works pretty well on my phone, but the adaptive UI needs streamlining to make it really usable.
There's two types of Blazor app - Blazor Server, and Blazor WASM. The latter takes the .Net runtime, cross-compiles it into javascript, and runs that in the browser. It means you can write complete browser-based applications in C#.
My app runs in Blazor Server, though, which is more akin to normal web-app development. All of the logic runs in the back end, and it acts as a webserver. The advantage of that is that it's simple to write the server-side logic for DB management, image scanning etc. The great thing is that all your code is in C# (or mixed HTML/C#) which means no Javascript - a boon for me.
I'm currently using SQLite for the DB and data management, which seems fine - even with 500k images and 20,000 keywords indexed it seems pretty quick. SQLite is super-easy for deployment but I might extend it in future to allow connection to Postgress or MySQL (a bit like the Digikam model, where you can use its own in-built DB, or point it at your own DB for better performance and concurrency). We'll see.
The other thing I've been looking at is using an Electron container to run the app - the idea being that it would give me more options to have native interactions with the client-side OS. So for example: currently, to work locally on some photos in (say) On1 or Lightroom, you click 'export' and it downloads a zip locally. You work on the images, and then you'd sync them back to the server. If the app was hosted in Electron, you could nominate a local Pictures folder, and as soon as you pick images to work on they'd sync locally, and they could be synced back to the server in a single click. E.g., "check out, work locally, check back in" - which would be a nice workflow.