Hi, Shameer!

As @Nicole Aaron mentioned, there is no officially proposed folder structure for your  InterSystems project, but I can share one typical approach.

The upper folder is basically named "src" assuming source code inside.

Files inside "src" could be splitted by source type. E.g.:

"cls" -  for ObjectScript classes,

"inc" -  for include files,

"mac" - for mac routines,

"dfi" - for DeepSee dashboards and pivots.

Every class name consists of package(s) and class itself. So class package could be projected to a folder. E.g. source code for the class Sample.Person will be stored in the file with following path:

/src/cls/Sample/Person.cls

There are numerous projects on Github which use similar approach. You can find examples of such projects via these cacheobjectscript-udl tag, e.g. this project.

HTH

Thank you, Lucas. But the thanks should go to @Oleg Dmitrovich

As for CSP - it is a file, and can be edited via VS-Code just as a file in a versioned folder.

If you are looking for exporting tools, I can recommend isc-dev module, which can export code as single files in a dedicated folder structure (including DeepSee stuff), can export a single kits - large xml kits, say releases, and also patches which a commit, or a set of commits in git.

Also there is a common approach to use the root as a counter of the one-level array using $seq(uence) or $I(ncrement). E.g.

Class Test.Arrays {

ClassMethod ArrayExample()

{

 set a($seq(a))="blue"

set a($seq(a))="red"

set a($seq(a))="yellow"

write a,!    // will return 3

zwrite a // will out the full array to the device

}

}

And if we execute the following in terminal you'll get:

USER>d ##class(Test.Arrays).ArrayExample()

3

a=3
a(1)="blue"
a(2)="red"
a(3)="yellow"

Also see the good article on $seq vs $I by @Alexander Koblov

HTH