How programmable is Virtualmin?

I’m helping build a community web site, hosted at Joyent, that would like to program Virtualmin to create a set of “profiles”: for example Members and Projects. (There would likely be more, but lets just look at these.)

The idea is that when a new Member comes along, a Virtualmin form is filled out and they register their email address, name, login/password. Checkboxes would be used to create mail accounts, SFTP access, svn and so on. They’d also be added to a global “members” mail list, and have a Wiki page partially filled out for them and a few other site privileges/features defined like Forum membership.

When a new Project is defined, one or more Members are defined as a "group", a svn project initialized and a Wiki page created for the project. A mail list would be created for the Project with the Members automatically added.

Updates would allow Members to add/remove Projects they are involved with, and be able to change their email address when needed.

All the parts of the site would use the Member’s standard login/password.

So basically I’m wondering if this can all be automated … either with shell scripts or better yet with Virtualmin forms/plugins we create.