In my previous post, I mentioned the creation of a home automation application using LightSpeed 3.0 and ASP.Net.  In this post, I’m going to start with an explanation of basic project setup.  In the posts that follow, I’ll elaborate on the development of individual areas of the application.

Initial Solution Structure

The initial solution contains the following projects:GigabodeProject

  1. Domain – Includes the core domain model as well as the interfaces that may be used to operate on the model.  Most of these interfaces will be implemented by the AppServices, DataAccess, and DomainServices libraries.
  2. AppServices – Services that support core application functionality, such as IOC and configuration functionality.
  3. DataAccess – Mainly a container for the repository functionality of the application.
  4. DomainServices – Services that apply rules to the domain.  Think of this as the business rules dll.
  5. Test.UnitTest – I’ll attempt to just have a single unit test project and split it out into separate projects later as needed.  Using the MSTest framework (booo!)
  6. Web – Kind of an aggregator for base web controls, service locators, http modules, and other items needed to support the various UI’s.
  7. Web.AdminUI – Though I’d start with an Admin UI for basic administrative functionality like controlling Membership, Roles, Lookups, etc…..
  8. Database – Just a place to put database scripts, not a “SQL Server” project, just the basic database project that houses script files.

Right now I’m just looking for an easy starting spot so I have something to help me get the infrastructure organized.  I figured I’d start with the membership functionality of the application and use that to drive some of the infrastructure concerns, such as logging, IOC, auditing, test setup, getting stuff into source control etc…  In part 2, I’ll pull a number of these items into the solution.

Source Control and Task Tracking

So I need a basic source control system and task tracking system.  I know you might say…”seriously, do you really need task tracking if it’s just you”?  My response is: yes!  It works in two ways:

  1. Serves as a notebook for all the tasks and “features” that pop into my head.  I want to stay focused but have a place to log these and remember them later.
  2. If somebody else starts helping me, we can split up and prioritize tasks.  Always good to get the system in place at the beginning of the project.

image

I’m not really planning on releasing this stuff as open source software, so I’m just going with a local solution for now.  I was going to start with SourceGear Fortress because it’s easy to set up and has issue tracking and source control as well as nice integration with Visual Studio, plus it’s free for one user.  But I decided against it in case somebody else gets involved because a license for Fortress isn’t cheap.  So I went with Subversion and Trac instead.  In addition, I did download and install SourceGear DiffMerge.  It’s free and it’s way better than the standard Tortoise merge tool.

Future Enhancements

As the solution progresses, I’ll add some more projects.  For example, I’ll need a windows service to communicate with the Z-Wave stick on the user’s local box.  I’ll obviously need the customer-facing website, and some web services or other communications mechanism (WCF?) for the server to collect data from the user’s house via the previously mentioned Windows service.  There’s a lot here….this could take a while.

Next: LightSpeed 3.0 App – Part 2 – Logging and IOC Initial Setup

Technorati Tags: ,,,