I agree wholeheartedly with @Slawek about using an Adafruit board of some kind as a gateway, for first-pass stuff.
The biggest issue I run into trying to use BLE on computers is that the API is highly variable. For instance, say you need your “product” to just advertise a temperature, and you need a PC app to report the advertised temperature, and not other stuff from other BLE devices. On Windows, you can certainly write a .net app to do that, and on Mac same with Swift, but using a platform-specific toolkit is rarely the easiest path.
What IS easy is “anything that falls within Adafruit’s purview.” For instance, CircuitPython can run on a desktop or SBC as well, via the “blinka” layer. If you do this on a raspi, you can interface with the Pi’s BLE same as you would with CircuitPython on any of their other supported dev boards, so prototyping an advertisement listener is super easy based on examples. Ditto Mac - BLE just works with circuitpython, so that’s easy too. Though there are always some platform-specific gotchas that I always re-run into. On Windows, things are a little different, and I think I recall the easiest route is to use a BlueGiga USB BLE module, which has a different API apart from the system’s and is easier to interface with i.e. Python. But if you’re going to require an external module, that external module might as well be an NRF42840 feather, and then just do everything in circuitpython (and talk to the feather from your windows app via serial).
To get specific, the last time I had a project with similar sounding requirements to yours, the architecture was a temperature sensor on an NRF52840 Feather Sense (LOVE that board), advertising sensor data over BLE to a listener circuitpython script running on a Raspberry Pi, then that same script would insert sensor readings into InfluxDB running on that same Pi. Grafana, also running on the pi, provided an extremely full-featured web interface to look through that influxdb-stored data, graph it, analyze it, etc.
I actually use InfluxDB and Grafana now, with whatever Python connector I need to whip up to insert data, for basically any “I need to log and graph data over time” thing I need to do. It’s SOOOOO nice.