Your business's website is one of your most important tools to show yourself off to potential customers and provide services to existing customers. We can help by designing a website specific to your business's needs.
We strive to keep our designs clean, focused and free of unnecessary clutter. Our goal is to help you deliver to your customers the information they are looking for as quickly and easily as possible.
A successful design begins with wireframe mockups - powered by Axure - which allows us to iteratively work with you to make sure the design is right. Once we decide on a user interface direction, we create a full design in Photoshop which is graphic-intensive, and is meant to look like the finished product.
We are committed to pixel perfection. For examples of our work, see our client list.
Application design patterns are meant to promote code scalability, maintainability and quality. In order to accomplish these goals, a solution is generally separated into distinct modules - or Layers – the most common of which tend to be Presentation (UI), Logic (business rules) and Data (persistence). This separation allows developers to work within minimal components, reducing unintended regressions and promoting ease of testing.
We typically take a Domain-Driven Design approach, implementing an Onion Architecture (also known as Hexagonal or Ports and Adapters) to avoid an anemic domain model, in favor of a behavior-rich and loosely-coupled application. The Onion Architecture pattern is shown here:
The goal of this pattern is to write code "in terms of the domain," making only inward references. With the integration of the Unity Inversion of Control (IoC) library, we can minimize concrete references, using interface-based resolutions instead. This architecture is specific to the solution setup, but does not directly apply to the presentation layer - loose coupling is further promoted on the UI with the MVVM Pattern, which seeks to provide an interface from which the UI can read in data, without tightly coupling to (or having any knowledge about) the domain model behind the scenes. The MVVM Pattern is shown here:
We implement MVVM using libraries such as Knockout.js, which allows the UI to serve almost exclusively as a presentation layer, while abstracting all logic into the ViewModels. Knockout also allows asynchronous updates via XHR requests to Web API, as well as working with SignalR to provide live, push updates to the user(s).
All of our client sites are hosted in a dedicated Azure environment, which ensures high scalability, uptime, and fast page loads. All source code is maintained in Team Foundation Server, hosted by Visual Studio Online.
For clients interested in adding and updating their own content post-launch, we provide implementations using a Content Management System (CMS) called Umbraco. It is an open source platform, which makes implementation relative inexpensive and robust.
For dynamic, data-driven applications, the data model is of the utmost importance - a good design can make your website significantly faster, and ensure data integrity and transaction atomicity (see ACID).
SQL Server is an ACID-compliant technology that hooks up easily with ASP.NET-based web applications via Entity Framework (EF). EF is moving toward a code-first model, which keeps the developer within the application and out of managing SQL directly. This ensures that the database works exactly as intended by the application developer, while managing changes that can be saved along with your source code in Team Foundation Server (TFS) source control.
We can model your data based on the application's needs, whether transactional or reporting in nature.