/nerdy-tshirt-creator

The course Browser Technologies is about learning to build robust and accessible websites using Progressive Enhancement and testing. Browser Technologies is part of the half year minor programme about Web Design and Development in Amsterdam. Bachelor Communication and Multimedia Design, Amsterdam University of Applied Science.

Primary LanguageEJSMIT LicenseMIT

🧑🏻‍🏫👕 Nerdy Tshirt Creator

Schermafbeelding 2022-04-06 om 13 31 36

Live Demo

Table of contents

⚙️ Installing application

git clone https://github.com/jody29/nerdy-tshirt-creator.git
cd nerdy-tshirt-creator
code .
npm install
npm start

📄 Wireflow

wireflow2-10

🍰 Progressive enhancement

👍🏻 Core functionality

The core functionality is that the user can customize his own t-shirt, put it in the shopping cart and order it.

What I had to do

To make sure that the core functionality works no matter what, I had to use as much HTML as I can. Also I had to validate the forms server-side, so it will still work when JavaScript is turned off.

I created a POST request that reads the JSON file and checks if there is allready a shirt existing with the same ID. Schermafbeelding 2022-04-07 om 17 42 52

If the there isn't any shirt with the same ID, then it will push the body of the form to the array in the JSON file. This will look like this in the JSON file. Schermafbeelding 2022-04-07 om 17 46 25

👌🏻 Usable layer

For the usable layer I added some styling to to my web page. I made sure that the labels had a :focus so that people who have no trackpad or mouse will still be able to use my application.
Schermafbeelding 2022-04-07 om 17 48 26

Because some browser don't fully support flexbox, I had to make sure that something else would happen if flexbox is not supported. Schermafbeelding 2022-04-07 om 17 50 08

🤤 Pleasurable layer

For the pleasurable layer I added a live preview of the shirt that the user creates. I also made sure that every change that the user makes will be stored in the LocalStorage. So when the user leaves the page and then comes back, he will be able to continue were he left off. Schermafbeelding 2022-04-07 om 17 52 10

🕵🏻‍♂️ Testing features

Features

  • customize shirt and add to cart.
  • editing a shirt that has ben added to the cart.
  • continue customizing when returning to the page.
  • live preview of the shirt when user customizes it.

Test scenarios

  • Everything is enabled
  • JavaScript and css are disabled

Chosen browsers

  • Chrome 99 on MacOS Big Sur 11.6
  • Safari 14 on MacOS Big Sur 11.6
  • Safari 14 on Iphone with IOS 15.3.1
  • Chrome 75 on Nexus 5 with Android 6

Key conclusions

  • Core functionality will always work.
  • Flexbox is not fully supported on the Nexus 5. So had to use a @supports in CSS.
  • When using safari, user has to set the tab function on in his preferences. This improves the accesibility if it's turned on.
  • Pleasurable layer is available in every browser. But when Javascript and CSS are disabled, they're no longer available.

Customize shirt and add to cart

Chrome Desktop

Everything enabled

chrome_1-02

  • Everything works fine and the user can easily customize his t-shirt
  • User can navigate through the form with tab keys
  • User can add the t-shirt to his shopping cart with no problems

Javascript and CSS disabled

chrome2-02

  • When styling is gone, the user can still use the application
  • User can still navigate through the form with tab keys
  • User can add the t-shirt to his shopping cart with no problems

Safari Desktop

Everything enabled

Safari_Desk_1-02

  • Everything works fine and the user can easily customize his t-shirt
  • User can navigate through the form with tab keys (if he has this enabled via his preferences)
  • User can add the t-shirt to his shopping cart with no problems

Javascript and CSS disabled

Safari_Desk_2-02

  • When styling is gone, the user can still use the application
  • User can still navigate through the form with tab keys (if he has this enabled via his preferences)
  • User can add the t-shirt to his shopping cart with no problems

Safari Iphone

Everything enabled

Safari_Mob_1-02

  • Everything works fine and the user can easily customize his t-shirt
  • User can add the t-shirt to his shopping cart

Javascript and CSS disabled

Safari_Mob_2-02

  • Styling is gone and javascript are gone, but everything still works
  • User can add the t-shirt to his shopping cart with no problems

