teaching machines

CS 268: Project 1 – Handcrafted Site

February 13, 2020 by . Filed under specifications, spring-2020, webdev.

In this first project, you will create a website for a client using raw HTML, CSS, and JavaScript. You will not use any helper libraries or frameworks. Instead you will gain facility with the foundational elements of web development.


Your site must meet the following expectations:

  1. You will create a website for a client of your choosing. Your client could be a family member, a business, a student group, a friend, an online community, and so on. The only restriction is that the client cannot be just you.
  2. Your site must include some sort of header.
  3. Your site must contain at least five separate pages, each having a meaningful purpose.
  4. Your site must include some sort of navigation links.
  5. Your site must support distinct layouts for large and small screens. For instance, multicolumn layouts on large screens should be reduced to single column layouts on small screens. You are encouraged to implement separate layouts using CSS media queries.
  6. Your site must maintain a coherent style across its pages. Global style rules must be placed in a shared stylesheet. Individual pages’ style rules must be placed in a separate stylesheets.
  7. Your site must include images, and their alt attributes must adequately describe the image content to users of screen readers, user with images disabled, and webcrawlers.
  8. Each page must declare its favicon.
  9. Your site’s non-HTML resources must be organized. Images must be placed in a directory named images. CSS files must be placed in a directory named css. JavaScript must be placed in a directory named js.
  10. Your site must not be built using any libraries or frameworks. Do not use Bootstrap, jQuery, React, Angular, Vue, or any other third-party tools. You may, however, reimplement the ideas you see in these third-party tools.
  11. Each page and stylesheet of your site must validate without any warnings or errors using the W3C’s HTML validator and CSS validator.
  12. Your site must be stored in a Git repository that you have shared with your instructor. On GitHub, GitLab, and Bitbucket, share with the user twodee.
  13. The names of your files should be entirely lowercase and contain only alphanumeric characters.
  14. Your site must be served out of port 8443.
  15. Your site must be accessed only through HTTPS. You are encouraged to use Let’s Encrypt to obtain a free certificate.
  16. Your content should be neatly aligned. The axes should be clearly visible.
  17. Your site must use at least two different font faces. Headings are often rendered in a sans-serif font, and copy in a serif font.
  18. Your site must include at least one form (or informal collection of input elements). The form might submit data to a server or invoke some client-side JavaScript function that alters the page. The action is not specified.
  19. Your site must include links to external sites. Clicking on external links must open a new tab or window rather than replace your page.
  20. Your source code must be readable, using conventional and consistent formatting and meaningful names for classes and IDs.
  21. Your site must include at least one animation, powered either by CSS or JavaScript.


On https://YOUR-IP-ADDRESS:8443/report.html, write a brief report containing the following sections: