Note: this is mostly a technical question but I have to explain the business background first.
THE BUSINESS PART
I have a really interesting situation on my hands, at least interesting for me.
For the last 3.5 years I've been building a business/application called Snip Salon Software. It's scheduling software for hair salons. Significantly, I've specifically targeted hair salons as opposed to nail salons or tanning salons, which have different needs.
The business has experienced a certain level of success but nothing spectacular so far. I have 6 salons in my local area using the product.
Some time ago I was approached by a couple of entrepreneurs in the lash salon industry, which has different scheduling needs from hair salons. (The beauty industry is a surprisingly complex space!) These guys would basically like me to white-label my product for them so they can sell it as part of a "business in a box" type package they offer to start-up lash technicians.
THE TECHNICAL PART
So the challenge I'm faced with is:
- I don't want to have one application that serves both hair salons and lash salons. I think it would quickly turn into a nightmare.
- I don't want to have applications running mostly the same code. That would be silly.
And it's not just the features - all the branding, etc. will almost certainly be different for each version.
So what I think I want to do is first fork the codebase and set up separate hosting, etc. for the lash salon application. Then, over time, maybe I want to factor out the common parts (e.g. appointment reminder emails) into modules (I'm using Ruby on Rails, so I'm talking Rails engines) and then let each fork of my application use the same copy of each module. I would of course situate it so that each engine only contained functionality that was common to the two forks of the application.
My question: from a technical perspective, how would you handle this situation?
Feel free to chime in on the business side, too.