As part of my series… let’s build a salesforce app, I’m building a utility application for all of my future apps as well as anyone else that ever wants to try the framework. I will eventually open source the code if appropriate.
The unique thing that I am doing is I am making THIS application the dependency for my actual Salesforce appexchange apps. The utilities will be free — but the apps that use them will require its use as a package dependency. So in other words… I’m building a low level library for the rest of my higher level functionality.
Here are my plans on the architecture:
— I will use CumulusCI and Github Actions as the CI/CD solution
— I will use 2nd generation packaging
— The library will be supported by myself (for now until i can afford a better programmer!)
— The libraries will implement my patterns that I have used over the past 20 years of consulting and the last 10 specifically focused on advanced Salesforce.com projects
— My main goal is to create a very simple library that allows my functional applications to focus primarily on functional requirements as opposed to cross-cutting concerns.
— I will also be using CumulusCI on my ISV functional apps that use my utilities as a dependency. I will have to figure out how to manage those configurations individually but also working together
— I have one utility inside of the library for the scheduling and execution of my apex worker framework. This is pretty cool as it allows me very easy development of new workers and all workers benefit from the framework features
— I also implement a DML and querying abstraction layer as a utility. This allows my function apps to make easy database queries that enjoy all of the difficult privileges' that is salesforce security review.
— These functions (and many more) will be available via my Salesforce API framework. Possibly overengineered but possibly one of the coolest things I’ve ever written.
— I need to explore the architecture of different packages with the same namespace. I have not explored that architecture before. Otherwise each app will have its own namespace. (hopefully not i have a sweet one)
So I get that writing apex classes is like so 10 years ago. But if you work on the kind of projects I work on as an independent Certified Technical Architect and serial entrepreneur the frameworks I use and the tools I will build upon them have an incredible amount of reusability on every project I work on. In other words… it makes Salesforce (which is awesome) even more awesome. And that is awesome.
Let’s build the CI/CD for the Utilities library