In my last post, I detailed several ideas for new side projects and decided to move forward creating a tool using Silverlight to create architecture diagrams. I spent the majority of this weekend thinking through this idea and configuring my machine to develop Silverlight applications.
For now, I have come up with a working title for the project: "Architecty," and was able to secure "Architecty.com" to house the project. The basic concept is simple. Architecty will be used to easily create conceputal and logical solutions architecture diagrams like this one (taken from patterns and practices archiecture guide):
It is a pain to create these types of documents using Visio. The process usually starts with copying shapes from an existing diagram, playing with the alignment, size and colors inside visio to get things looking how you want. It is a very tedious process and is not really represenative of the architectural relationship you are trying to represent. Also, any changes are very painful because they force you to realign and resize things over and over again.
Sometimes you need create logical architecture diagrams at first, and then once platform decisions have been made you need to create physical architecture diagrams. The basic layout is the same with a few diferences, but you end up needing to do double the work.
The tool I am looking to create will allow you to define a model of the application: the tiers, layers and components that describe the architecture you are looking to build in a tree like user interface. I'll give users templates that define basic types of applications to help speed up this process.
Then when the user is ready, the tool will automatically create the architecture diagram based on the data provided. Boxes will be sized and aligned properly. Once the diagram is shown, you can choose from different color palletes, as well as styles (rounded corners, shadows, etc). At any time you can go back to the definition and change properties that will automatically be reflected in the generated diagram. (I will probably use a tabbed layout for this.)
If needed you can break the tie between the diagram and the model and drag and drop elements the way you would using Visio. This will be to allow for any finishing touches. When you are satisified with the look, you would then be able to push a button and an image will be made available for download.
My current thinking for monetization is that the basic Silverlight application will be free to use. The images it creates will be watermarked. A subscription model will exist to use the tool and generate images without watermarks. When Silverlight 3.0 comes out, we'll leverage the out of browser experience to allow subscribers to use the application offline, though they won't be able to generate images until they are back online (that component will be server based so that it can check if the user is a subscriber).
First I will look to support solution architecture diagrams, in the future I would also want to support infrastructure archiecture diagrams, but that will proabably be down the road.
As I don't have any .Net hosting currently, but I am currently thinking of using the beta Azure platform until I have the application developed. I already have beta access, and have been looking for a project to use it for so this works out well.
None of this is built yet, and I have to deal with some learning curve for Silverlight. Though I have used it for a toy project, it is nowhere near as complex as this will be.