What you can edit online: you can edit whatever you want. You can type import module_that_does_not_exist
without problems. You can edit it, it doesn’t mean it will work
What you can run online: a free plan will allow you to run in the restricted free environment, so you will not be able to create custom environments.
One solution to this would be to pay for the cheapest plan that allows you to test your app online during the development, then, once the app works on the open source server, stop paying and keep using the app without the account.
A second solution would be to create a module to test the UI and develop the UI on the Anvil editor, then use PyCharm (or whatever you like) to develop the real production modules on your computer.
I am using the second approach right now, but, since I have a paid plan, I don’t need a mock simplified module. My reason is not trying to pay as little as possible, but taking advantage of the debugging power of PyCharm. I use PyCharm to create my classes and test that they expose some dictionary-like properties, so they can be used with repeating panels. I test my classes using uplink, so they have access to all the services, including the datatables, available in the Anvil account. The app I’m working on has dozen of classes, thousands of lines of code, a very complex logic and a test suite with hundreds of tests. Working without PyCharm would be a nightmare. The only ugly detail is the import: all the modules have two import blocks, one that works in the Anvil server and one that works locally. Here I describe my workflow.