Spring 2008 BUZZing Space CS 8803 Advanced Internet Application Development Project Report BUZZ-ing Space A social network for Georgia Tech Developed by Madhav Deshpande Purna Mehta Shilpa Pal Akshay Phadake Kinjal Shah (Computer Science Masters students of Georgia Tech) 1 Spring 2008 BUZZing Space Table of Contents 1. About Buzz-ing space............................................................................................................................3 1.1 Introduction.....................................................................................................................................3 1.2 Architecture Diagram......................................................................................................................4 2. Applications...........................................................................................................................................5 2.1 Community Forums.........................................................................................................................5 2.1.1 Introduction.............................................................................................................................5 2.1.2 Architecture..............................................................................................................................5 2.1.3 Database Design......................................................................................................................6 2.1.4 Workflow.................................................................................................................................7 2.1.5 Future Work.............................................................................................................................9 2.2 Car Pooling....................................................................................................................................10 2.2.1 Introduction...........................................................................................................................10 2.2.2 Architecture............................................................................................................................10 2.2.3 Database Design....................................................................................................................11 2.2.4 Workflow...............................................................................................................................11 2.2.5 Future Work...........................................................................................................................13 2.3 Image Gallery................................................................................................................................14 2.3.1 Introduction...........................................................................................................................14 2.3.2 Architecture............................................................................................................................14 2.3.3 Database Design....................................................................................................................15 2.3.4 Workflow...............................................................................................................................16 2.3.5 Future Work...........................................................................................................................19 2.4 Job Finder......................................................................................................................................19 2.4.1 Introduction...........................................................................................................................19 2.4.2 Architecture............................................................................................................................19 2.4.3 Database Design....................................................................................................................20 2.4.4 Workflow...............................................................................................................................21 3. Conclusion...........................................................................................................................................22 2 Spring 2008 BUZZing Space 1. About Buzz-ing space 1.1 Introduction We are proud to introduce the 'Buzz-ing Space' – a social network for Georgia Tech. It facilitates the GATech family members to stay connected with each other irrespective of the time and distance parameters. The applications supported by this module include Community Forums, Job Findings, Photo Sharing and Car Pooling. The motivation behind developing this application is to have all the Georgia Tech members together such that they can be of great help to each other at the fastest pace. People having common interest/field of study can form 'communities'. These communities are associated with forums which allow the huge amount of information to be shared between the members of the community. A naive user can post his queries on the forum and can get the response from highly knowledgeable people around the campus. In case of the urgent requirements, it is also possible to set up the meetings and get the query resolved as soon as possible. Freshers at GATech have little idea about the university system. It would be of great help to them if they are able to find seniors from their stream to come ahead and guide them in their needs. One such need we have handled here is the Job Finder application. The employers can post their job requirements on this portal. Students can view these postings and apply for the jobs matching their profile. Employers can then study all the applications and chose the right candidate according to their needs. This will save the efforts of both employers and students. We always prefer to share the classic/useful/memorable things with our acquaintance. One of the application that allows us to achieve this is the Photo Sharing application. A user is allowed to upload pictures and tag them. By tagging images, we make it available to the other users who have images with same tag / who are searching for images with that tag. There may be many events going around/outside the campus that might be of interest to a group of people. These people may not be knowing each other but they have the same schedule for that day. The Car Pooling application helps bringing such people together. A user going for a particular event can register himself on the portal. This information is publicly available to the other members. If the registered user has a car, he can be of help to others who don't have a car and are seeking some means of transportation. 3 Spring 2008 BUZZing Space 1.2 Architecture Diagram The users, applications, and server communicate with each other as follows: Community Forum Job Finder Database Server Application Photo Sharing Clients Car Pooling - Clients involve the registered users (can be a GATech student / professor / staff / alumni) The clients use the user interface to interact with the various applications (can be community forum, job finder, photo sharing, carpooling) − The application in turn deal with the database server (currently is WAMP environment) to get the information and service the user according to their requests. − 4 Spring 2008 BUZZing Space 2. Applications 2.1 Community Forums 2.1.1 Introduction Communities form a basic building block of a Social Networking application. Especially, for an Institution like Georgia Tech that has a long history (over a century) of educating people. At GATech, we have over 18000 students (undergrad and grad) being studied under over 900 faculties. For such a huge community, it is advantageous to have a way that can bind all the GATech members together at one place. The Buzzing Space's application named 'Community' helps us to achieve this goal. All the registered users can create/join a community. This communities are categorized based on the Program of School as well as any specialized field within that program. Each community is then associated with a forum where the members of the forum can post threads and the other members can respond to these threads. 2.1.2 Architecture Community Forum Application (WAMP Server) Community Forum Clients Clients: Server: Database: Registered users who are the GATech Community members/owners (can be student, faculty, staff) WAMP (Window Apache Mysql PHP) web server Tables that stores information about the members/owners of the community and threads of the forum 5 Spring 2008 BUZZing Space 2.1.3 Database Design ER Diagram: owns participates User Community contains Forum Database Schema: login username password community community_name owner category specific description community_user comm_name member owner accepted rejected pending forum comm_name title message id 6 name email Spring 2008 BUZZing Space 2.1.4 Workflow The application work flow is as follows: 1) The user logins to Buzzing Space 2) The user accesses Community page. He can see the list of communities for which he is either owner or a member. He can also view any pending invitation for joining a particular community. He is being given a choice to wither accept or reject the invite. 7 Spring 2008 BUZZing Space 3) A user can create his own community by clicking the 'Create Community' tab. This page gives him the options to enter the community name, the category it belongs to and the description about the community. On creating the community, he is being given a choice to selectively invite his friends to join this community. 8 Spring 2008 BUZZing Space 4) Every community is associated with a forum. On clicking a particular community, the page leads to the corresponding forum page. Here, he is allowed to view all the previous threads and reply to any of these threads. He is also given an option to post threads on this forum. 2.1.5 Future Work 1) Expertized Ranking: The user of a forum may be given a rank. The ranking may be given based on the number of queries he has answered pertaining to a particular forum, the accuracy/correctness of his replies, etc. 2) Privacy Preservation: The owner of a community may be given a choice such that he can enforce various access permission among the members of the community. 9 Spring 2008 BUZZing Space 2.2 Car Pooling 2.2.1 Introduction Car Pooling is a relatively new application in social networks. Although, there are large number of sites available online with this application, it has never been a part of social networks. In Universities, carpooling is common but there is no centralized way of doing it. There are numerous events around the year which many students cannot attend just because they did not have ride to go to that place or because they did not know any friend with a car going to that place. With car pooling application available online, this becomes easy. The best part of the application is visualization of the results on map which makes it more effective and easier to understand. Further, this application can be used for online event planning such as attending various career fairs, conferences, interviews or plainly picnics. 2.2.2 Architecture The architecture of this application mainly consists of 3 components: server, users and the car owners database. The server used here is basically WAMP server which provides Windows-Apache-MySQL-PHP environment. This eliminates the integration issues of various platforms. The users are basically students interested in car pooling and also students who have cars and want to participate in car pooling. The car owners database contains the data of the people who have cars and want to participate in car pooling. This database initially stores just the name, address and the event for which the user is going. Then geocoder function is used to geocode the addresses and store the latitude and longitude values in the database. The car pooling application basically uses Google Maps API to represent the results for the query posed by the user which are obtained from the car owners database. Car Pooling Application with Google Maps API (WAMP server) Users 10 Car Owners Database Spring 2008 BUZZing Space 2.2.3 Database Design Database Schema: Table contributors USERNAME ADDRESS LATITUDE LONGITUDE EVENT 2.2.4 Workflow 1. When the user starts the car pooling application, a form is displayed asking for the users’ address and event. The user also gets to select the radius within which he wants results. 2. When the user clicks on “Search Locations”, the application accesses the Car Owners’ database. It retrieves the name, address, event and distance from the users’ address. This is displayed in the sidebar. 3. Using the above results, the application plots markers on the map. These markers also have info window with the information retrieved from the database. The red marker shows the address given by user and the blue marker shows the address retrieved from the database. 11 Spring 2008 BUZZing Space 4. When the radius is changed, then more results can be obtained from the database as seen in the figure below. 12 Spring 2008 BUZZing Space For Car Owners 1) The user clicks on the register tab given on the top right hand side of the page. 2) A form is displayed where the user with a car enters his details and form validation is done 3) The data obtained from the form is inserted into the database.If the data is inserted successfully then the “Data Inserted successfully” message is displayed. 2.2.5 Future Work The application retrieves results based on the event chosen. But the application can be scaled to retrieve results based on the route of travel decided by the user. Currently, this application just searches for results and displays them. But later on these results can be used to plan an event where record of number of people attending the event can be estimated. Also, the driving directions for the user from his address to the car pooling location can be displayed on just one click on the users’ details. 13 Spring 2008 BUZZing Space 2.3 Image Gallery 2.3.1 Introduction Image Galleries on a social network are not only about storing images. It’s about sharing images amongst your friends, creating virtual albums which can be shared and providing various features as well. The image galleries currently available on social networking sites such as Orkut, Facebook have only features for storing images. We provide additional features such as tagging of images, providing search wherein you can search your friends images for images, sharing by which you can add you friends images to your albums and displaying the images similar to the current image being viewed. The potential of such features is that you can create albums consisting of images from you and your friends that satisfy certain keywords instantly. 2.3.2 Architecture Image Gallery Application Application Database File Database Users As shown in the figure the application makes use of two databases: 1) Application Database. 2)File Database. The application database is a relational database which contains information about the users, their albums, images, image file names in the file database, etc. The File Database stores the actual images. The images are stored as thumbnails and also the original images which are resized for the need of application. File database was kept separate for security reasons. The users will not have access to the image files except from within the application. 14 Spring 2008 BUZZing Space 2.3.3 Database Design ER Diagram: Images contai ns Album Login Database schema: Table Login: Username Table Album: Username Password Album_id Table Image: User Imag Image nam e _albu e _id m _id Image _name Album_name Tag1 T ag2 Tag3 Album_desc Imageimg_thu mb Shared _username Album_img_thum b Shared _album_id Implementation Details: The file server has dedicated folders for each user. This folder is used to store the images which user uploads to the server. Even though we have different folders for each user, it might happen that the user uploads another image with same filename and extension. To take care of this, when the user uploads any image to the server, we rename it using the time value. Since one user will upload one image at a time and to its folder, there is no chance of overwriting the existing file. This random filename is stored in the image table and the images are retrieved based on these. 15 Spring 2008 BUZZing Space 2.3.4 Workflow 1) The user can create a new album whenever he wants to upload an image or upload image to an existing album. 2) When creating the album, the user can upload an image for the album. 3) Similarly the user can upload the image along with tags. 16 Spring 2008 BUZZing Space 4) While browsing through his friends’ profile, if the user finds the image interesting or pertaining to some album he has already created, he can add that image. 17 Spring 2008 BUZZing Space 5) We also display similar images relative to the image being viewed. When the user clicks on that image, he is taken to the view of that image. 18 Spring 2008 BUZZing Space 2.3.5 Future Work 1) Add more security by adding encryption 2) Create and organize albums automatically based on keywords. 3) Enhance search results 2.4 Job Finder 2.4.1 Introduction Georgia Tech is a huge Institute where many new students arrive every semester. Many of them are desirous of taking up a job on-campus to fund their living expenses. However, the absence of a centralized service for this makes them pursue departments and professors all around campus. This creates hassles for professors, staff as well as the students, who are clueless about the consequences of mass spamming. It was precisely this factor that has motivated us to build a prototype system which shall work as a centralized repository of on-campus jobs at Georgia Tech. In addition, the application will provide facilities for self-directed specific job search, profile matching and automated job applications. We believe this shall greatly reduce the brunt of applying everywhere from the students, and the hassle of addressing hundreds of emails and applications for the individual departments and professors. 2.4.2 Architecture The system works as a traditional client-server application. The architecture is as shown in Figure 1. Job Repository Job Search Application (WAMP Server) Applicant Profiles Clients List of Application s Figure 1: Architecture of the Job Finder Application 19 Spring 2008 BUZZing Space (a) Server: We use the Windows-Apache-MySQL-PHP environment (WAMP) web server as the server for hosting our application. It is a PHP-based web application. (b) Client: The clients are of two kinds: (i) Students: Students use our system to search for jobs by creating profiles and uploading resumes. (ii) Job-providers: Job providers will submit information about their job openings (on-campus) to our application repository. The clients use a simple web-browser to connect to our application’s server. (c) Databases: The application consists of three major databases: 1) Repository of Jobs: This is the list of job openings available on campus. 2) Profiles of Applicants: These are the job-skills and related profiles of applicant students for matching with the desired requirements of a job. 3) Job Applications: These are automated applications submitted online. The database design is detailed in further sections. 2.4.3 Database Design The database E-R model is as shown in Figure 2. has Student Skills Appli es for Applicatio Job Figure 2: E-R Model of the Database 20 Spring 2008 BUZZing Space The schema diagram of the database is as shown in Figure 3. STUDENT STUD_SKILL S JOB Job_Id Username Username Manage r JOB_APPLICATION Job_type_desi red Departmen t Password Prog_lang_kno wn Job_typ e Skills_Desir ed Job_Id Specific_skill s Hourly_P ay Certification No_of_position s Username Figure 3: Database Schema Diagram 2.4.4 Workflow The application work flow is as follows: 1. A student adds the Job Search application to his/her profile on Buzzing Space. 2. During registration, the student enters profile data in the application form. The various data collected are: a) Job type desired b) Specific Skills and Certifications c) Programming Languages Known d) An optional resume 21 Spring 2008 BUZZing Space 3. The student then clicks on ‘Submit’ and waits for automated profile matching for jobs. 4. Whenever the student logs into the system anew, he/she can view new job postings matching their profile by clicking on the Job Search application tab. 5. If the student likes the job posting, they can click on an apply checkbox and submit. This will automatically create an application for the job in the system. For Job Providers: 1. The provider adds a job description entry on a job entry form. 2. The provider has to wait for automated job applications from the students. 3. The provider can then respond to selective applications. 3. Conclusion We have designed and implemented the social networking application 'BUZZing Space' for Georgia Tech. The main features include community forums, job finder, photo sharing and car pooling. All these features embedded together, binds the GATech members with each other. It identifies the large amount of information flowing around the campus and makes best use of it through various ways as mentioned above. In the future, we would like to deploy this application on the GATech Servers with some more added features integrated such as where am I, shortest route between two places, news from various departments,etc. 22