We're so proud of what we were able to accomplish. Our client wanted the application suite to be
- highly responsive and scalable, ready for clients to come aboard quickly and use the software heavily
- cost efficient- our client wanted to pay for high quality reliable software, but not have to pay more than necessary for shared functions and maintenence,
- reliable and resilient, since other businesses would rely on this appliation to run and
- mobile, since many of their clients wouldn't alwyas (or in some cases ever) have access to anything more than a phone or tablet
We designed their system to use Microsoft's cloud solution, Azure. The owners of the website felt that they wouldn't often need to update their images or pictures, so we saved them some money by not making the site a Content Management System, or CMS. Their clients, however, would need tons of customizations. In addition to making sure that appointments and shifts were covered by employees who could perform the services assigned to them and that there was a room/location/resource available for them to use, their customers needed an application that could let them designate minimum and maximum numbers of employees for a given shift, allow a custom portal for customers to optionally make or request appointments, and build custom reports and graphs to visualize and quantify their data.
Another concern was keeping track of who made what changes- it's all well and good to let customers decide who can override rules for creating and overriding shift rules, but how would they know which of their users disabled or overrode a rule? How could they track how many times an employee gave someone their discount over a given time frame, and how could they find out who wrote a nasty note about a perpetually difficult customer? We designed the system to have automatic auditing. Each piece of data that goes into the application must be accompanied by the user making the change (the system actually rejects chanes without appropriate user information as a secondary security measure) so that customers can view all changes made by all employees.
Data security is also cruial, since customers could lose their entire livelihood if their client lists were exposed and employees could literally have their lives put in danger if someone managed to find out their work schedules. All of the site data, be it through the web application or the Windows, Android, or iOS mobile apps, goes through one central repository, and that repository again requires a valid signed in user to return data and filters data by only that organization to which the employee belongs, so that no customer can see another's data.
Speaking of mobile applications, our customer was interested in mobile design, mostly due to the ability to integrate with their employees' phones and push notifications of staff news updates or shift changes, but wanted to allocate more of their budget towards the web application and didn't feel that paying for two or three mobile apps was a wise use of money; they also feared the added costs of maintaining those extra applications. We were able to demonstrate with Xamarin, recently acquired and supported by Microsoft, that not only could we write the app one time and have Windows Mobile, Android, and iOS applications, but that much of the code for the website could be reused for the mobile apps, bringing down their initial investment as well as the maintenence required.
To further save on the budget, we leveraged our investment in Telerik's KendoUI control suite. Although the mobile apps still have some advantages on the site viewed on a mobile browser, using these controls allowed us to develop without worring about how the application would look on the phone or desktop. All functionality is available on a desktop, web, or tablet, and the controls adjust themselves to the screen real estate without hiding the functionality available.
In order to accomodate customers with multiple terminals, we used SignalR to keep different users in the same organization abreast of the changes that others have made and improved the API to check for conflicts when adding, updating, or deleting records, whether the users were right next to each other or on opposite sides of the planet. And as for the API, we opened it up to customers- they can query their own data without worrying about bringing the system down as well as make their own interface to retrieve and manipulate the data in the system.