Social Networking using ROR


Published on

This is an academic project implemented using ruby on rails.

1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Social Networking using ROR

  1. 1. CmpE 275Fall 2009<br />Project 3<br />Ideazz.. (A networking website for Ideas)<br />On <br />RUBY ON RAILS<br />Specifications Document<br />Team Name:Ants<br />Dhaval Patel<>006500481<br />Shivanshu Singh<>006488300<br />CONTENTS<br /> TOC * MERGEFORMAT 1.Introduction to Ideazz.. PAGEREF _Toc122013996 h 3<br />2.Ideazz: The Architecture & Specifications PAGEREF _Toc122013997 h 3<br />2.1Ideazz: Database PAGEREF _Toc122013998 h 3<br />2.2Ideazz: Model PAGEREF _Toc122013999 h 4<br />2.3Ideazz: Controller PAGEREF _Toc122014000 h 5<br />2.4Ideazz: View PAGEREF _Toc122014001 h 5<br />2.5Act As Authenticated PAGEREF _Toc122014002 h 5<br />3.Ideazz.. : Features & A Tour PAGEREF _Toc122014003 h 5<br />3.1Welcome Page PAGEREF _Toc122014004 h 5<br />3.2Sign Up: PAGEREF _Toc122014005 h 6<br />3.3Cloud PAGEREF _Toc122014006 h 7<br />3.4Aggregation PAGEREF _Toc122014007 h 7<br />3.5Profiles PAGEREF _Toc122014008 h 8<br />3.6EXPLORE PAGEREF _Toc122014009 h 8<br />3.7PEOPLE PAGEREF _Toc122014010 h 9<br />3.8Idea PAGEREF _Toc122014011 h 9<br />3.9Search PAGEREF _Toc122014012 h 10<br />3.10My Ideazz.. PAGEREF _Toc122014013 h 11<br />3.11New Idea PAGEREF _Toc122014014 h 11<br />4.Future Work PAGEREF _Toc122014015 h 12<br />Introduction to Ideazz..<br /> a social networking website for ideas. The website is, supposedly, one of a kind and the niche of Ideazz is to be a collaboration platform, where collaboration platform support idea threads, where a user can publish his/her idea, and all the users can view the ideas, decide for its strength and weaknesses and post reponses accordingly with their comments. Ideazz also provides a profile management system, where every user can create a general profile and the user also has the capability to search ideas and others users based on keywords.<br />The key feature in ideas is when a user goes on any random idea page, the page not only shows the idea and the responses but acts as a mash up page, mashing us results from services such as Google, Youtube, Google Blogs, Google Image, Google News, Twitter etc. These results are based on the idea, thus providing the users the ability to think and explore beyond what’s posted on the website. <br />Ideazz: The Architecture& Specifications<br />Ideazz is completely built on ruby on rails. It has an MVC architecture, where there are various models, view and controllers. The sections below discuss each of these in detail.<br />Before we get into that lets look into the database tables that we have used in this project <br />Ideazz: Database<br />1-> Table Users<br />login, :string<br />email, :string<br />crypted_password, :string <br />salt, :string <br />created_at, :datetime<br />updated_at, :datetime<br />remember_token, :string<br />remember_token_expires_at, :datetime<br />2-> Table UserData<br />user_id:integer<br />first_name:string<br />last_name:string <br />gender:string<br />email:string<br />profile_pic_urr:string<br />occupation:string,<br />hobbies:string <br />web:string <br />company:string <br />city:string<br />state:string<br />zip_code:string <br />3-> Table Idea<br />title:string<br />preview, :string<br />body, :string<br />owner_login, :string<br />updated_at,:datetime<br />4-> Table IdeaPost<br />idea_id:integer<br />body,:string<br />owner_login,:string <br />created_at,:datetime<br />Table user and user data has been kept separate. User table stores the login information of the user and table UserData stores the profile information and every information of user is mapped to their respective userdata. <br />Table idea is responsible for storing Idea and IdeaPost stores the responses and every idea is mapped to their respective idea posts. <br />Ideazz: Model<br />This section will list out all the model created in the project and the functions that each model has. Every table in the database corresponds to toamdel in this section. The models are also responsible for validations before saving the entry in the database. When the validation does not pass the user is prompted to change the value of that field and then try again. <br />List of models<br />User <br />UserData<br />Idea<br />IdeaPost<br />Ideazz: Controller<br />There is a controller for each model and there is an extra controller called as Profile. Profile controller is responsible for contacting UserData model and display the result on the view. But when the user desires to update the profile, in that case the UserData controller is in action. The reason for this split of functions across two controllers, is from the future point of view to modify the profile page to show more than just the UserData. We might in future include feeds and decide to show the user his profiles from other services as well. We might include a photo album and concatenate them too in the profile controller to give the user an overall view to his/her profile<br />User also has the ability to view other members’ profiles as well, the view of the other profiles are similar to the personal profile, the view of the profile has been kept uniform.<br />Ideazz: View<br />In view we have not written a general CSS file or used the application.html.erb file, in order to define a general view. Not doing it definitely increased our work but at the same time it gave us the flexibility to change the view according to our needs on every page. This we believe gave us more flexibility, ergo we created a more user friendly and navigation able UI. For any idea, we have the various responses that people post for that idea and more importantly a research portal which aggregates the web searches on the idea, blogsearcges, videos, images etc. This is so that the people participating in the discussion o not just comment but make an informed and intelligent comment.<br />Act As Authenticated<br />We have used act as authenticated plugin for user login and authentication. Using a plugin for user login gave us more time to concentrate on other features of the wed. The plugin uses SHA encryption for passwords and therefore we can say that it is reasonably secure.<br />Ideazz..: Features& A Tour<br />Welcome Page<br />Sign Up:<br />Cloud<br />While developing this project, we have realized Web 2.0 and tried to extend that to a concept. We like to call it Web 2.1. The entire project does not save anything else except for test rest is all out there on the cloud, e.g. images etc.<br />Aggregation<br />The application provides an aggragation of various kinds of content from the internet, for the idea in question. It includes web search, images, videos, blogs, wikipedia and twitter.<br />Profiles<br />People can create their custom profiles and edit their data. This is helpful for other to connect and collaborate with fellow members.<br />EXPLORE<br />This section of the application lists all the ideas out there so that people can search and view what is it that others are thinking about.<br />PEOPLE<br />This section of the application lists all the members so that people can search and view the profiles of fellow members.<br />Idea<br />Every idea can be viewed and along with it anyone can see whatever responses people have given for it.<br />Along with this comes the web aggregation feature that we talked about earlier.<br />Search<br />Ideas:People can search for ideas out there. The search is done based on keywords and it searchs the titles and descriptions of ideas to see of there is anything relevant out there.<br />People: People can also search for other people, based on keywords and the first name and last name are scanned for keywords.<br />My Ideazz..<br />People can see their own ideas that they posted here.<br />New Idea<br />Future Work<br />This project proved to be a nice starting point for us to learn ruby on rails. We tried to do as much as we could in the limited amount of time; however, a lot of things remain for future work. For example, we currently have the web searches being done on the client side. While this is beneficial as this reduces the server’s process and hence faster response time, we cannot cache these results. So, we can do some of this on the server side and cache those results to balance this out. Moreover, we can also have a search functionality to mine the internal ideazz database and aggregate this content as well to the content aggregation feature as well. Also, we can have groups for a more closely knitted and private idea development. Also, user can have the choice of making an idea public or private. We can also have a module to generate advertisements about ideas and maybe other plans that users define on top of bare ideas. These advertisements can be fed to an advertising service and people can probably generate venture capital money to maybe take the idea forward into something real.<br />