This Website has been Deprecated. Use
For Prework and Written Curriculum

Capstone Project Documentation

You have to trust your team.

Yvette Johnson-Rodgers, Cohort 20


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:

  • Map of local restaurants
  • Recipe database
  • Map of New Mexico hiking trails
  • Local events calendar
  • Job posting 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 four sprints, each of which will have a duration of approximately two weeks. The sprints are:

  • Sprint 1: Planning, Data Design, Classes, and MySQL
    Create your user-driven design documentation, all base classes and enable PHP to communicate with mySQL.
  • Sprint 2: Unit Testing and Sample Data
    Build unit tests for all major pieces of functionality, and populate data from external APIs or by manual input of sample data
  • Sprint 3: REST and Static UI
    Create API endpoint to expose entities. Build basic static frontend fonts and colors and choose logos and branding for the site.
  • Sprint 4: React Frontend
    Build JavaScript frontend to interact with API backend. Polish site.

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.


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
  • 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
  • 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
  • Uses React
  • Uses form validation package
  • Uses AJAX to load results without reloading the page
  • Uses additional React and JavaScript packages, plugins, etc.
  • Uses any other JavaScript libraries or frameworks from a CDN
  • 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
  • Uses all major relations (1-to-1, 1-to-n, and n-to-m)
  • Full Entity Relationship Diagram (ERD)
  • Uses stored procedures
  • Full CSRF/XSRF protection cross compatible with frameworks such as React and Laravel
  • All database passwords and other properties encrytped
  • No passwords pushed to GitHub
  • Full input sanitization designed to counteract XSS attacks using PHP, React, and HTML 5
  • Passwords salted and stretched using current algorithms
  • Uses external authentication from another service using OAuth

JSON preferred. XML considered only if JSON is unavailable.