My work flow is .py files and vs code. I then mark my app .show or .servable.
.show is good for integrated debugging in vs code.
.servable is good for panel serve with —dev parameter, which restarts the server when files change.
Then I also use the awesome panel designer which can reload the modules/ files you are developing when clicking on a button. You can load data once when you load. In that way you it works a bit like the notebook environment and you can quickly see changes.