I do not know the amount and impact of your gaps. They could be just marginal information or major points. Best is, I guess, to iron any uncertainties out of you think you will need this in your app.
This is mostly your choice. You will probably need a running NC instance for testing/debugging. I guess you found the nextcloud-docker-dev which is quite common in the nextcloud ecosystem. But you have other options as well.
Again, this is on you. Coding standards makes it easier to switch projects and maybe to get help from other projects (they switch projects).
If you use the boilerplate project (see below
), the standard (I would better call it a suggestion) will be followed and also there are tools like prettier and php-fix-cs to shape your code are preconfigured.
Normally, I would suggest that you work your way through an existing app to understand the details and to check your knowledge.
Apart from that I suggest that you quickly create your app from the boilerplate project. That is to use the generator on the app store. The values you your there can all be altered. For done this is a simple change in the XML, others are more involved (changing the id/namespace requires more modifications). So take your time to fill in the form, create the app and put it in the correct location of your development environment. Do not get enable the app.
Depending on the complexity of your app, you should make some architectural planning before digging too deep into development. This will hopefully save you from time-costly errors.
What do you mean by core APIs? You need to interact with the server using the corresponding API. So, you will focus on using it. The app template is more an aide to set up the folder structure and e.g. the project configuration (for composer, npm, etc.).
I would remove all migrations first (or move them out to prevent nextdoor from finding them) to not clobber the database. All other files, you can decide if you might need them later or not and selectively delete or return them.
Depending on your project and the involved complexity, you might want to integrate automated tests. The template has some defined AFAIK. It might sound like much overhead to use test driven design. However, changes can be made with more confidence. They will take time and also the setup and automation is not trivial to get them into a useful state.
I made the error to start writing tests for a big project and it was quite involved and at some points very hard to achieve. (I am still not done.) This makes little fun. And I am only working on unit tests at the moment. So, write your tests early, this prevents you from having some hard-to-guess time requirement at the end of the project (which you will not do then as it works). The big benefit comes if you upgrade the app and see you broke it in some way. But if your tests are not there at the time, you have doubled you work.
Also, I suggest to really do more integration tests and API tests. They cover a bigger code range and also what the user is expecting. This makes them comparably cheaper to implement and useful. If you have neuralgic points in you code, you can do unit tests there as well.
The problem with tests is that it is 60% or more of the total work involved in the project, so there is whole lot of stuff to be thought of there. (And I do not know your experience level there)
One thing that I want to give to you as well: NC releases twice a year a new version. Again, I do not know your plan for the app and it’s complexity, but… There are some apps out there that try to support all available NC versions at the same time. This can be doable but from time to time there are breaking changes. So, this puts some extra work on you to keep an eye out.
Others (I would say the core apps and quite some of the more involved apps) push out a new major version for each NC release. This is then more administrative overhead (backports!) but you have a clear structure.
As we are just writing plugins, we are bound and tied to the NC core. So, we have to address the updates in early stages, as they will happen and we have no control over the release times.
I hope, this helps you for now. Feel free to ask further
Chris