Nexus 5

Everything enabled

Nexus_1 1-02

  • flexbox isn't fully supported, but core funcionallity is still working

Javascript and CSS disabled

Nexus_1 2-03

  • User is still able to add a shirt to his shopping cart

Editing a shirt that has been added to the cart

Chrome desktop

Everything enabled

Chrome_2 1-02

  • Everything is working and the user can edit a shirt

Javascript and CSS disabled

Chrome_2 2-02

  • Because I gave the shirt a unique ID via the server, the user can still edit a shirt. If i would have stored in the localStorage, this wouldn't be possible

Safari desktop

Everything enabled

Safari_Desk_2 1-02

  • Everything is working and the user can edit a shirt

Javascript and CSS disabled

Safari_Desk_2 2-02

  • Because I gave the shirt a unique ID via the server, the user can still edit a shirt. If i would have stored in the localStorage, this wouldn't be possible

Safari Iphone

Everything enabled

Safari_Mob_2 1-02

  • Everything is working and the user can edit a shirt

Javascript and CSS disabled

Safari_Mob_2 2-03

  • Because I gave the shirt a unique ID via the server, the user can still edit a shirt. If i would have stored in the localStorage, this wouldn't be possible

Nexus 5

Everything enabled

Nexus_2 1-04

  • flex isn't fully supported but user is still able to edit a shirt.

Javascript and CSS disabled

Nexus_2 2-05

  • Because I gave the shirt a unique ID via the server, the user can still edit a shirt. If i would have stored in the localStorage, this wouldn't be possible

Continue customizing when returning to the page

Chrome desktop

Everything enabled

Chrome_3 1-02

  • When leaving the page and returning, the user can continue where it left off.
  • Progress is stored in the LocalStorage

Javascript and CSS disabled

Chrome_3 2-02

  • Because I used the LocalStorage, the user won't be able to continue where it left off if they come back to the page.

Safari desktop

Everything enabled

Safari_Desk_3 1-02

  • When leaving the page and returning, the user can continue where it left off.
  • Progress is stored in the LocalStorage

Javascript and CSS disabled

Safari_Desk_3 2-02

Safari Iphone

Everything enabled

Safari_Mob_3 1-04

  • When leaving the page and returning, the user can continue where it left off.
  • Progress is stored in the LocalStorage

Javascript and CSS disabled

Safari_Mob_3 2-05

  • Because I used the LocalStorage, the user won't be able to continue where it left off if they come back to the page.

Nexus 5

Everything enabled

Nexus_3 1-06

  • When leaving the page and returning, the user can continue where it left off.
  • Progress is stored in the LocalStorage

Javascript and CSS disabled

Nexus_3 2-07

  • Because I used the LocalStorage, the user won't be able to continue where it left off if they come back to the page.

Live preview of the shirt when user customizes it

Chrome desktop

Everything enabled

Chrome_4 1-02

  • User gets a live preview of the shirt that it is creating

Javascript and CSS disabled

Chrome_4 2-02

  • User no longer gets a live preview of the shirt that it is creating. But it still sees which color he has picked because the chosen label will have a different color. It can also see in the input which text it has filled in

Safari desktop

Everything enabled

Safari_Desk_4 1-02

  • User gets a live preview of the shirt that it is creating

Javascript and CSS disabled

Safari_Desk_4 2-02

  • User no longer gets a live preview of the shirt that it is creating. But it still sees which color he has picked because the chosen label will have a different color. It can also see in the input which text it has filled in

Safari Iphone

Everything enabled

Safari_Mob_4 1-06

  • User gets a live preview of the shirt that it is creating

Javascript and CSS disabled

Safari_Mob_4 2-07

  • User no longer gets a live preview of the shirt that it is creating. But it still sees which color he has picked because the chosen label will have a different color. It can also see in the input which text it has filled in

Nexus 5

Everything enabled

Nexus_4 1-08

  • User gets a live preview of the shirt that it is creating

Javascript and CSS disabled

Nexus_4 2-09

  • User no longer gets a live preview of the shirt that it is creating. But it still sees which color he has picked because the chosen label will have a different color. It can also see in the input which text it has filled in