24/7/dev&coffee

simply me

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!

Comments

Jarno said:

See comment. Is this simply not yet implemented? It would be a great way to get back to those ads and makes it easy for people to start browsing the site. Right now, I can just read the RSS feed in my aggregator and do nothing else with the entries unless I go to the website manually and look up the matching entry.
# April 29, 2005 6:44 AM

Michal said:

Thanks, I missed it. I will make it work in the evening.
# April 29, 2005 6:48 AM

michal said:

OK, it should work now. Thanks for pointing the issue out!
# April 29, 2005 12:37 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)