I have a small business that sells website solutions to clients. The websites serve the same purpose; to allow the customer to send and schedule SMS messages.
Each website is slightly different. For example, 1 site has mandatory information such as address details and group name while the other has different requirements such as logging the IP address of a user but does not need any address details.
All the websites are built using LINQ TO SQL and are just websites, rather than web applications.
Each website has its own database on my server.
Each website uses an exe to send out the messages. That exe is the same exe but each website has its own copy and scheduling procedure located within the bin directory of the site and is fired using Windows scheduled tasks.
Each website uses the same web service to communicate with a central server that sends messages and returns a response.
The customers can change the ASPX pages but not the code behind.
At the moment, I have a file structure on my dev machine that reads something like:
Client1Dev Client1_Published
Client2Dev Client2_Published
... And so on
Separately, there is the polling application (a windows console app)
When I make a change, I publish the client site to its _Published directory and then copy the DLL from within the bin directory to the production server.
My question really is what would you do to manage this stuff? If Client 1 want's a change, I make the change to the dev site, copy to published and then FTP to production.
When building new sites, its a nightmare because there might be changes all over the place in different client projects which could be useful for a new customer.
If I find a bug, its a real nightmare as I then need to update all of the sites 1 by 1 ensuring the bug fix does not break a particular project.
Any advice on this?