A
Dear @danielm,
we are conceiving a medium-sized MicroPython codebase [1] called Terkin for MicroPython [1b] for the Bee Observer project, which might well resonate with your questions and requirements.
So, we want to humbly point you to the terkin folder [2] within that repository which might spark some ideas for your development process on how to structure a codebase appropriately by using object oriented programming.
Similar to what you are describing, the datalogger program also uses quite a bunch of 3rd party modules which will get populated into a dist-packages folder through make setup [3] after cloning the repository. Thus, these packages are not part of the repository itself but will be acquired at development/build time.
Maybe this helps on giving you some ideas around what you have been asking for.
With kind regards,
Andreas.
P.S.: Just recently, our datalogger program started to spark interest with others and we got support from @poesel to integrate support for BLE [4,5] (thanks!) as well as LoRa/TTN telemetry [6] from other contributors. Saying this, we will be happy to accept further contributions from the community as we are aiming to make this more generic beyond its original scope of beehive monitoring.
[1] https://github.com/hiveeyes/hiveeyes-micropython-firmware
[1b] https://community.hiveeyes.org/t/developing-terkin-for-micropython/233
[2] https://github.com/hiveeyes/hiveeyes-micropython-firmware/tree/master/terkin
[3] https://github.com/hiveeyes/hiveeyes-micropython-firmware/blob/master/tools/setup.mk
[4] https://community.hiveeyes.org/t/ble-fur-hiveeyes/2637
[5] https://community.hiveeyes.org/t/ble-gatt-auf-esp32-mit-micropython/2371
[6] https://community.hiveeyes.org/t/hiveeyes-micropython-datalogger-goes-lorawan-ttn/2691