Titan was the product of my failed startup, Zunama. It was a web-based project management application written in C#/ASP.NET MVC and MySQL with heavy use of jQuery/AJAX. We used SubSonic for the ORM. In the end, we only used the generated model classes and none of the query functions as they were so limiting.
Titan was an effort to keep all (software) project data in one place. It has a wiki for documentation, an issue tracker, a 'journal’ (forum) for discussion, a to-do application, and a user-configurable dashboard so the user can aggregate all of this data any way she chooses. We had big plans for it. We wanted to integrate it with revision control repositories, we wanted to add time tracking, we wanted to add a revisioning document store, etc. But that is a lot to do for two guys in six months!
I was in charge of the front-end. All the design, icons, HTML, CSS, and Javascript was me. I also took on the a couple pieces of the back-end. The wiki, to-do app, search functionality, and all the user/admin/settings code is mine from DB schema to Javascript.
We practiced TDD on the Titan project using NUnit. Tests were written for the model layer and the controller layer. Each SVN checkin triggered a build via CC.NET, a test database refresh, then a run through 1k+ tests.
Demo: http://mudhut.dnsalias.com ( Note: the server is on a crazy slow connection. sorry :( )
A screenshot walk-through is in order. Click on any screenshot for enlargement!
Dashboard
The dashboard is user-configurable. It allows a user to display only info that is important to them. They can create 5 dash pages ('Overview’, and 'Issues’ are pages in the screenshot), and can add any number of widgets to a page. Widgets can be dragged around, collapsed, removed, and their parameters edited in AJAX style.
To-do
The to-do app is very lightweight. There are simply two fields: the text and a due date. To-do items can be repositioned, added, edited, completed, and removed via JS/AJAX. Notice the red 'Marketing’ link. All text fields in Titan act like a wiki. Marketing is a wiki page that has not been created yet.
Search
We used a sphinx server for indexing and retrieving data. We use a simple context finding algorithm to highlight where the searched phrase was found.
Projects
Data is organized into projects. The front project page is basically a news feed of recent activity in the project. Each project has a wiki, bug tracker, task tracker, and a journal (forum).
Issues
Issues (bugs and tasks) allow for custom data (OS, Resolution in this example), and tracking of duplicates and dependencies. Notice the incoming links. Titan tracks all links between wiki pages, bugs, tasks, and journal entries (forum threads). Issue comments are added and edited via AJAX. Oh, and the number is bigass. I like it that way. I know what I am looking at. I know it’s a bug because the background is RED! :p
Wiki
Wikis in Titan are pretty standard: history tracking, version diffs, and a wiki syntax. Our wiki syntax was based on textile with some additions and changes. We were afraid textile was too scary for new users, so one can edit in textile with markitup or she can switch to the fckeditor RTE. This switch can be done on the fly while editing. No, the HTML to textile conversion is not perfect.
Journal
Our journal is really a forum. We called it a journal because we had different things in mind for it, but it turned into a forum. We’d like to think our 'journal’ is much lighter than a regular forum. It 'feels’ lighter anyway. We ended up using it to detail little changes we made to the code that may need a heads up or extra explanation. eg. “Oh, hey, I added this function. It works like this and you should use it.” We jotted down our ideas, and vented about stuff we didn’t like. It turned out to be very useful for our dev process.




