Capstone Project Documentation

You have to trust your team.

Yvette Johnson-Rodgers, Cohort 20

Overview

The capstone project will be a site designed around a central theme, which must be a viable business model. A viable business model does not necessarily require the model be profitable. But it does require that the site have a real world application and be viable for immediate deployment. Some example viable business models are:

  • Online store
  • Social networking site for a specific group
  • Site selling a service
  • Non profit organization
  • Government site

Any theme that can be applied to viable business model can be used. The models listed above are examples and are by no means exhaustive.

Sprints & Tickets

The capstone project shall be divided into three sprints, each of which will have a duration of approximately two weeks. The sprints are:

  • Sprint 0: DAO Sprint. This sprint will create all base classes and enable PHP to communicate with mySQL.
  • Sprint 1: Integration Sprint. This sprint will integrate the classes from Sprint 0 and create a fully-functional, unpolished site. This sprint will also incorporate any external APIs chosen.
  • Sprint 2: Bootstrap Sprint. This sprint will choose the essential fonts and colors and choose logos and branding for the site. This sprint will also make user experience improvements not taken care of in Sprint 0 or 1.

In each sprint, each team member will be responsible for several tickets. Each ticket will consist of approximately eight hours of work to complete. Tickets will be signed off by instructors if and only if the following are true:

  • The ticket's functionality is complete
  • The code is fully commented and includes all required doc blocks
  • All applicable unit tests are present and pass with sufficient coverage (normally ≥ 80% coverage)

The team may not proceed to the next sprint until all members have completed all their outstanding tickets. In the event one or more members cannot complete outstanding tickets, additional team members will be deployed to help complete the outstanding tickets.

Technologies

Table 1 depicts the technologies used in the capstone project. Use of optional technologies will be done sparingly and at the discretion of the instructors. Overuse of optional technologies detracts from the coverage of required technologies. Optional technologies will only be deployed when use cases lend themselves to the use of optional technologies. Optional technologies will NOT be deployed for the sake of deploying additional technologies.

Table 1: Required and Optional Technologies
 Required TechnologiesOptional Technologies
HTML 5
  • No use of deprecated tags
  • Includes fully accessible forms
  • Full use of semantic tags
  • Uses the <audio> tag
  • Uses the <canvas> tag
  • Uses the <video> tag
CSS
  • All styling done in CSS
  • Appropriate use of selectors
  • Consistent use of fonts
  • Uses Bootstrap for a mobile first user experience
  • Uses animation
  • Uses custom configurations of Bootstrap
  • Uses CSS Templating such as LESS or SASS
JavaScript
  • Uses additional AngularJS directives, plugins, etc.
  • Uses any other JavaScript libraries or frameworks from a CDN
PHP
  • Includes/requires library files
  • Uses external API using JSON/XML APIs
  • Fully unit tested with PHPUnit
  • Uses exception handling
  • Uses object oriented classes
  • Uses-Model-View Controller (MVC) design pattern
  • Uses Data Access Object (DAO) design pattern
  • Uses traits
  • Uses inheritance
  • Implements built-in or external PHP interfaces
  • Uses stateful sessions by implementing SessionHandlerInterface
  • Uses additional dependencies from Composer
mySQL
  • Uses all major relations (1-to-1, 1-to-n, and n-to-m)
  • Full Entity Relationship Diagram (ERD)
  • Uses stored procedures
Security
  • Full CSRF/XSRF protection cross compatible with frameworks such as Angular and Laravel
  • All database passwords and other properties encrytped
  • No passwords pushed to GitHub
  • Full input sanitization designed to counteract XSS attacks using PHP, Angular, and HTML 5
  • Passwords salted and stretched using the PBKDF2 and SHA-512 algorithms
  • Uses external authentication from another service using OAuth

JSON preferred. XML considered only if JSON is unavailable.