Modular Design
I have great respect for WordPress and other software that has been doing this very thing since before I started in the industry. I started this application because I wanted a C# based system where I had full access to my codebase. At the moment, I have zero intention of turning this into an open-source project, and the only open-source resources are a few JavaScript libraries where anyone is free to see the source code.
Resalient is long ways away from becoming brandable; however, I have started taking the time to move brand items into a table to begin the journey of one day being able to release an installer (or a package?) so that others can use the platform with their own branding.
One of the first hypothetical customers for this platform was small businesses and non-profits, those without a large budget who would need a single system to manage both their external web presence but also provide a single set of internal, cloud-based tools so their members could grow their program.
The branding feature set is more than just logos and company names. To really be able to ask others to use the site, branding will be feature-complete when users can create their own navigation level pages and be able to use their own HTML templates to present those pages. For a middle and backend developer, that is a lot more challenging than it sounds. The challenge is what keeps experienced developers coming back to the table.
When I interview for Dynamics CRM positions as an architect, I am asked to explain "challenging" coding solutions I have personally written. While there are some nuanced implementations that were "tricky", I have not seen a "challenging" software issue since becoming a Dynamics CRM consultant. By and large, the use cases for Dynamics are very straightforward, except when I have to fix code from people who have put no time to understand how the platform operates.
In one of the more interesting scenarios, the customer had opted for Dynamics Portal implementation to allow their external users to fill out a 400 field long document; and when the customer saw the page load times for segmenting the document into roughly 1-1.5x screen length chunks, he nearly fired the team who had won the contract. While not "challenging" to solve, it was straightforward to solve through a clever use of JQuery to hide and show panels with a dynamically built menu system that could keep up with the backend custom forms being developed inside Dynamics.
By contrast, Resalient is a playground where I have full access to do things in a more intentional fashion.
For me, the joy of development is in building systems that feel intuitive to the next developer who needs to participate in the production of the service. Software is like poetry, and you know when the next verse was written by the author or not. Even parody artists like Weird Al have to pay attention to the style and cadence of the songs being altered, otherwise the entire parody falls apart.
Since software is just like this, it is all the more important to have clear design patterns to help guide those who come after achieve more from the underlying platform experience.
So, all that to say, I have started the journey of adding the features needed to allow re-branding of Resalient with a target audience of small businesses and nonprofits. What features does your company need to succeed with a platform like Resalient? Let me know in the Contact Form.