CS 683 Emerging Technologies

Fall Semester, 2006

Assignment 4

Assignment Index

© 2006, All Rights Reserved, SDSU & Roger Whitney

 San Diego State University -- This page last updated 11/17/06

Restaurant System

Due Nov 28

Modified Nov 17 (Due date & What to turn in)

You will build using Ruby on Rails a web site for restaurants in San Diego County.

An unregistered user of the site can search for a restaurant by city, location, type of food and rating. Sample areas are: North Coastal, North Inland, Mission Valley, Collage area, East County, Central San Diego, and Downtown. Examples of types of food are: Indian, Thai, Vegetarian, Sea food and Mexican.  For example a user may ask for all the Indian restaurants in the College area. They can also rate a restaurant on a scale of 1 to 5 and submit a review of (or comment about ) a restaurant. A restaurant has a name, street address, city, state, phone number, longitude and latitude. The longitude and latitude will be used when the web site integrates Google maps. When a user views a single restaurant they can see its name, street address, city, average rating, list of types of food it serves, and be able to see the restaurant's reviews (comments).

A registered user can add/edit restaurants and add more food types. When they edit a restaurant they can not change the rating of a restaurant or edit or remove any review.

A super user in addition to what a registered user can do can remove review of a restaurant, edit or remove a restaurant, add/edit/remove a location, edit/remove food types.

If you need access to a database please contact me via email.

What to turn in

You are to turn in all the files needed to run your assignment. I have rails and ruby installed so I do not need those files. I need all the files that you created for this assignment. If you used migrations with fixtures or are using the database on bismarck there is no need for a dump of your database.  Otherwise provide a dump of just your development database.

Also include a README.txt file. (Please note that a .txt indicates a text file, which is not the same as a .doc file). This file should be maximum of  one page and in most cases it should be much less than that. At the top of the file include your name. The file should contain the command used to start your server. It should also contain a list of urls that your project supports. For each url indicate the functionality supported by that url. Include a user name and password for each type of user that needs a password. Also include the name and type of food for one restaurant in your database. If there is any other information needed about your project include in this file. A read me file may look like

Author: Roger Whitney

Comm and to start server:    In directory foo run:

     ruby script/server

Supported Urls:

add user     http://127.0.0.1:8000/aduser.html

search     http://127.0.0.1:8000/search.html

modify/delete restaurant     http://127.0.0.1:8000/admin/restaurants/

User name    Password     type

foo        bar    registered user

rat        mat    super user

Sample Data:

Restaurant - Sipz

Food Type - Vegetarian

How to Turn in your assignment

The preferred method is on a CD. The CD should have your name on the outside of the CD. At the top level of the file structure should be your README.txt file and the directory containing your rails project.

I realize that some students may not able to create a CD. In that case I will reluctantly accept assignments by email. The subject line of the email should be "CS 683 Assignment 4 turnin". The contents listed above for the CD version should be in a directory which is your last name. The directory and its contents should be compressed via zip, gzip or tar. In considering this option keep in mind that your email will examined by two email filters. As a result your email may be delayed for hours or days. More importantly the filters may remove attachments if they think it contains a virus. The filters sometimes mistake code for a virus. This can lead to problems. Given the size of the class my ability to handle special cases is greatly reduced. I prefer keep emailing assignments an option in special cases, but if it becomes a a problem I will be forced to prohibit emailing assignments in the future.