Project #2

Pet Rescue Site Part 2

Due: Friday Apr 15, 2016 - 11:55pm

See Addendum for updates.

Continuation: A Pet Rescue site.

This is a Paired Programming Project. It is the second in a three part semester project working toward a class federation of pet rescue websites. New Teams will be assigned through Canvas by Tuesday 3/8. You'll build upon what you developed for Project 1. As mentioned in Project 1, both of the team partners first need to review, discuss and agree upon what parts of their Project 1 could be carried forward to this phase. Again, just for example, is the Rocky Mountain Collie Shelite Rescue site.

As you work on this Project, keep in mind that the code you are writing will live on past this Project and into Project 3. Moreover, you will have a new partner in Project 3 and the first thing that you will be doing in Project 3 with your new partner is reviewing each others' code base to decide what parts to keep, and what parts to leave behind. For this reason, if for no other, focus on writing clear, documented, maintainable and extendable code.

Requirements Details

Create a new page, Create Account - user may to fill out an application for an account and this creates a login for the user. You'll provide a link to the Create Account page right in the login page, below the login form. The required fields are given below and you may add more.

  • First and Optional Middle Name, Last Name
  • Contact Phone Number
  • Email Id
  • Username for login
  • Initial Password and Confirm Password
  • Checkbox of prior pets: Dogs (yes/no), Cats (yes/no), Turtles (yes/no)
  • Are you interested in fostering a pet? (yes/no)
  • Do you have a pet needing a home? (yes/no)
  • If yes to above, please explain - text area
  • Do you have a pet needing a home? (yes/no)

You need to make use of input sanitizatons. Refer this PHP documentation.

Create a new page, Add a pet for adoption - a logged in user is allowed to add a new pet to the site. An entry will be made to the corresponding table in database for the pet and as a result gets listed in the Pets for Adoption page as well. What precisely is stored as information with a new pet put up for adoption should be decided by the team. But at a minimum, there must be at least one example of: pet image, numeric data (such as height, weight etc., of your choice), short text (less than 50 characters) and a Long text (between 50 and 500 characters). You'll have a link to this page alongwith links to all other pages that you've provide in the Navigation. If the user isn't logged in, they're redirected to the login page. The roles of authentication are to block/enable commenting on pets up for adoption and add new pets to site.

You'll need to create and use a SQLite database for storing user info. There will be ONE database file, multiple tables. Identify a points of execution where the database should get created and tables are to be built up. This will include uploading images as part of adding a pet for adoption. This also means that you'll load the pet pages dynamically from the database. Now, reuse the pet page, instead of creating a seperate static page for each pet, as you did in the project 1.

You will be asked as part of the procedure for entering a new pet to upload an image of that pet. The mechanics of uploading images to your site will be presented after Spring Break.

An interesting addition required as part of this assignment is the ability for a non-registred user to create an account. This will be done through a new account page. This page must be highly protected: only available from a set of whitelisted IP addresses. These addressses should include addresses in the CS domain (129.82.44.* and 129.82.45.*). Go ahead and add your own home IP address if you like, but under no circumstances should the create new user functionality be available outside the limited whitelist.

The login functionality works as is and you'll be adding the Forgot My Password functionality that you implemented for part 2 of Assignment 5. You could reuse the code from that assigment.

Finally, you'll be adding a search feature to the Pet Listing page. You'll have a text field that accepts user input that could be part of some information of the pet. The list of pets gets refereshed as the search text gets refined. You'll be making use of AJAX Database query to implement this. Stay tuned until Week 12 for more details on it.

General guidelines

The appearance of your site must be professional. We recognize that at one level 'Professional' is a vague term, but you are an experienced consumer of web content and should have your own understanding now of what is and is not a well designed site. We will of course discuss this in class and if in serious doubt, ask. As a guide, here are some general hints:

  1. Design broadly how you entend to structure your pages before building them. Answer for yourselves how you want layout to flow and then implement that flow consistently and smoothly.
  2. Keep it simple. A clean consistent reliable layout is better then one that is cluttered and inconsistent.
  3. We have not reached the point in the semester where you are expected to understand JavaScript. One consequence of this timing is you should embrace the fact that you are not being asked to implement complex visually active elements on your pages. In other words, no drop down menus, fancy moving images, etc.
  4. Have a color palette theme of your choice to maintain consistency and professional look and feel.
  5. Do think about font styling and size. Text elements whose size and appearance is out-of-step with its surroundings are visually jarring and generally unpleasant.

Each team will submit a single tar file "lastname1&lastname2.tar" with all the required files. Submission will be through Canvas.

Do not use any web development application, for example Dreamweaver, to create your site. You are doing this work to gain experience writing HTML, CSS and PHP yourself. Also, always remember that your work will be tested with Chrome on department machines.

Addendum (Updated 4/8/2016)

Project 2 is now due on 4/15