Skip to content

Latest commit

 

History

History
1402 lines (932 loc) · 63.9 KB

README.md

File metadata and controls

1402 lines (932 loc) · 63.9 KB

Wavelet Website

This website is about wavelet theory and generation. Except for the content referenced in this README file and/or the code and/or the website, all content is invented by me, anything matching reality is just a coincidence.

This repository belongs to my second milestone project in the Full-stack Development course at Code Institute, covering HTML, CSS and JavaScript along with Git version control and other software technologies.

The live link for this project is this one (https://csc7.github.io/PP2_CI_WW/).

Projects Table Image Image obtained after checking the website in "Am I Responsive" website (http://ami.responsivedesign.is/ giving "https://csc7.github.io/PP2_CI_WW/" as input). The image shows the Functions page (Home) of the project in different devices. Image generated with Am I Responsive? website http://ami.responsivedesign.is/?url=https%3A%2F%2Fcsc7.github.io%2FPP2_CI_WW

Index




1 . Project Goals

The goal of the project is to develop a website where seismic data processors, signal processors and/or any user can estimate and visualize wavelets and export them to use in their processing tasks. In addition, a website where users can view and review the functions of the wavelets, challenge their knowledge against a quiz, and contact the website developer.

Specifically, the goals of the project are the following ones:

  • To show the functions of the wavelets being calculated and plotted.
  • To build graphs according to wavelets parameters given by the user.
  • To export/send the generated wavelet to an e-mail address.
  • To give users the chance to test their basic knowledge, thorough o quiz, about signals.
  • To give users a contact form so they can send suggestions or comments if they wish.
  • To show my work and give others the option to contact me if they wish.



2 . User Experience

UX has been addressed (and remains as a constant activity) around Jesse James Garrett's process, whose five planes involves the following matters:

  • STRATEGY: to build a website (product) that creates wavelet signals and gives the option to contact the developer.
  • SCOPE: the minimum viable product needs to include features that allow the user to know the following:
    • Basic information about the about the functions being implemented (wavelet formulas).
    • A graph of the wavelet, using Google Charts (please see credit below), based on input parameters given by the user.
    • A section where user can input the type of wavelet, sampling rate, length of the signal and its frequency.
    • A "Generate" button.
    • An "Export" button.
    • A quiz with ten questions.
    • A contact form.
  • STRUCTURE: the information is structured as follows:
    • Wavelet functions, in a separate page called "Functions".
    • Google Chart (please see credit below) graph, input parameters and generate/export buttons in a separate page called "Generator".
    • A quiz with ten questions in a separate page called "Quiz".
    • A contact form in a separate page called "Contact".
    • A fixed navigation bar on top.
    • A fixed footer.
  • SKELETON: the information is accessed through a fixed navigation menu on top of the pages.
  • SURFACE: the website is based on red, white and blue colours to give strong contrast and simultaneously a "live" design.

User Goals

  • To find an interactive website.
  • To navigate through a responsive website.
  • To have wavelet functions in a summarised way, at a glance.
  • To select wavelet parameters and make the corresponding graphs.
  • To export the wavelet to a TXT file so it can be used in other applications and/or processes.
  • To check and/or entertain with a quiz.
  • To be able to contact the developer if desired.

Site Owner Goals

  • To provide an interactive website.
  • To provide a responsive website.
  • To provide very basic tools and concepts about wavelet signals.
  • To show his work.
  • To give users the chance to contact the developer.
  • To provide a basic and scalable website and framework for signal processing that allows for the incorporation of more tools in the future.

User Stories

User stories are divided into the following three groups:

  • First time users

  1. As a user, I want to find a responsive website, so I can access it in any device without having the content affected.
  2. As a user, I want to find a summary of type of wavelets, so I do not need to research for them in different sites on the web.
  3. As a user, I want to have the functions (formulas) of the wavelets, so I do not need to go through long texts or the web to find them.
  4. As a user, I want to select the input parameters of the wavelets and see the corresponding graph of them, so I see how my parameters are affecting the wavelets.
  5. As a user, I want to have the wavelet I choose sent to my e-mail address, so I can have it available for other applications and/or for download without having to use other applications that could take a longer time for the generation of the wavelet.
  6. As a user, I want to have the option to send comments or questions, so I can contribute with the website development and/or indicate errors or bugs.
  • Returning users

  1. As a returning user, I want to have the website accessible from any device, so I do not depend on only one device to access the information.
  2. As a returning user, I want a navigation menu on top and always visible, so I can access any content on the website from there and do not need to use the back button of the browser.
  3. As a returning user, I want to have a reference website with a summary of types and functions of wavelets, so I do not need to look for them and/or check in different websites.
  4. As a returning user, I want to generate new wavelets so I can check them in a quick way.
  5. As a returning user, I want to test my knowledge against a quiz, so I refresh basic concepts and/or take a break to when I want to.
  6. As a returning user, I want to have a way to send feedback or make consultations, so I can collaborate and/or make consultations about the website and/or its content.
  7. As a returning user, I want to be informed if the contact form goes through, so I know if my message is sent or it is not.
  8. As a returning user, I want to have a way to contact the developer so I can contribute and/or indicate errors or bugs.
  • Site Owner

  1. As owner, I want to create a website that provides a basic service (wavelet generation) so users can use it to check and obtain wavelets without using longer solutions for the generation/checking of them.
  2. As owner, I want to create a website that is the base for further development, so I can keep showing my work and offer more solutions in the future.
  3. As owner, along with other points of this section, I want to show my work and give the option to users to contact me if they wish.
  4. As owner, I want to provide a website that can be browsed fully without using the back button, so users have a "map" of the website at all times and do not get issues while navigating (like sending data to a server interrupted or resent).
  5. As owner, I want to provide a responsive website, so user can access it from any device without any constraint to navigate, find and/or use the website.
  6. As owner, I want to give an interactive website that update colours, graphs and information, so users enjoy the navigation on the website and instantly know if the website works properly or it does not.
  7. As owner, I want to put a brand in the top left, so users not only associate the brand with the website but also they can click it for the "home" (Functions) page.
  8. As owner, I want to provide a website that summarises the type of wavelets so users can use it as a reference.
  9. As owner, I want to give an interactive website, so users test their own wavelets without having to replicate the formulas with their own parameters themselves.
  10. As owner, I want to provide a quiz so users can use the website as a basic entertainment when they want a short break from their activities.
  11. As owner, I want to give as many options to be contacted as possible, so users can choose forms or links in the footer to send their consultations and/or feedback in a very fast way without having to navigate through the website.
  12. As owner, I want to inform users if they consultation/message was successfully sent, so they know if they need to resend it or they do not.
  13. As owner, I want to inform the user, through an error page, if there is any error when loading the website.
  14. As owner, I want to validate the contact form and e-mail field for sending wavelet data, so users cannot send empty forms or data, simultaneously letting them know if the form or data is successfully sent.

User Requirements and Expectations

  • A fixed and responsive navigation menu on top.
  • A dedicated page for wavelet functions.
  • A dedicated page for wavelet generation and export.
  • A dedicated page for the basic signal processing quiz.
  • A dedicated page for the contact form.
  • A fixed footer with contact links to the developer.
  • Strong contrast using red, white and blue.



3 . Design Choices

The design was planned to cover screen sizes from 320x568px to 1920x1370px.

Colours

Red, white (as background) and blue is the base of the website. The goal is to provide strong contrast and use colours that show a vivid website.


Fonts

Google fonts (please see credits section below) were implemented on the website. Nunito/Montserrat were selected as the font pair for the website (following Google's suggestion), however only Nunito has been applied. Sans-serif font is used as a back-up in case the previous font cannot be loaded.

Colour #rgb(98, 98, 161), dark blue, was selected for paragraphs, while red and blue for headings.


Structure

The metadata includes the following keywords to help search engines to find the website: wavelet, wavelets, signal, signals, signal processing, seismic processing, wavelet generation, txt, export, quiz. signal quiz, wavelet functions, wavelet formulas, wavelet summary, wavelet reference, processing, Code Institute, software development, student, full-stack course, milestone project.

The visible website is organised in a header, a body and a footer.

Wireframes were developed at the beginning in order to have a first design of the website.

  • Header

In order to achieve the goals related to easiness and/or simplicity, a fixed navigation area in the header is provided. In the same area, a logo with the idea of the website is place to the left. The header contains the navigation bar with the four links to the body pages (please see next section).

  • Body

The body of the pages are structured as follows for each of the pages:

  • Functions:

    It contains a summary of wavelets (four type at the moment of deploying this website) and their mathematical functions. The idea is to add more with time, the page is designed to allow for an easy inclusion of the in the future, since it only involves paragraphs and headings whose width is 100% (with respect to their containers), so no more than adding the relevant tags is needed to add more types of wavelets and their functions.
  • Generator:

    It has a section on the right (or top in tablet and cell phone screen sizes) with fields where the user can select the type of wavelet from a dropdown list and enter the sampling rate, length of wavelet and frequency of the desired wavelet to plot. The graph is generated with Google Charts (please see credit below) and is located on the left (of bottom in tablet and cell phone screen sizes).
  • Quiz:

    It contains a start button on top, a progress bar below (which progress one step per question), a score and time panel below, and the quiz itself under these sections, which indeed contains a field where the user writes the answer and a button to send it.
  • Contact:

    It has a simple contact form, centre-aligned, with name, surname, e-mail and description fields, before it finds the send button.

  • Footer

The footer contains links for social media (LinkedIn and GitHub) and e-mail. It is designed to remain fixed at the bottom of the webpages in order to have the links always visible to promote the developer of the website.




4 . Wireframes

Wireframes were developed in order to gather all goals, user stories, requirements and expectations, and have the design references for desktop, tablet and mobile devices. Please check the PDFs files for each case in the following links:

Desktop Wireframe Image for Functions Page

Desktop Wireframe Image for Functions Page

Desktop Wireframe Image for Generator Page

Desktop Wireframe Image for Generator Page

Desktop Wireframe Image for Quiz Page

Desktop Wireframe Image for Quiz Page

Desktop Wireframe Image for Contact Page

Desktop Wireframe Image for Contact Page

Tablet Wireframe Image for Functions Page

Tablet Wireframe Image for Functions Page

Tablet Wireframe Image for Generator Page

Tablet Wireframe Image for Generator Page

Tablet Wireframe Image for Quiz Page

Tablet Wireframe Image for Quiz Page

Tablet Wireframe Image for Contact Page

Tablet Wireframe Image for Contact Page

Cell Wireframe Image for Functions and Generator Pages

Tablet Wireframe Image for Quiz Page

Cell Wireframe Image for Quiz and Contact Pages

Tablet Wireframe Image for Contact Page


PDF File for Desktop Wireframe

PDF File for Tablet Wireframe

PDF File for Cell Wireframe



5 . Technologies Used

The following languages, software and tools were implemented using Windows 10 Pro:

Languages

  • HTML

  • CSS

  • JavaScript

Software and Other Tools

  • GitHub

  • Gitpod

  • Font Awesome (v5.15)

  • Bootstrap (v4.0)

  • EmailJS

  • Balsamiq Wireframes (v4.2.4, Editor Version 2.6.0)

  • Google Fonts

  • MATLAB, The MathWorks, Inc. (to generate function plots in Functions page and obtain Morlet function)

  • W3C Markup Validation Service

  • W3C CSS Validation Service

  • JSHint (version 2.13.0)

  • WAVE Web Accessibility Evaluation Tool

  • Google Lighthouse (used in Google, Microsoft Edge and Firefox)

  • Google Chrome, version 91.0.4472.114, Official Build, 64-bit (and its development tool)

  • Microsoft Edge, version 91.0.864.59, Official build, 64-bit (and its development tool)

  • Firefox, 89.0.2, 64-bit (and its development tool)

  • Microsoft Internet Explorer, version 2004, OS Build 19041.1052

  • Babel JavaScript compiler (transpiler, to try to solve ES5 issues for Internet Explorer, finally not implemented, https://babeljs.io/docs/en/babel-standalone).




6 . Features

The website consists of four pages, where each of them is divided in three parts: header, body and footer. The features contained in each of the pages and parts are the following ones:

  • Website logo

It is located in all pages, fixed, top-left, and always visible.

User Stories Addressed by this Feature: 8; 16; 17; 18 and 21.

Please check "7. Testing of User Stories" for more details.

Check Image

Website Logo Image


  • Fixed navigation menu

It is located in the header, fixed on all pages to facilitate navigation, and responsive.

User Stories Addressed by this Feature: 1; 7; 8; 16; 17; 18; 19; 20 and 21.

Please check "7. Testing of User Stories" for more details.

Check Image

Fixed Navigation Menu for Desktop Image Fixed Navigation Menu for Tablets Image Fixed Navigation Menu for Cell Phones Image Fixed Expanded Navigation Menu for Cell Phones Image


  • Summary of Functions

It can be found in the Functions page and show the functions of the wavelets that can be plotted in the Generator page.

User Stories Addressed by this Feature: 1; 2; 3; 7; 9; 16; 17; 19 and 22.

Please check "7. Testing of User Stories" for more details.

Check Images

Functions Page Top Image

Functions Page Bottom Image


  • Wavelet Generator

It can be found in the Generator page and gives the option to select type of wavelet, sampling rate, length of wavelet and frequency. The wavelet generated can then be plotted according to the functions shown in the Functions page using Google Charts and/or be sent to an e-mail address, informing the user if the email successfully goes through.

User Stories Addressed by this Feature: 1; 4; 5; 7; 10; 15; 16; 17; 19; 20; 22, 23 and 28.

Please check "7. Testing of User Stories" for more details.

Check Image

Wavelet Generator Image


  • Wavelet Graph

It can be found in the Generator page and graph the selected wavelet using Google Charts.

User Stories Addressed by this Feature: 1; 4; 7; 10; 15; 16; 17; 19; 20; 22 and 23.

Please check "7. Testing of User Stories" for more details.

Check Image

Google Charts Image


  • Quiz

It can be found in the Quiz page; it is a very simple and basic interactive quiz of ten questions where users can test their knowledge and/or take a break when they want. It contains a panel with the number of questions and correct ones, a timer, a progress bar, the last answer and the last correct answer. A start button launches the quiz, which is stopped automatically after the tenth questions, with an alert message.

Questions of the quiz are built by concatenating a first-part string, a random number (which changes the answer for other instances of the quiz) and last-part string.

Being X the random number, questions and correct answers of the quiz are the following ones:

  • "What is the frequency of the following signal: 100 sin X Hz signal in order to have it fully recovered?"
    Correct answer: whole part of (X / (2 * 3.1416)).
  • "What sampling frequency should be assigned to a X Hz signal in order to have it fully recovered?"
    Correct answer: whole part of (X * 2).
  • "How long does it take (in msec) to a X Hz signal to complete 10 cycles?"
    Correct answer: whole part of ((1 / X) * 10 * 1000).
  • "What is the frequency of the following signal: 50 cos 2PiXt?"
    Correct answer: whole part of (X).
  • "What is the maximum frequency you will recover without aliasing if you sample at X msec?"
    Correct answer: whole part of ((1000 / X) *2).
  • "What sampling frequency should be assigned to a X Hz signal in order to have it fully recovered?"
    Correct answer: whole part of (X * 2).
  • "How long does it take (in msec) to a X Hz signal to complete 250 cycles?"
    Correct answer: whole part of ((1 / X) * 250 * 1000).
  • "What is the frequency of the following signal: 2 A sinXt?"
    Correct answer: whole part of (X / (2 * 3.1416)).
  • "What is the maximum frequency you will recover without aliasing if you sample at X msec?"
    Correct answer: whole part of ((1000 / X) *2).
  • "How long does it take (in msec) to a X Hz signal to complete 50 cycles?"
    Correct answer: whole part of ((1 / X) * 50 * 1000).

User Stories Addressed by this Feature: 1; 7; 11; 16; 17; 19; 20 and 24.

Please check "7. Testing of User Stories" for more details.

Check Image

Quiz Image


  • Contact Form

It can be found in the Contact and allows users to contact the website developer. It prevents the form to be sent with incomplete fields, informs the user if the message goes through and disables the send button in order not to send the consultation more than once.

User Stories Addressed by this Feature: 1; 6; 7; 12; 13; 14; 17; 19; 20; 25, 26 and 28.

Please check "7. Testing of User Stories" for more details.

Check Image

Contact Form Image


  • Footer

It is located at the bottom of all pages, containing icons with links to LinkedIn, GitHub and e-mail application (to automatically load developer's e-mail address in the addressee field).

User Stories Addressed by this Feature: 1; 6; 7; 12; 14; 16; 17; 18; 19 and 25.

Please check "7. Testing of User Stories" for more details.

Check Image

Footer Image


  • 404 page

It is a different page that appears in case there is any issue when loading the page, like a similar incorrect URL. It contains a light red background and contains the message "Sorry, something went wrong.".

User Stories Addressed by this Feature: 17; 27.*

Please check "7. Testing of User Stories" for more details.

Check Image

404-page Image





7 . Validation

The introductory image on top of this README file was generated using the Am I Responsive site to test how the website displays in different screen sizes.

Development tools of Google Chrome (Version 92.0.4515.131, Official Build, 64-bit), Microsoft Edge (Version 92.0.902.67, Official build, 64-bit) and Firefox (Version 90.0.2, 64-bit) have been used to test the behaviour of the website for screen sizes between 320x568px to 1920x1370px.

The website was tested using these browsers and also Microsoft Internet Explorer (Version 2004, OS Build 19041.1165). Samsung Internet (version 14.0.1.62) was also used to test the website. In addition, some users have collaborated checking the website in the cell phones, mostly with Android-based operating systems.

Devices used for testing and validation include Dell and Toshiba laptops, Samsung cell phones. Operative systems include Windows 10 Enterprise (remote desktop), Windows 10 Pro, Windows 10 Home and Android. Processors for desktop and laptops were Intel.

The following tools were used to validate the files of the website:

HTML Files

https://validator.w3.org/ was used to validate the HTML files. All files ended up with zero errors and warnings. Please check the evidence below:

Functions Page

Evidence of no errors and warnings in the Functions HTML (index) file

Generator Page

Evidence of no errors and warnings in the Generator HTML file

Quiz Page

Evidence of no errors and warnings in the Quiz HTML file

Contact Page

Evidence of no errors and warnings in the Contact HTML file

404 Page

Evidence of no errors and warnings in the 404 file


CSS File

https://jigsaw.w3.org/css-validator/ was used to validate the CSS file. Please check the evidence below:

Valid CSS!

Valid CSS!

CSS Filee

Evidence of no errors in the CSS file



JavaScript Files

https://jshint.com/ was used to validate the JavaScript files. Please check the parameters used for validation and evidence below:

Parameters used for JavaScript validation in JSHint version 2.13.0

Evidence of no errors and warnings in the Functions (index) JavaScript file

Functions Page

Evidence of no errors and warnings in the Functions (index) JavaScript file

Generator Page. Plase note that dataForGoogleChartFunction, google and emailjs are external variable from Google (the first two) and EmailJS (the third); while sendData is the function that is called from the Generator page to send the graph data by e-mail.

Evidence of no errors and warnings in the Generator JavaScript file

Quiz Page

Evidence of no errors and warnings in the Quiz JavaScript file

Contact Page. Plase note that emailjs is an external variable from EmailJS; while sendMail is the function that is called from the Contact page to send the form.

Evidence of no errors and warnings in the Contact JavaScript  file


Accessibility

https://wave.webaim.org/ was used to validate accessibility. Although there are warnings, all pages contains zero errors. Please check evidence below:

Functions Page

Evidence of no accessibility errors in the Functions (index) HTML file

Generator Page

Evidence of no accessibility errors in the Generator HTML file

Quiz Page

Evidence of no accessibility errors in the Quiz HTML file

Contact Page

Evidence of no accessibility errors in the Contact HTML file

404 Page

Evidence of no accessibility errors in the 404 file


Performance

Google Lighthouse (used in Google, Microsoft Edge and Firefox) were used to evaluate the performance of the pages. Please check the results below:

Functions Page for Cell Phones(93)

Evidence of no accessibility errors in the Functions (index) HTML file

Functions Page for Desktop (99)

Evidence of no accessibility errors in the Functions (index) HTML file

Generator Page for Cell Phones(97)

Evidence of no accessibility errors in the Generator HTML file

Generator Page for Desktop (100)

Evidence of no accessibility errors in the Generator HTML file

Quiz Page for Cell Phones(95)

Evidence of no accessibility errors in the Quiz HTML file

Quiz Page for Desktop (99)

Evidence of no accessibility errors in the Quiz HTML file

Contact Page for Cell Phones(97)

Evidence of no accessibility errors in the Contact HTML file

Contact Page for Desktop (100)

Evidence of no accessibility errors in the Contact HTML file

404 Page for Cell Phones(92)

Evidence of no accessibility errors in the 404 file

404 Page for Desktop (100)

Evidence of no accessibility errors in the 404 file





8 . Testing of User Stories

First time users

The following are testing of User Stories previously described above:

  1. As a user, I want to find a responsive website, so I can access it in any device without having the content affected.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Design of pages and their visualization adapt to different screen sizes Different designs in different devices showing correctly Works as expected
Screenshot

Am I Responsive Image



  1. As a user, I want to find a summary of types of wavelets, so I do not need to research for them in different sites on the web.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Summary of Functions Scroll down to find all currently available types of wavelets Find requested information, in one page Works as expected
Screenshots

Functions Page Top Image

Functions Page Bottom Image



  1. As a user, I want fo have the functions (formulas) of the wavelets, so I do not need to go through long texts or the web to find them.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Summary of Functions Scroll down to find all currently available formulas for the types of wavelets Find requested information, in one page Works as expected
Screenshots

Functions Page Top Formulas Image

Functions Page Bottom Middle Image

Functions Page Bottom Top Image



  1. As a user, I want to select the input parameters of the wavelets and see the corresponding graph of them, so I see how my parameters are affecting the wavelets.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Wavelet Generator Assign desired parameters in input fields and select type from dropdown list Plot desired wavelet for checking. Works as expected
Screenshot

Wavelet Generator Image



  1. As a user, I want to have the wavelet I choose sent to my e-mail address, so I can have it available for other applications and/on for download without having to use other applications that could take a longer time for the generation of the wavelet.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Wavelet Generator Click on "E-mail Data" button to send the data to the desired e-mail address Find information about projects Works as expected
Screenshots

Wavelet Generator Send E-Mail Image

Wavelet Generator Send E-Mail Receipt Image



  1. As a user, I want to have the option to send comments or questions, so I can contribute with the website development and/or indicate errors or bugs.
FEATURES ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form and Footer Navigate to Contact page and/or fixed on bottom, always visible Send form and/or use contact information in footer Works as expected
Screenshots

Contact Form

Footer - LinkedIn

Footer - GitHub

Footer - Mail To



Returning users

  1. As a returning user, I want to have the website accessible from any device, so I do not depend on only one device to access the information.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Design of pages and their visualization adapt to different screen sizes Different designs in different devices showing correctly Works as expected
Screenshot

Am I Responsive Image



  1. As a returning user, I want a navigation menu on top and always visible, so I can access any content in the website from there and do not need to use the back button of the browser.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Fixed navigation menu Access it on top, fixed and always visible Navigate to different pages Works as expected
Screenshots

Fixed Navigation Menu - Functions Page

Fixed Navigation Menu - Generator Page

Fixed Navigation Menu - Quiz Page

Fixed Navigation Menu - Contact Page



  1. As a returning user, I want to have a reference website with a summary of types and functions of wavelets, so I do not need to look for them and/or check in different websites.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Summary of Functions Scroll down to find all currently available formulas for the types of wavelets Find requested information, in one page Works as expected
Screenshots

Functions Page Top Formulas Image

Functions Page Bottom Middle Image

Functions Page Bottom Top Image



  1. As a returning user, I want to generate new wavelets so I can check them in a quick way.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Wavelet Generator Assign desired parameters in input fields and select type from dropdown list Plot desired wavelet for checking. Works as expected
Screenshot

Wavelet Generator Image



  1. As a returning user, I want to test my knowledge against a quiz, so I refresh basic concepts and/or take a break to when I want to.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Quiz Navigate to Quiz page Run quiz with Start button Works as expected
Screenshot

Quiz Image



  1. As a returning user, I want to have a way to send feedback or make consultations, so I can collaborate and/or make consultations about the website and/or its content.
FEATURES ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form Footer Navigate to Contact page and/or fixed on bottom, always visible Send form and/or use contact information in footer Works as expected
Screenshots

Contact Form

Footer - LinkedIn

Footer - GitHub

Footer - Mail To



  1. As a returning user, I want to be informed if the contact form goes through, so I know if my message is sent or it is not.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form Indicate whether the form went through or it did not Check message below Send button Works as expected
Screenshot

E-mail Sent from Contact Form Image



  1. As a returning user, I want to have a way to contact the developer so I can contribute and/or indicate errors or bugs.
FEATURES ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form Footer Navigate to Contact page and/or fixed on bottom, always visible Send form and/or use contact information in footer Works as expected
Screenshots

Contact Form

Footer

Footer - LinkedIn

Footer - GitHub

Footer - Mail To



Site Owner

  1. As owner, I want to create a website that provides a basic service (wavelet generation) so users can use it to check and obtain wavelets without using longer solutions for the generation/checking of them.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Navigate to all pages to find a summary of wavelet types and functions, an interactive wavelet generator with the capability of sending the wavelet to an e-mail address, a quiz to take a break and a contact form to send comments, suggestions or questions. Find information and features in all website pages Initial version deployed, working as expected
Screenshots

Generator Page



  1. As owner, I want to create a website that is the base for further development, so I can keep showing my work and offer more solutions in the future.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Similar to previous testing of user story (number 15). Find information, features and tools for further development in all pages. Find information, features and tools in all website pages Initial version deployed
Screenshots

Functions Page

Generator Page

Quiz Page

Contact Page



  1. As owner, along with other points of this section, I want to show my work and give the option to users to contact me if they wish.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website, Contact page and footer Check my work on different pages, contact me through the contact form in the Contact page and/or through the links provided in the footer Find information and contact options Works as expected
Screenshots

Functions Page

Generator Page

Quiz Page

Contact Page

Footer

Footer - LinkedIn

Footer - GitHub

Footer - Mail To



  1. As owner, I want to provide a website that can be browsed fully without using the back button, so users have a "map" of the website at all times and do not get issues while navigating (like sending data to a server interrupted or resent).
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website logo (for Functions page), fixed navigation menu and footer Find them in any pages, always fixed, website logo and navigation menu on top, footer in the bottom All website accessible without using the browser back button Works as expected
Screenshots

Website Logo

Fixed Navigation Menu

Footer



  1. As owner, I want to provide a responsive website, so user can access it from any device without any constraint to navigate, find and/or use the website.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Projects table Scroll down in About Us page Find information about projects Works as expected
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Design of pages and their visualization adapt to different screen sizes Different designs in different devices showing correctly Works as expected
Screenshot

Am I Responsive Image



  1. As owner, I want to give an interactive website that update colours, graphs and information, so users enjoy the navigation in the website and instantly know if the website works properly or it does not.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website Interactivity is mainly observable in Generator and Quiz pages Check interactivity and responses in all pages, especially in Generator and Quiz pages Works as expected
Screenshots

Generator Page Image

Quiz Page Image



  1. As owner, I want to put a brand in the top left, so users not only associate the brand with the website but also they can click it for the "Home" (Functions) page.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Website logo Fixed on top left of all pages Click for Functions page (Home) Works as expected
Screenshot

Website Logo



  1. As owner, I want to provide a website that summarises the type of wavelets so users can use it as a reference.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Summary of Functions Scroll down to find all currently available types of wavelets Find requested information, in one page Works as expected
Screenshots

Functions Page Top Image

Functions Page Bottom Image



  1. As owner, I want to give an interactive website, so users test their own wavelets without having to replicate the formulas with their own parameters themselves.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Wavelet Generator Assign desired parameters in input fields and select type from dropdown list Plot desired wavelet for checking. Works as expected
Screenshot

Wavelet Generator Image



  1. As owner, I want to provide a quiz so users can use the website as a basic entertainment when they want a short break from their activities.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Quiz Navigate to Quiz page Run quiz with Start button Works as expected
Screenshot

Quiz Image



  1. As owner, I want to give as many options to be contacted as possible, so users can choose forms or links in the footer to send their consultations and/or feedback in a very fast way without having to navigate throuth the website.
FEATURES ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form and Footer Navigate to Contact page and/or fixed on bottom, always visible Send form and/or use contact information in footer Works as expected
Screenshots

Contact Form

Footer - LinkedIn

Footer - GitHub

Footer - Mail To



  1. As owner, I want to inform users if they consultation/message was successfully sent, so they know if they need to resend it or they do not.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Contact Form Indicate whether the form went through or it did not Check message below Send button Works as expected
Screenshot

E-mail Sent from Contact Form Image



  1. As owner, I want to inform the user, through an error page, if there is any error when loading the website.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
404 page Show 404 page when loading a page has been done with errors Find a 404 page that is related to the website (not a default page from browser) Works as expected
Screenshot

404 Page Image



  1. As owner, I want to validate the contact form and e-mail field for sending wavelet data, so users cannot send empty forms or data, simultaneously letting them know if the form or data is successfully sent.
FEATURE ACTION EXPECTED RESULT ACTUAL RESULT
Wavelet Generator and Contact Form Show a message in the E-mail field in the Generator page and all the fields of the contact form in the Contact page that some data/information is missing before the action can be completed Show message/alert and prevent form or data to be sent Works as expected
Screenshots

Data E-mail Validation Image Form Name Validation Image Form Surname Validation Image Form E-mail Validation Image Form Description Validation Image







9 . Bugs

Some bugs were related to positioning of elements in the page. They were fixed by assigning proper values, most of them with the help of a temporary background colour for the element.

Then, many minor bugs were solved just by assigning the correct property and/or by trial and error.

Bugs that required more time and specific solutions were the following ones:

Bug Solution
The quiz was not able to read and compute the correct value of the answer The issue was caused by an improper use of the textContent property, which replaced the content of the "p" element deleting its inner "span" elements. Solved with the help of the Code Institute's material by using the innerHTML property, where values for computation were read with the value property.
The correct answers are generated ten times each, times the function is called, while the function returns only one value. This way, extra/useless memory is assigned. The issue could be solved be creating a global variable and reading the values from there.
Time in Quiz page show three digits for the seconds, after 70 seconds has been taken by the quiz. The issue was solved by adding an extra if condition for the case when seconds are greater than 70 seconds. Before it just added the value of seconds, now it first checks that the value is less than ten before assigning the value to the document.
Send button in Quiz page does not respond to width styling in CSS Since the first "id" value (send-button) might have been interfering with another "id" (in a downloaded library, because it has not been found anywhere else in the files of this website), it was changed to "quiz-send-button", solving the issue and assigning a width similar to the answer/input box.
Fixed navigation header moves along with headings and body when expanding the menu after clicking the Bootstrap hamburger button Solved by adding a top property with a value of zero in the CSS style file.
Brand with website name and Bootstrap hamburger button move up when expanding the menu after clicking the Bootstrap hamburger button Solved by adding a padding-bottom property with the same value of the previous added padding-top property in the CSS style file.
While checking JavaScript files for Internet Explorer browser (Version 2004, OS Build 19041.1165), website lost interactivity because of scripts not being loaded Correction was achieved by converting strings defined between backtick characters to a sum of strings involving short strings between double quotes plus variables. The solution has made the quiz to run normally in this browser, however it could not solve the issue of sending the form and/or data with EmailJS, which runs for ES6 (while the browser does it for ES5). Therefore, sending data and/or forms is not supported for Internet Explorer.
While checking JavaScript files for Internet Explorer browser (Version 2004, OS Build 19041.1165), it was notices that data and forms are does not work. After investigation it was observed that EmailJS, technology used for achieving these tasks, is designed for ES6, while Internet Explorer supports ES5. A solution was attempted with Babel transpiler, however the solution requires (at least for the moment) further investigation. Check commit "Try EmailJS with Babel transpiler in contact.js file", b1c6181, on August 6th, 2021, plus previous EmailJS testing, to check these attempts. Therefore, sending data and/or forms is not supported for Internet Explorer.





10 . Deployment

The website was fully written in Gitpod, permanently tested with Gitpod preview, and periodically deployed to GigHub Pages (in a main branch).

The fully deployed website, accessible by anyone, is found here, whose URL is https://csc7.github.io/PP2_CI_WW . Its repository is found here, whose URL is https://github.com/csc7/PP2_CI_WW.

Based on the Code Institute's Love Running project content, the following steps has been applied to have the front-end final version deployed:

  1. Select website repository in GitHub account.
  2. Go to "Settings" (up in the menu, to the right).
  3. Select "Pages" in the menu on the left.
  4. At the beginning, in "Source", select "Branch: main", and click "Save".
  5. The URL address of the deployed website will appear on top of the page, as can be observed in the screenshot below in the drop-down item.
GitHub Pages Screenshot

Deployment on GitHub Pages Image


After first deployment, several updates have been carried out before the final version. These updates were implemented in the deployed website from Gitpod, just by using the "push" command for every commit (change) in the ongoing development.

The project can also be forked from the repository (https://github.com/csc7/PP2_CI_WW), please check for the "Fork" button, top-right of the page, to achieve this task.





11 . Credits


12 . Acknowledgements

I would like to acknowledge and thank the following people for being part of this project and for helping me in the development of it:

  • To my wife and family, for always supporting and helping.
  • Code Institute, for providing knowledge, guide, content and tools.
  • My mentor, Mo, for helping with very valuable guide and support.
  • Code Institute community in Slack for permanently being an online reference.
  • All the valuable information provided by the sources mentioned above in the credits.