Project #1

Ingredients For You (IFY)

Due: Monday Mar 6, 2017 - 11:55pm

See Addendum for updates.

Overview: A Cooking Ingredients Site.

This is a Paired Programming Project. It is the first in a three part semester project working toward a class federation of fresh ingredients supply websites. Teams will be assigned through Canvas by close of Friday 2/3/17. The detailed functionality expected for a site will laid out in each project assignment. There is no shortage of online sites selling food products. Your efforts will be simpler in many ways, but you can begin to think about layout and such be examining examples. With no particular reason to favor this site over others, you might look at Mellisa's: The Freshest Ideas in Produce. As you can see, sits such as this have a set of requirements to maintain a meaingful web presenece.

As you work on this Project, keep in mind that the code you are writing will live on past this Project and into Project 2. Moreover, you will have a new partner in Project 2 and the first thing that you will be doing in Project 2 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 Summary

Here briefly are working requirements and components that must be present in your site.

  • All pages to be developed using PHP, HTML and CSS
  • A Home page - Welcome message, info and links about other sections etc.
  • An About us page
  • A Common Header (Title and Logo), Footer and Navigation elements on all pages - Please implement using the PHP include tag.
  • An Authentication Page - a simple hardwired authentication - hardcode at least 3 sets of credentials. One for each of you on the team and a third with Username: ct310. The password for this user is provided below.
  • Individual pages for each ingredient sold. For now, these are real pages in the sense there is a *.php file on the server for each ingredient. You will be assigned three ingredents that must appear on your site. (See Addendum at the bottom of this page for assignments.)
  • Provision for commenting on an ingredient. Comments may only be entered by authenticated users. For Project 1 you need only redisplay the comment temporarily. To be clear, you need not yet build and archival store able to retain comments over time. That requirement will come in Project 2.
  • You need sanitize user input. Refer to this Sanitize and Validate Data with PHP Filters for a nice explanation of how best to sanitize input.
  • Each Ingredient needs a picture, and you must include an acknowledgement with each picture clearly showing the origin of the picture and in so doing indicating your right to use that image.
  • All your pages will carry a disclaimer on the footer in fine print which reads: "This site is part of a CSU CT 310 Course Project." The text "CT 310" will be a link to the course homepage.


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. You must use the Bootstrap Framework to support your implementation. Alternative Frameworks may be approved on case-by-case basis if a team wishes to ask.
  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.

Project Teams

This project, as will be the case with all projects in this course, is a team programming exercise involving groups of two. In the working world, it is rare that one selects one's teammates, and so it will be here. New teams will be formed for each of the projects assigned through the course of the semester. You will be able to see your assigned team from within Canvas. It is up to you to then contact each other and make arrangements to work together.

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, PHP and Bootstrap. Also, always remember that your work will be tested with Chrome on department machines.

Your Time Management

You have all been told this before in other classes, but it needs to be stated here clearly. There is a lot required of you before you will have a full and complete solution to this assignment. Also, there are elements, such as authentication, where we will not cover the material associated with this part of the assignment until later. You are being given over a month to work on this and you are expected to start work immediately. Development is an incremental process and you and your team partner need to start setting intermediate goals; and then making those goals. If you wait until one week before this assignment is due then one of two things will happen. By far the most likely outcome is you fall far short of the requirements. Much less likely, you will demonstrate a rare talent for coming through in the eleventh hour; please do not count on this second option working.

Addendum (Updated 2/25/2017)

Each team has now been assigned three distinct ingreidents. Teams may build in more if they wish for Project 1, but only the three assigned are required. (Ross 2/13/2017)

Teams 26, 27 and 28 now have ingredients assigned to them. Pumpkin was double assigned and so Team 6 now has Savory in place of Pumpkin. (Ross 2/25/2017)