Introduction

In this article we will go through the initial planning steps of a Touch, Gestures & Geo-location enabled News reader application which will allow user to read news from various sources over the web.

Application Features

1. Core Feature: Application will read user's location using GPS and show the user latest news from his nearby location. The news articles will be displayed in Windows Metro UI along with title, heading image and short description.
2. Area wise News: By Selecting area in Bing MAPs user can read latest happenings in that area.
3. Category-wise news: User can select categories & topics according to his interest for news articles e.g. Technology, cloud computing
4. User Interaction: User can quickly interact with the application to read and switch between various news articles categories using
a. Gestures
b. Touch screen
c. Internal Motion Sensor
5. Social Reading:
a. User can share the news articles over various social networks
 e.g. google+, facebook etc.
b. User can read news shared by other friend user
c. Users will be login to the application using windows live, facebook, linkedin, google etc.
d. Users will be able to bookmark their favourite news articles

Technology & Architecture

The application architecture is as follows: 

 A. The windows application will call the WCF Service to get list of latest articles and display it in   windows Metro UI, 
The windows application look and feel UI will be developed using C#, WPF and SQL Lite.
B. On the server side there will be a Windows service which will index articles from various news sources and store the metadata information in SQL database,
C. There will be a WCF service which will aggregate metadata from the SQL database according to location & category and send it to client whenever a WCF service call is initiated. 


WCF Code
//This code sample is just a planned implementation
public class Article
{
    public string Title;
    public string Description;
    public string Location;
}

[ServiceContract]
public interface IAllArticles
{
    [OperationContract]
    Article[] GetAllArticles();
} 
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] 
public class AllArticles : IAllArticles
{ 
  public Article[] GetAllArticles()
  {
       //Get articles data from SQL database using Entity framework
       var articles = (from p in DBContext.Articles
       select p).ToArray<Article>();  
       return articles;
   }
}

Points of Interest

The technologies used to make this application are:
1. WCF
2. WPF
3. Windows SDK
4. SQL Lite
5. C#
6. Entity Framework

History

October 17, 2012: Initial Draft
October 18, 2012: Submitted for review
October 19, 2012: Added Application Architecture