PROFESSOR: Ling Liu COURSE: CS 8803 - Advanced Internet Applications PAGE 3.0 PROJECT BY: - CHINMAY BARVE - DEVIKA KARNIK - KANAN GARG TABLE OF CONTENTS: 1. Introduction and History 1 2. Research Problem 2 3. Technologies Used 2 4. Objectives 3 5. Architecture of the System 4 6. Screen Shots 6 7. Contributions of the project 9 8. Evaluation 10 9. Reflections 12 10. Acknowledgements 13 11. References 14 1. 1. INTRODUCTION: This project derives its inspiration from the widespread growth of Social Networking sites that have consumed every individual’s daily life. It is not rare to see teenagers staying up late at nights scrapping their friends, joining communities that they relate to, adding friends and downloading applications that they find ‘cool’ and ‘interesting’. Although this phenomenon of Social Networking is relatively new to the online world, its rapid growth leaves little doubt that it can be used for dealing with issues bigger than just scrapping friends. HISTORY OF SOCIAL NETWORKING: Social Networking sites are defined as sites that allow individuals to firstly, construct a public or semi-public profile within a bounded system, secondly, articulate a list of other users with whom they share a connection, and thirdly, view and traverse their list of connections and those made by others within the system. The nature and nomenclature of these connections may vary from site to site. These sites cater to wide range of audiences, attract people based on common language or shared racial, sexual, religious, or nationality-based identities. Sites also vary in the extent to which they incorporate new information and communication tools, such as mobile connectivity, blogging, and photo/video-sharing. Long before the advent of Social Networks, people used the Web for social communication in the form of Bulletin Boards for sharing common interests or to focus on a local community such as that for gaming or DIY computer projects. One of the most prominent of such systems was FidoNet, a BBS network which allowed the transfer of file and data to people around the world. [1] Next came the Online Services in the 1990s, which as the name goes, provided a lot of services such as news, travel reservations, shopping and social hubs to its user. As the number of internet users grew across the globe so did the Online Services which began to build communities around groups that were varied in their nature. [1] Later came the Web1.0 and more importantly Friendster which was the first popular website which contained most of the feature seen in the social networks today. The earliest Social Networking Sites started out in 1995, with Classmates.com being the first of its kind to allow users to keep in touch with their classmates from kindergarten to college with its biggest base being the USA. In 1997, SixDegrees.com was created which allowed its users to create their profiles, maintain a friends list and send invites to other mutual friends (friend of friends). This last activity was what started the whole phenomenon of social networks. MySpace was founded in 2003 to promote independent music and the socialite scene across the globe. Aside from being able to listen to new music and finding out about the latest party, MySpace was a fun and artistic site where users could create unique profiles and share their favorite videos with friends. The latest on the scene of SNS are Facebook and Orkut started in 2004 and have their biggest client base in US and Brazil respectively. Although these sites started off with a view to encompass small communities, they have penetrated deep into the online world spreading to all nations and ethnicities. Orkut.com is one of the biggest online community which has its biggest population of users in Brazil followed by India, while MySpace and FaceBook are more prominent in USA. 2. RESEARCH PROBLEM: Our project is motivated by these social networking sites in that we too, are developing a networking site wherein people can send invites to their friends for any event that they are organizing while on the other hand the invitees can view their invitations respectively. This is the most basic facility provided by our site. The primary goal of the site is to help people get together and meet their friends. Instead of having to make phone calls and texting to invite friends for an event, this site provides a simplistic way for the friends to communicate. The basic research problem that this project caters to is the lack of existence of many such sites. It is seen that most of the sites today which involve the planning of events do not take the invitees’ preferences into consideration. This can be a major issue as many a times it is required that the preferences of the guests be known. There are times when the event is held at an inconvenient place for most of the attendees. Due to which many of them may not be able to the event. Thus, our site takes these minute details into consideration, while organizing a party. Also the meal preference of all the attendees is considered. 3. TECHNOLOGIES USED: As the project, we had a little hesitation between using Java or C# as our language. We finally decided on using the .Net platform along with MS-SQL Server 2005 for the database. 1. VISUAL STUDIO 2008 (IDE): WEB APPLICATION: For the purposes of developing our application, we used Visual Studio 2008 and C# as our primary language. To implement the Web Services we made use of the .Net framework 3.5 because it is more robust and flexible. Both the web services and the application were developed using this platform. While ASP.Net was used for the application development, C# was used to implement the functionalities and the Web services. Another reason to choose this platform was the ease of deployment of Web services using .Net platform. 2. MS SQL Server: We used the MS SQL server for the deployment of our databases. These databases are currently residing on our server which is configured to support MS SQL Server 2005. The ease of integration of Visual Studio with the SQL Server helped us choose the above mentioned platforms for the purposes of our project. 4. OBJECTIVES: Our Web Application has many functions which obliviates the users from performing manual and menial tasks such as calling friends when organizing an event. The main objectives of our project are the following: 1. Creating a social networking site for organizing events: This is the primary goal of our project. The site that we are developing has the following features: Creating an account: The user first needs to create an account on our site and enter his basic information such as name, phone number, email address and a photo (if desired). Make a friend list: The user now can create his friend list, by sending friend invites to his friends who are currently using this site. Send Invites: The user can send invites to all/some of his friends on his friend-list. This includes entering the name of the event, description of the event, the venue and time of the event, meal preferences and also the location preferences. View Invitation: The user can view the invitations that he/she has received. This will include the event name and description, the date and venue of the event and their meal and location preferences that needs to be filled out by them. In the end, the invitee has an option of RSVPing to the event, depending on their schedule. The invitee can also see all the other attendees to the event. This takes place on the Web Application side. 2. Creating Web Services: Once the users have filled in their information, this information will be sent to our Web service. The functions of our Web Service are the following: Collecting the responses: The responses from the invitees will be collected and processed by the web service. It will be inserted in a database which keeps all the information regarding the party and the attendees. Responding to the Organizer: The web service will be responsible for responding to the organizer regarding the number of people attending the event along with their location and meal preferences. This will be displayed on the side of the organizer after everyone has RSVPed. 3. Creating Databases: For the purposes of this project, we have built two databases, namely: Profile Information: This is on the side of the Web Application and is used to store the names and the passwords of all of its users. Any time a new user signs up, his information gets stored in the database. Along with this the profile of the users is also stored here. This may include the email addresses, his friend list, phone number, photo, albums and so on. Web Service databases: The Web Service has one main database. It keeps a track of all the information that the organizer has entered. This will include the event name and description, his event’s location and date and a list of all the invitees. On the other hand, once the invitations have been sent out, the responses from the invitees is also stored in this database. This includes their responses to the event, whether or not they are attending it and their meal and location preference. Once this is done our Web Service will calculate the number of attendees along with their meal and location preferences and send it back to the Web application for it to be displayed on the organizers side. Thus, the main objective of our project is to deploy a Web Service which provides the functionalities of helping other web sites keep a track of their information. The web application is obliviated of all the trouble required in doing so. 4. ARCHITECTURE OF OUR SYSTEM (DESIGN PROTOTYPE): Organizer Information 5 WEB SERVICES 1 . 2. [Type a quote 4 from the . or the WEB APPLICATIONS document summary of an interesting point. You can position the text box anywhere in the document. Use the Text Box Tools tab to change the formatting of the pull quote text SOCIAL NETWORKING SITES box.] 2 3 . Profile Information Information 6 APIs API’s Google (Google, Maps, Boorah ) Boorah MAIN COMPONENTS: 1. WEB APPLICATION: This includes all the Social Networking sites which may make use of the Web Service. In our project Page 3.0 is the social networking site which uses the web services published on the web. 2. PROFILE INFORMATION DATABASE: This includes all the profile information that the user fills out when signing up with Page 3.0. This includes username, passwords, email addresses and other personal information like phone number, photo and so on. The first table consists of Friend information which has user_id and frd_userid in it. The next table is that of Login which includes the usernames and passwords. 3. OTHER API’s: The web application also uses the other Api’s such as GoogleMaps, Boorah, Amazon for various reasons. GoogleMaps is used to show the location of the event and help the invitees to reach the place of the event. On feeding their current location they will be able to see how far they are from the location of the event. Boorah is an api which is used to get an idea of the ratings of the restaurants, how cheap/ expensive the menu is. This comes in handy when the inviter needs to see which restaurant will be best fitting for all the invitees who RSVPed. 4. WEB SERVICE: This forms the crux of our project. Here is where all the actual functions are performed. It takes care of extracting the information from the ‘invitations’ and putting it in the ‘organizer’ database. After this it sends the invites to the required people. Once the invitees respond with their meal and location preferences, it again updates the ‘calculation’ database. The RSVPs calculated and their choices, is again sent back to the organizer which can be seen by him when he logs back in. This web service is published on the web and can be used by any social networking site that needs to perform these functions. 5. DATABASES USED BY THE WEB SERVICES (‘ORGANIZER INFORMATION’): The database used by the web services to perform its functions. The first table used is that for storing all the information from the organizer. This table is stored in the ‘Organizer Information’ which includes event_id, userid, event_name, host, venue, date, type and event_info. The second table is that of event invitation. It has invitation_id, user_id, invitee_id, event_id and stuatus as its columns. The last table is that of user which consists of username, passwords and name in its database. 5. SCREEN SHOTS: Login Page: Home Page (Profile Page): Organize Event: View Invitations: 6. CONTRIBUTIONS OF THE PROJECT: This project started out with an intention to establish a social networking site where people would join in and make their own friends from those already on the network. In the advent of any event that needs to be hosted by them, they would send out an invitation consisting of various details necessary to plan an event. This social networking site primarily focused on organizing events based on the preferences of the invitees may it be the restaurants, the location, budget (at times) and so on. However, realizing that this would result in a massive amount of work and after discussing with Prof. Ling Liu, we decided to focus the bulk of our effort on creating a web service which could be used by many other related web sites that involved the same functionalities. As a result, the contributions of this project are the following: 1. MIDDLE-WARE – DEVELOPING A WEB SERVICE: As already specified, the main focus of our project is on the development of a web service which has the following functions: Create_Event(): This is a service which is called by the application when an event is created. Whenever, the user creates an event, the web application calls this function whose primary purpose is that of taking all the information from the invitation form and putting it all in the database. Get_Event_Count_By_Invitee(): This function returns a count of all the events that have been posted by the invitees. Get_Event_Count_By_Host(): This function returns a count of all the events that are being hosted by the host names. Get_Invitation_Count(): This function returns the count of the number of invitations that a particular user has received. Get_Events_By_Invitee(): This function returns to the user a list of events that he is an invitee to. Get_Events_by_Host(): This returns a list of all the events that the particular user is a host of. Get_Guest _List(): This function will return to the user the guest list of all the parties that he is hosting by name and party id. RSVP(): This returns whether an invitee has RSVPed to an event that a particular user has posted. Delete_Event(): This function is called once an event is deleted. 2. DEVELOPING A SOCIAL NETWORKING SITE IN THE FORM OF PAGE 3.0: Here we developed a social networking site which has already been discussed in the previous sections. The site poses as the front end of the web service and can be used by people to make accounts and send out invitations. This site is still in its nascent stages with basic functionalities. The functionalities of the web site are the following: Organize_Events(): Here the organizer can post his event by filling out a form which consists of the information required about the event such as location, meal, time, invitees and so on. View_Invites(): Here the user can view his invites and fill out a form where his preferences are recorded. View_parties_hosted(): Here the user can see all the current parties being hosted by his friends on his friend-list. The features of this site are: Making your own profile: This includes the name, photos, email address, about me, interests and the friends on your list. Viewing your friend’s List: Here one can view their friend’s list as and when needed. 6. EVALUATION: The evaluation of a social networking site is more qualitative than quantitative. This does not mean that there is no quantification of results. For the purposes of evaluation of our site and application, we have used some of the metrics that are most commonly used for the evaluation of a social networking site. Following are the metrics that we used for the evaluation of Page 3.0: 1. Security and Privacy: The security offered by the site is inbuilt in that by adjusting the Settings option in the application, the user can decide how much information to disclose. Some users can allow their profile to be seen by ‘Friends of friends’ while some might allow it to be seen only by ‘Friends’. All the information regarding the event is shown only on the homepage of the user and not anywhere else. So there is no disclosure of information. 2. Flexibility: The Web Service that we have implemented is flexible in that it can be used by other applications that want to make use of the similar functionalities as offered by Page 3. Since the Web Service is separate from the application, it is possible for the other applications to send requests such as ‘calculation of RSVPs’ to our Web Service which will then return the number of people who have RSPVed to the event. Thus, our system is flexible in this way. 3. Scalability: The database that we have implemented is hosted at a real server which can handle thousands of users. Since the database can handle thousands of users, the application is highly scalable and many users can sign up for Page 3, before it starts experiencing some problems. This makes our Web site highly scalable. 4. Stress Testing: The database that we are using resides on a real server which is capable of handling many real time requests. Even by adding many users, who issue requests simultaneously, there will be no issues as the server is capable of handling many requests. Apart from the above mentioned performance evaluation methods, we also performed qualitative evaluation based on the following metrics: 1. Definition of the social network’s purpose and audience: This goal deals with defining a social networking site’s purpose and its potential audience. For Page 3.0, the purpose is to have a user build his community of friends by adding them to his/her friend list and then use this site to organize events between himself and his friends. This is the primary goal with the intention that a user is alleviated of the burden of calling up people when trying to organize a party. Also friends can be alerted of an event by the user instead of the user forgetting to call the acquaintance at all. The audience that Page 3.0 caters to is anybody over the age of 13 years and is capable of making a profile and has events to organize. There are no restrictions as to who can join the network. This is because we want to facilitate the interaction between people by having them organize events and then leave it to their invitees to come up with the meal and location preferences. 2. Customizing the social network’s design and seeding it with good content: For this our site allows users to edit and customize their profiles according to their liking and preference. They can select the friends that they want and reject the requests from those not needed. For customization, we have provided the users with the facility of uploading their pictures on the profile. The one distinction between social networks and online communities is that social networks allow users to project their elevated profiles to look more like a user homepage that displays a very rich and contextual set of information. Also, the member home pages are not peripheral to the discussions or a subset of the community; they are at the very core of the system . For good content we have implemented various features. Firstly, there is a link that allows you to view all of your invitations. Secondly, the site is not cluttered with unnecessary feeds, ads, notifications and information not pertaining to the user that are prominent with other social networking sites. As our primary goal is to help facilitate the interaction amongst friends by helping them organize events and parties with people close to them, we have kept our interface to the bare minimum, only including that information which is necessary and will promote the user in making a quick and speedy invite and generate an equally quick and speedy response from the invitee. 3. Easy contribution from members: As the members form the core of any social networking site, we feel that any member should be able to contribute his information to the site with equal fairness and that there should be no community manager to keep a track of all the site information. Each member has an equal opportunity to post his invites and respond to parties that he has been invited to. 4. Network Centric Navigation: Social networking enables a new level of community navigation. As discussed previously, members have home pages and displayed on those pages are explicit links to other members and groups. Further, groups display links to members who have joined the group. This structure helps members find other members that are on the site but they didn’t know about. This feature is also present in our networking site. 8. REFLECTIONS: The Original Idea (Proposal): This project has been very interesting right from the proposal to its actual implementation. The project had started out as an idea to implement a site which will help people in connecting with each other for a single purpose of organizing events and parties. We had originally proposed to include a lot of api’s in our project. Some of them were GoogleMaps, Boorah, Amazon, Billmonk and so on, all attending to different functionalities. GoogleMaps Api: We wanted to implement GoogleMaps to show the location of the event so that everybody attending it would have an idea of where the event is being held. Boorah api: Boorah is an api which provides an evaluation of the restaurants that are located in the vicinity of the event along with the restaurant’s ratings, their specialties, the cuisines offered, the menu, prices and so on. Amazon’s api: We wanted to implement Amazon’s api to help the invitees collaborate together to purchase a gift for the organizer. This api would help the invitees pick out a gift from Amazon’s web site with everyone’s agreement. The idea was to implement a concept of ‘shared gift’ for the event holder. Billmonk api: With the concept of shared gifts came the concept of splitting the cost of the gift. This led us to include the Billmonk api in our application where the invitees could easily keep a track of the money matters between themselves when settling on a gift for the organizer. The Actual Project: The actual project, as can be seen from the report, is quite different from our proposed work. After our meeting with Prof. Ling Liu, we decided to focus on the middleware more than the application. Thus, evolved the idea of ‘Web Services’ a third party agent, which performs some functionality on the behalf of the application. The core of our effort, as stated before, has been on the development and the publishing of the web services. Web Services - A New Concept: As none of us had ever worked on web services before it was a fairly new idea to us. This involved intense research about this concept in the initial phases of project. After having a good idea about web services, the next obstacle was the technology to be used. After several discussions we decided on using ASP.Net with C# as the primary language for front end with MS –SQL 2005 as the back end. The Project As It Stands Today: Although the interface does not have a lot of api’s, there is still a very good web site with a clear purpose. The web service is published and is running for all the function stated above in this report. The back end is also capable of adding new users as an when they join and maintaining all the user information. 9. ACKNOWLEDGEMENTS: We would like to thank Professor Dr.Ling Liu for her support and guidance throughout the development of this project. She has helped us at every stage of the project, right from the proposal to the actual deployment of the project. 10. REFERENCES: [1] Unravelling the Web Services Web - An introduction to SOAP, WSDL and UDDI - Francisco Curbera [2] Lessons from Giant Scale Web Services - Eric A. Brewer [3] Web Services Architecture - http://www.w3.org/TR/ws-arch/wsa.pdf [4] Modeling Stateful Resources with Web Services - Ian Foster [5] Web Services Eventing - Don Box