Like many developers, I have a few domain names stashed away for rainy days. WhatIWantMost.com is one of those domains. I registered it a while back after doing some brainstorming with a colleague about building a holiday gift registry application. Similar to many of my projects the thought started out as something I wanted to build for my personal use (and my family's), but then I soon realized it might be worthwhile to offer publicly.
I worked on the site's concept for a while, mostly on paper, and then set it aside to work on paying customers' sites before ever really getting started.
I saw a demo for an interesting technology a few days ago and thought that I might want to play with it a bit. In looking for a playground for that work I remembered the WhatIWantMost project. Then I thought that documenting the development of the project here might be interesting. This is the first step of that journey.
I do not have a time goal for the project because along with work I have a ton of other things still on my plate that I need to finish up (like about 4 dv tapes worth of home movies that I need to edit and burn to DVD), but I hope to make steady progress.
Normally a project's goal has everything to do with the end result (the
site) and shouldn't be concerned about cool technologies - at least not
from the beginning. However, this project is all about the cool technologies so the end result, the web site, is really an afterthought. I do want
to end up with a good working site that could be deployed, but at this
point I don't know that it will. This time around it's all about the
journey, not the destination.
Project goal: To create a production-worthy web site using as much code/database generation and automation as possible. It will, of course, be built on .NET using VisualStudio 2005 and SQLServer 2005. I will target the 3.0 Framework, though right now I don't know that I will use any of the new 3.0 stuff, it will probably be mostly standard 2.0 functionality. Perhaps I'll work some WCF stuff into the project in the form of a web services API.
Personal goal: I want to get some practice in developing an architecture from the ground up (but not ignoring previously gained knowledge, of course). I hope to work with and learn more about .NET features that I have had little exposure to in the past. For code/data generation and automation I will be using a few tools that I have used in the past and new tools that I want to try or that I will discover along the way.
Targeted technologies: Though I have an interest in working with NHibernate and the Castle Project (and Active Record in general), this time around I am going to be using .netTiers in conjunction with CodeSmith 4.0. I have successfully used CodeSmith in the past for many purposes, including generating data layer code from an existing database and domain layer code from xml files. I have also generated CRUD stored procedures for SQL Server databases using a process described in the article, "Advanced T-SQL: Automate the Generation of Stored Procedures for your Database", published in the April 2003 edition of MSDN by Peter W. DeBetta and J. Byer Hill. I have used a modified version of the process described for every project since I first read the article - the stored procs are part of my Model database so then get added to every database I create. It has been successful to this point and a great time saver.
Though monetary gain was not a primary concern, it is one of the reasons WhatIWantMost stalled the first time around. The only way that I could think to support the site other than money from my own pocket would have been through pursuing advertising revenue from online stores and boutiques that might be listed on the site. I don't have time for stuff like that, though - I build websites; I'm not a salesman. However, today there is Adsense and other similar programs. If the site is eventually launched that would be the initial form of revenue, would probably be enough to support hosting, and is another technology to be included with the site. I will also look into the revenue affiliations with Amazon and other sites that we may send users to.
Though I have read quite a bit about SQL Server 2005 Reporting Services, including being a tech reviewer for SQL Server 2005 Reporting Services in Action, I have not really implemented anything "real" with it yet. This is another technology I hope to incorporate into the site.
My exposure to Microsoft's ASP.NET AJAX (formerly ATLAS) has been limited to working with controls from the AJAX Control Toolkit and basically tweaking some of its examples to come up with the new AJAX Showcase. I hope to implement some AJAX UI elements where appropriate in the site and learn a bit more there, too. Maybe I can get a little "mashup" type stuff in there, too, like returning lists of matching products from amazon, froogle and other sites.
So what will WhatIWantMost.com become? Basically an any-occasion gift registry site*. People will be able to create accounts and select/list items they would like to get as gifts, supplying as little or as much information as they would like. They will be able to select users of the site they would like to allow to view their lists and they will be able to invite others as well as send emails to non-members to allow them to view their lists as guests. Gift lists will be provided as RSS feeds. Additional traditional gift registry functionality should be included.
*Yes, I know there are plenty of gift registry sites out there already. Some of them are good, some of them are not so good. I'm really not concerned with them; I'm not going to research them to make sure I incorporate the best ideas from them; I'm not worried about trying to break into their market. I really just want to build a web site using some cool technologies and this seemed like a good project where I and the reader (yes, that means you) would understand the domain well enough. I didn't want functional details of the domain to get in the way of understanding the development process and the decisions related to it. I think everyone understands the basic premise of a gift registry well enough.
Updated 12/8/2006: Another technology I want to include in the project is Telerik's RAD Controls for ASP.NET - mainly because I have a license for the product, have it installed on my laptop, and have never used it.