Skip to content

Portfolio Project 1 | HTML/CSS Essentials | Code Institute Diploma in Software Development

Notifications You must be signed in to change notification settings

MoniPar/the-visensemble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The VisEnsemble logo

The VisEnsemble

Welcome to The VisEnsemble Choir website! This is a mock-up website for a real choir for visually impaired people in Dublin called 'The Visionaries Choir'. This website hopes to help people become more aware of what the choir is about and motivate other visually impaired people to become members and to increase opportunities for public performances.

Website responsiveness on multiple screen sizes

Visit The VisEnsemble Live Website here


Table of Contents

  1. Overview
  2. Features
  3. User Experience (UX)
  4. Technologies
  5. Testing
  6. Bugs
  7. Citation of Sources
  8. Acknowledgements

Overview

The aim of this project is to demonstrate skills in HTML and CSS. Some JavaScript is used for interactivity and to make the website more accessible with screen-readers.

It is a mobile-first build and is responsive on tablet, desktop and screens up to 2000px wide. It is also compatible with all popular browsers.

The website is intended to target the visually impaired community, including friends, families and organisations for the blind/visually impaired/disabled as well as event organisers, State bodies, Art Councils and the general public.

They will be able to see the schedule of events, rehearsal times and locations, as well as a way to learn about and contact the choir in order to join, seek further information or book them for an event.


Features

A Skip Navigation Link

Featured on all four pages, the skip navigation link comes into view when it gets keyboard focus. This allows the returning user to skip the logo and navigation links and go straight to the main content of the page.

Skip Navigation Button in Focus

The Header

Featured on all four pages, the fully responsive header includes:

  1. A link to the Logo which brings the user to the home page.
  2. A hamburger button on mobile which opens up a navigation list with links to the Home, About, Events and Contact pages. This helps reduce the clutter on the header by keeping the page links neatly stowed away until the user navigates to the hamburger button. The links have a hover and focus effect to help the user identify them as links.
  3. Links to the Home, About, Events and Contact pages on tablet and desktop which help the user to easily navigate from page to page without having to revert back to the previous page via the back button. The link to the current page is also underlined to help the user identify the page they are on.

Mobile Screenshot

Header Open Navigation on Mobile

Tablet / Desktop Screenshot

Header Navigation Links on Tablet and Desktop

The Landing Page

The home page hero on the landing page includes a photograph of the choir with a text overlay which captures the essence of the choir. This section introduces the sighted user to the choir with an eye catching image to grab their attention. The text gives the non-sighted user a very brief introduction to the choir.

Mobile Screenshot

iPhone 6/7/8 

Home page header and hero image with text overlay

Desktop Screenshot

Laptop width 1024px 

Home page header and hero image with text overlay

Home Page Content

  1. An inspiring quote by Helen Keller which introduces the ethos of the choir presented in a blockquote format with a picture of Helen Keller on the left. This is meant to motivate the user to read on about the vision of the choir.
  2. The Vision Section allows the user to see the benefits of joining the choir, as well as the benefits of singing overall. It is presented with icons which help the sighted user to distinguish between the different statements presented. Screen readers will ignore these icons completely and move on to the text instead. This should encourage the user to consider joining the choir to help improve their quality of life.
  3. The Call to Action (CTA) card includes a background image with a thick orange border to draw the eye. The text overlay expresses the call for new members and directs the eye to the bright orange button at the bottom which links to the contact page. The button has a hover and focus effect to make the user aware that it will lead to somewhere. This is meant to give the user a quick and easy way to get to the sign up page at the end. It is placed on the Home page to encourage more users to get in touch.

Mobile Screenshots

Galaxy S9

Home page quote and vision statements

iPhone 12 Pro

Home page call to action card

Tablet Screenshot

Surface Pro 7

Home page quote and vision statements and call to action

A Back to Top Link

Featured on all four pages, the back to top button is placed right before the footer for easy navigation. It is linked with the skip navigation link to bring the sighted user to the top of the page and gives the keyboard navigation user the option to either skip to main content or go through the navigation list in the header. It also has a hover and focus effect to help the user identify it as an interactive asset.

Back to Top Button and footer

The Footer

Featured on all four pages, includes icons which when clicked or focused on will bring up a phone number and email address for easy contact with the choir master. Screen readers are able to read out the phone numbers and the email address as well. The social icons are labelled links which will open in a new tab to allow for easy navigation for the user. The footer is valuable to the user as it encourages them to get in touch via phone or email if they prefer that method of contact and it also allows the user to keep connected via social media. (Refer to image above)

The About Page

  1. The About page opens with an About Us section which is overlayed on a background image. It displays a paragraph on the history of the choir and a Read More button which when clicked brings up the rest of the choir history. The Read More button was added to reduce the amount of text visible on the page. It is up to the user if they want to find out more about the history of the choir or move on to the next section. The feature has a Read Less button as well which will hide the second chunck of text once read.
  2. The flip card with a snippet of the Conductor's Biography is an eye catching feature which displays a photo of the conductor with a background of piano keys and information about his qualifications and conducting experience. This is helpful for the user as it gives more information about the conductor as well as links to his social media for more information or to connect.
  3. The Rehearsal card is a useful feature on which the rehearsal day and time, location and cost are displayed. The icons are accessible by screen readers and have a little tooltip explaining what they are. It also has a link to google maps to aid with finding the location of the rehearsal venue as well as a link to the contact page to encourage the user to sign up.

Mobile Screenshots

Samsung Galaxy S20 Ultra

About Us and top of flip card

Nokia N9

About Page Conductor and Rehearsal Cards

Tablet Screenshot

Back of Flip Card and Rehearsal Card

About Page Back of Conductor Card and Rehearsal Card

Desktop Screenshot

Laptop L 1440px

About Page About Us Section

About Page Conductor and Rehearsal Card

Media and Testimonials

  1. The Audio section provides the user with examples from the choir's repertoire of songs. Although these are temporary arrangments of the songs the choir uses, in the future they will be actual recordings to showcase the choir's talent. This is valuable to both visually impaired and sighted users, and event organisers can have a better idea of what type of events will suit the choir.
  2. The Testimonials section provides feedback from some of the choir members. This is very useful to the user as it gives them an overview of how the choir works and the benefits people living with sightloss experience when joining the choir.

Mobile Screenshots

Audio files on iPhone 12 Pro

About Page Audio Files Section

Testimonials on Pixel 3 XL

About Page Testimonials

Desktop Screenshots

2000px wide screen

About Page Audio and Testimonials

The Events Page

  1. The Events section features cards with the most recent performances the choir has participated in. Each card displays a photo of the venue, the date and time, a link to google maps showing the exact location of the venue and a paragraph about the performance and ticket sales. This section is valuable to the user as it will be updated with the most recent performance dates so they can save the date, map their location and reserve their tickets.
  2. The Call To Action card is again featured here to encourage users to get in touch.
  3. The News section features articles written by the conductor himself, or by his helper, to keep the user updated with the most recent news. This is a quick and easy way for the user to read through the most important news if they are not on Facebook.

Mobile Screenshot

iPhone XR

Events Page Full Image

Desktop Screenshot

Desktop 1440px

Events Page Full Image

The Contact Form Page

This page features a fully accessible contact form with specific fieldsets and a submit button. This enables the user to get in touch with the choir master or his assistant for further information regarding membership subscription or possibility of future events. The user is able to give their contact details, specify if they are interested in becoming a member, if they are an event organiser or other. The user is able to leave comments in the text area to encourage the choir or offer some insights on their performances.

Mobile Screenshot

Moto G4

Contact Form

Desktop Screenshot

Desktop Width 1440px

Desktop Contact Form

Future Features

  • Real name, logo, information, media and links for the Visionaries Choir.
  • A Close Navigation symbol on the hamburger button in the header on mobile.
  • An archive of past performances, appearances etc for the choir’s followers and members to access from the website itself.
  • News cards to look more modern, maybe a skewed effect on an opaque background.
  • A donation box for the choir.
  • A personalised page that thanks the user for submitting the sign up/contact form with a functioning action which sends the data to a file on the server.
  • Information about how the users data will be used (GDPR).

Back to Top


User Experience (UX)

Strategy/Site Goals

The main goal of the website is to make the public aware of The VisEnsemble Choir. It hopes to motivate more visually impaired people to join as members and increase the number of supporters and followers of The VisEnsemble Choir. The overall objective of this website is to aid in creating a well-established and well-rounded choir and as a result increase the number of ticket sales and performances per year.

Scope/User Stories

This section aims to determine what a user/visitor would expect from interacting with the website. Scenarios of actions each type of visitor wishes to take are listed below.

  • Website User Goals

    As a website user:

    • I want to easily navigate through the website.
    • I want the website to be organised and consistent across all devices.
    • I want all external links to be opened in a new tab so I don’t have to find my way back to the main page.
    • I want to see consistent behaviour so I have a pleasant journey when navigating through the page.
  • First Time Visitor Goals

    As a first time visitor:

    • I want to understand immediately what the website offers.
    • I want to read about the choir and learn more about who they cater for and how accessible the space for rehearsal and learning is.
    • I want to see where and when rehearsals take place so I can check if I am available and how to get there.
    • I want to know what the individual members have to say about the choir so I can assess if the atmosphere meets my expectations.
    • I want to hear what kind of songs are in the choir’s repertoire so I can decide if I would enjoy singing them.
    • I want to hear what kind of songs are in the choir’s repertoire so I can assess if they are appropriate for the event I’m organising.
    • I want to hear/see the choir sing in order to assess their level of performance.
  • Returning Visitor Goals

    As a returning visitor:

    • I want to be able to contact the choir master or his assistant with any queries I may have.
    • I want to see the links to social media so I can interact with other followers and see what else is happening.
    • I want to see updates in the events section in order to pre-book tickets with the relevant organisations.
  • Frequent Visitor Goals

    As a frequent visitor:

    • I want to see updated news from the choir master and other members of the choir.
    • I want to see different testimonials from newer members of the choir.
    • I want to engage with and make my contribution to the choir. I want my opinion to be heard.

Structure/Design Choices

A four page website which offers simplicity and consistency within its structure. The Navigation menu displays the choir’s logo and links to the different pages on the website, for easy navigation. This is repeated across all pages. The Footer displays social media links which open in a separate tab for ease of use. The footer is also repeated across all pages to keep the design uniform and for ease of access.

Skeleton/Wireframes

Wireframes were first sketched with pen and paper. This method helped me with brainstorming, deciding the most essential parts for the website and getting a feel for the website as a whole. They were then wireframed in Balsamiq to give a closer indication of the intended design.

Right click to view mobile wireframes in pdf done with Balsamiq

Right click to view desktop wireframes in pdf done with Balsamiq

Note: Through the design phase some elements were changed to allow for a better user experience.

Surface

This section defines the visual language of the website.

  • Colour Scheme

    The colour orange was chosen as the primary colour for the website as it represents friendliness, enthusiasm and creativity. It was used for the logo and header text, as well as important text and buttons to draw the eye.

    ColorMind was used to generate the following colour palette.

Colour Palette Used

The colour Outer Space was used as the dark shade for the header and footer background as well as the website's main typeface.

The colour Green White was used as a light shade for the background on some cards and text color on the contact page.

The colour Edward was used as a light accent with increased or decreased brightness and/or opacity for certain features.

The colour Limed Oak was used with opacity for the body background and the contact page text inputs.

  • Typography

Google fonts Roboto and Nunito were chosen for the website. They are both sans-serif fonts which have a higher readability than serif fonts.

  • Icons

The icons used throughout the page were taken from Font Awesome. On the Home page in the Our Vision Section, the icons used are mainly decorative, they are eye-catching and identify with the text underneath them. They are hidden from screen readers using aria-hidden="true". The icons on the Footer are interactive links and have an aria-label which gives the relevant information to screen readers to read out to the users. The icons on the Rehearsal card provide a tooltip for sighted mouse users by using the title tag. A span tag was also added to provide the same information in the tool tip for assistive technologies. This is kept visually hidden as the tool tip already provides that information. Unfortunately, at this time it wasn't possible to make them accessible by keyboard navigation without turning them to links or using JS.

Back to Top


Technologies

Languages

Libraries & Frameworks

Tools

Back to Top


Testing

Validator Testing

No Errors or Warnings to show on either of the four pages.

No Errors found.

Warnings include:

  • 'Imported style sheets are not checked in direct input and file upload modes' for the google fonts @import
  • 'Due to their dynamic nature, CSS variables are currently not statically checked' for all the variables I used.
  • All other warnings are for vendor extension prefixes.

Lighthouse Testing

Chrome Browser
Page Device Category Result Diagnostics Comments
Index Mobile Performance 95% Serve static assets with an efficient cache policy
Accessibility 100%
Best Practice 92% Issues were logged in Devtools No issues detected so far
SEO 100%
Desktop Performance 99% Serve static assets with an efficient cache policy
Accessibility 100%
Best Practice 92% Issues were logged in Devtools Only third-party coookie issues detected so far
SEO 100%
About Mobile Performance 71% Serve static assets with an efficient cache policy Audio files have a Cache TTL of None
Minimize main-thread work - 5.3s JS moved from external script to index.html
Accessibility 100%
Best Practice 92% Issues were logged in Devtools No issues detected so far
SEO 100%
Desktop Performance 87% Serve static assets with an efficietn cache policy Audio files have a Cache TTL of None
Avoid enormous network payloads -total 4,237KiB Hero image compressed and webp
Accessibility 100%
Best Practice 92% Issues were logged in Devtools Only third-party cookie issues detected so far
SEO 100%
Events Mobile Performance 95% Serve static assets with an efficient cache policy
Accessibility 100%
Best Practice 92% Issues were logged in Devtools No issues detected so far
SEO 100%
Desktop Performance 99%
Accessibility 100%
Best Practice 92% Issues were logged in Devtools Only third-party cookie issues detected so far
Contact Mobile Performance 60% Opportunity: Eliminate render-blocking resources 1.02s Deferred JS scripts
Accessibility 100%
Best Practice 92% Issues were logged in Devtools No issues detected so far
SEO 100%
Desktop Performance 90% Serve Static assets with an efficient cache policy
Accessibility 100%
Best Practice 92% Issues were logged in Devtools No issues detected so far
SEO 100%
Edge Browser

Issues:

  • Button type attribute has not been set on the navigation button - added
  • The 'x-ua-compatible' meta element should not be specified as it is not needed - removed

Manual Testing

The website was manually tested on Chrome, Edge, Firefox and Safari browsers at different screen sizes as well as on iPhone 6S, Samsung Galaxy S10 Plus, iPhone XS max, iPad Air,Laptop 1280px and Standard HD Screen 1920 x 1080. Responsiveness and functionality worked as expected on all except iPad Air which ran on iOS 12.5.5 where the WebP images were not rendering. Please refer to Images not rendering on old browsers section under Bugs for my solution to this.

Manual Testing with older browsers also showed that the :is() pseudo class selector was not yet supported and thus was removed from the stylesheet and reverted back to the long format.

Functionality was also tested with keyboard navigation and screen reading technology. These work as intended, except for the 'Read More button' on the About Us section, the Flip card and the Contact Form. Please refer to the next section for details or click on the links above.

Back to Top


Bugs

Bugs found through validation

  • HTML Validator gives warnings that some articles and sections lack headings.

    • Index Page:

      Article tag for the quote was changed into an Aside tag. Section for the quote and vision container was changed to a div.

    • About Page:

      Section tag for cards container was changed to a div.

    • Events Page:

      Section tag for Events was given the heading of "Events". Section tag for News was given the heading of "News".

  • CSS Validator gives a parsing error on the following:

html {
  @media (prefer-reduced-motion: no-preference) {
    scroll-behavior: smooth;
  }  
  font-size: 100%;
}

This was corrected by placing the media query on the outside, then the element and the style rule, like so:

@media (prefer-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

html {
  font-size: 100%;
}
  • CSS Validator warned about 'The property clip is deprecated' - MDN web docs__ recommended to use the clip-path property instead. So the following code which is meant to make an element 1px small in order not to be visible on screen
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);

was replaced by:

clip-path: polygon(1px, 1px, 1px, 1px);
clip-path: inset(50%);

Eventually this was also replaced by absolutely positioning the text off screen as recommended by WebAim

Firefox Accessibility Tools

Firefox gave warnings on every page about contrast issues, which the Lighthouse validators on Chrome and Edge did not detect. These were all changed accordingly to suit, except for the 'Skip Navigation link' which is meant to be hidden until it comes into focus.

Firefox gave an accessibility issue with the radio buttons in the Contact form. They were not visible enough. The width and height of the radio buttons was added and set for different screen sizes with media queries.

Lighthouse

  • When Lighthouse performance was first checked the report was extremely low for almost all pages. All images had to be resized, compressed and most changed to webP. Media queries were added to resize images according to screen size. After all this, performance improved a little but still not enough. Eventually, all images on the website were moved to Cloudinary. This made it easier to resize the images accordingly. This Guide to responsive image syntax in HTML was very helpful in making the logo and photos responsive and gave instructions on how to use srcset for better performance.

  • iFrames with YouTube videos were also reducing performance of the website. They were converted to mp3s and OGG backups to help with this. The visuals were not needed in this case so it made sense to have them as audio files instead. The real website will have the choir's own recordings. These will be added as audio/video files, or links will be provided to the choir's own YouTube page.

The Back to Top Button

All four pages had a Back to Top button which was meant to appear when scrolling down. This worked on 3 of the 4 pages and manual testing found that it was not always accessible with screen readers. After much trial and error, it had to be scrapped and replaced with the current Back to Top link which works fine for sighted, non-sighted and keyboard users. The Back to Top link brings the user back to the skip navigation link which is quite handy for people with disabilities.

The About Us Section

When the read more link was clicked, the whole page jumped down. This was not ideal, so after a few tests an anchor tag was placed in the div container which fixed this problem. This, however, made the read more button less intuitive with screen readers. As the user double-taps on the Read More button, the next swipe jumps to the next section (Our Conductor) rather than the next paragraph in the About Us section. This issue has not yet been fully resolved. I will opt not to use this feature in my future projects until I find an accessible solution for it. For the time being, an aria-label to select and swipe back has been added in order to facilitate the Read More action.

The Flip Card (Our Conductor)

This worked out better than expected and no JavaScript was needed. At first the Flip Card was not rotating when navigating with the keyboard. A quick search on Google brought me to anycodings which had a solution made possible by adding :focus-within rather than just :focus along with :hover on the flip card container.

The only remaining bug is that although voice over can read the back side information, with certain devices it does not always flip to show the back. This is not ideal for visually impaired people who have some sight and use screen readers. More research will be done to fix this.

Contact Form

  • The Contact form works well for sighted users and with keyboard navigation, as errors are visually highlighted when the form is submitted incorrectly. However, the user relying on screen reader has no feedback when errors are displayed. After plenty of searches online it was evident that this could not be done without JS, so a script had to be borrowed from Hidde's blog to make the form more accessible with screen readers.
    After testing with different methods, aria-live="assertive" with aria-relevant="additions removals" (to apply the same functionality in reverse) is used to tell the user that a required field is not filled in and a visually hidden note is placed just before the Submit button to tell the user that in order to submit the form they need to get confirmation and review their required fields.

  • The text area stretched outside the parent container on small screens and it was not responsive. After a quick search on Google, it was found that box-sizing needed to be set to border-box in order for it to respect its parent container padding and border.

textarea {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    width: 100%;
}

Images not rendering on old browsers

A quick search on Caniuse.com showed that older versions of all browsers, especially Safari, did not support the WebP image format. The picture tag in HTML was added to offer a fallback to a JPG format for these browsers. faqcode4u.com was helpful in figuring this out. HTML for the pages was validated again in the HTML Validator.

For the background images in CSS, it was opted to switch back the Home Page Landing Background Image, The About Us section Background Image and the Flip Card Profile Photo to JPG format again as they were useful for positioning of the other elements. The website was tested again for performance and it was found that there was only a .2s delay for the JPG images. The Contact Page Background Image was left as WebP as the contact form had good contrast without it.

Unfixed Bugs

The Audio players on certain iOS devices were not centering properly. It was suggested to pass the CSS through an online Autoprefixer to add vendor prefixes for all popular browsers. This did not solve the problem but it was decided to keep the prefixes in case of other issues.

The Radio buttons do not show up as intended on iOS devices, they are too small and don't respond to the styles written. After some research it seemed that JS was needed to fix this or using a jQuery plug-in. This video shows how to customise them for iOS using only HTML and CSS but this wasn't what I was looking for, for this project.

Back to Top


Deployment

The project was deployed to GitHub pages by navigating to the Settings tab in the GitHub repository and selecting the Main Branch from the source section drop-down menu. Once the Main branch was selected, the page automatically refreshed to display a detailed ribbon indicating successful deployment.

The live link can be found here - https://monipar.github.io/the-visensemble/


Citation of Sources

Content

Media

Back to Top


Acknowledgements

A huge thanks goes to my mentor Sammy Dartnall for all the guidance and encouragment she gave me throughout this project. Same goes to the fabulous Student Care Duo Kenan Wright and Kasia Bogucka for their support and help with getting set up and sorted as well as my MSLETBB team mates for the moral and technical l support.
Thank you goes to the CodeInstitute Slack community which had a lot of material I found useful in the various channels. My friends and little team of screen-reading technology testers Abbie Healy, Edvard Navackas, Victoria Alves de Oliveira and Tim Culhane for testing my website and giving very helpful feedback. My parents Joe and Lucia Parnis for the encouragment and last but not least my partner Austen Donohoe for the VisEnsemble Logo and for all the dinners and cups of tea.

Back to Top

CI logo

About

Portfolio Project 1 | HTML/CSS Essentials | Code Institute Diploma in Software Development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published