24/7/dev&coffee

simply me

April 2005 - Posts

Dissecting a web application - part I - requirements and plans

With this entry I am starting a series of articles describing the process of creation of complete web application with additional tools, http://theexpedition.info. This article is available also in Polish language on my other weblog.

In my previous entry I announced the launch of website about my planned expedition around the globe. As you can easily see, the http://theexpedition.info website uses ASP.NET, what you can't see but probably can guess, there is also a MS SQL Server database involved. Big thanks to my friend from Xenium for providing me with a free hosting.

My choice of technology was pretty obvious, as I am a .NET developer, probably more interesting are the requirements I had for the web application. These requirements weren't exactly typical, so I decided to create my own app. In this article I will try to describe main properties of the application that I wrote (and am still writing, as there are some more things to do).

First: The website should have structure of a weblog. Published entries should be displayed in reverse-chronological order, 10 on the main page of website, all other in the archive, in the form of headlines linked to full content.

Second: Besides blog-style entries, there should be a way to publish longer entries - articles. These articles can have aliases (for example "car" will be the alias of article descibing my (not existing yet) vehicle). I decided to identyfy entries by GUIDs (more on that later) and aliases will make creating URLs easier - they will act as shortcuts to chosen articles.

Third: Blog entires can be commented. It is nothing extraordinary, I just have to ensure that it is SQL-injection and Script-injection safe.

Fourth: There should be a RSS feed for convenient reading thru news aggregator.

OK, these were the typical things. Probably I should use Community Server and get all (or almost all) of that functionality for free. Why did I choose a custom solution? These are the reasons:

First: Website should be two-language. I want to promote it both in Poland and abroad (hoping a bit to create a buzz and interest some potential sponsors), so it was necessary that both UI and content were affected by choosing the language (EN/PL). What is more, I wanted to create a language autodetection mechanism based on HTTP headers sent by browser and preference-storing mechanism, remembering user choice (that can be different than autodetected setting) for following visits.

Second: Besides standard elements of blog / informational website, TheExpedition.info should contain structured data about visited places and GPS coordinates related to each entry or photo.

Third and the most important: I want to update the website straight from the field, using the laptop computer and different kinds of internet connection. Sometimes I will be able to go to internet caffee, sometimes I would be using a GPRS connection, and sometimes - if my budget allows (Sponsors, do you hear that? ;-) - a satellite uplink (slow and expensive). I need to be able to publish all elements desribed above without struggling with web administrative interface and with least possible bandwith use. So there goes...

Fourth: Together with web application I have to create a desktop client application,  allowing me to prepare content (entries, articles, photos, places and coordinates metadata) and send it compressed to web server thru FTP. There it should be automaticaly uncompressed and used to update a website. Additionally, there goes...

Fifth: Because I will need to use expensive and slow connections, the client application should allow publishing: texts alone, texts with image thumbnails, texts with thumbnails and full-resolution photos, only pending thumbnails (these already prepared but chosen to be not published until better connection conditions) or pending thumbnail together with hi-res photos.

Sixth: In my LandRover I will have a webcam installed. It will be making a photo of the road in front of the car every 5 minutes. It gives about 144 photos a day (assuming a 12-hour drive). This probably won't be published on the website during my expedition, but after I come back home. It will be a treat: full travel around the world using a slideshow of 50-100 thousands of photos. Would you consider buying a CD with such thing? Or downloading the CD image? Let me know, I want to know the possibilities. My client application should store these photos and annotate them with coordinates.

Seventh: Web application should gather basic statistics about page views and refferals, but without abusing the server I can use for free.

And that should be all. In next weeks I will walk through all modules of my web and client applications, describing their design and implementation using ASP.NET, Windows Forms, C#, XML and MS SQL Server. Do not hesistate to add a RSS of my weblog to your news aggregator and do the same with a feed from TheExpedition.info! I have planned a lot of interesting content. Spread news! Now I need all the publicity I can get, because soon I will start looking for sponsors. Thanks!

"The Expedition" project starts!
A not-so-little side-project of mine. Probably quite interesting. To make a long story short, just go to http://theexpedition.info and see for yourself. There is a RSS feed too. If you see the content in Polish, just click 'EN' in top right corner and let me know. But it should choose your operating system language for you by default.

All revenue from ads on this blog and on theexpedition.info will be used to finance that project.

I will post more info about custom ASP.NET application that drives theexpedition.info soon. Probably together with source code. We'll see.
Posted: Apr 28 2005, 12:51 AM by michu | with 4 comment(s)
Filed under:
New blog in Polish language
I decided to start a new weblog in my native language. That doesn't mean I will abandon this one, but I would like to became more involved in developers community in Poland. If you can read Polish, I invite you to http://dotnet.blog.pl.
Posted: Apr 07 2005, 11:00 AM by michu | with 2 comment(s)
Filed under:
More Posts