Giter Club home page Giter Club logo

ustwo.com-frontend's Introduction

ustwo.com website

Circle CI build status

Overview

This repository contains all the front end code for the current ustwo.com website and the toolset required to build and deploy it.

In order to be able to have full control over all aspects of the website – including transitions between pages – and to make navigation super fast by not having to reload the browser, we decided to build the site as a single-page application. We chose React.js as a main JavaScript technology enabling us to do this, since it has built in support to render pages on the server side too (called isomorphic rendering). This way we could keep the initial rendering performance snappy on mobile and let visitors see content without an extra data loading step which usually happens with most client side JavaScript framework. To enable server side rendering and to have proper URLs, we put a small Node backend server behind our app.

Our content management system behind this is a Wordpress instance which doesn't actually render the pages itself, but instead serves content up via WP API through a mixture of standard and customised JSON REST API endpoints, making the vast majority of the content editable.

Tech stack

React SPA

With the current set of challenges and available browser features we found React.js to be a great solution to templating and events on the UI. The composability of components with the one way binding and "queryless" event handling offered by JSX templates is solving the right problems, without trying to do too much and become a framework. The easy to implement server side rendering combined with the ability to prevent rerendering on client side (by internally doing a comparison to the virtual DOM) is also a great feature to make it a viable solution on mobile.

To make it a single-page application we put Flux Routes and Store behind the React front end, so that it can take over the navigation from the browser and load data from Wordpress by itself.

Since we need to precompile JSX anyway, in our quest to minimise the number of libraries (like Underscore, etc) and push a future-proof way of working with JavaScript, we adopted a lot of ES6 features by transpiling the code with Babel.

As for the CSS, we're using Sass to be able to split our styles and store them together with the components. But in general we're trying to minimise the reliance on Sass language specific features and instead write as much pure CSS as possible, getting ready for a CSS Next / PostCSS world just as we did with ES6.

For the animated illustrations on the site we use SVG sequences, controlled by a small React component. This is unfortunately only possible with inlining SVGs, but all the static vector symbols are stored in one, external SVG sprite, polyfilled for old Internet Explorers with SVG for Everybody.

Node app

Since all the heavy content work is done for is in Wordpress, our Node / Express app is kept as light as possible. The only two main responsibilities are delivering fully baked HTML files through running React rendering on the prefetched content and responding to the same routes as the front end app does.

Nginx

As we had quite a lot of components (or microservices if you will) to tie together – multiplied by production + staging + dev environments – we didn't want to overburden our Node server and decided to put an Nginx proxy in place.

Build tools

While we started out using Gulp for our frontend builds which was a very convenient start point for quickly iterating different combination of tools, in the end we settled on shell scripts using the fastest command line builds of libraries.

For JavaScript we're using Browserify (plus Persistify caching) to process our code with Babel and resolve dependencies using Aliasify. Our Sass code is compiled using SassC with PostCSS's Autoprefixer taking care of vendor prefixing. All this happens in a dedicated compiler Docker image, so that we can keep the production application as lean as possible.

To get the Docker environment up and running and to tie all of the above together, we created a fleet of Makefiles to get some extra flexibility with shared variables and task composition on top of shell scripting.

CDN

We have everything served up from a CDN, and by that we mean that ustwo.com is pointed at the CDN URL on a DNS level! Needless to say this guarantees great load speeds across the globe and at very little cost. Call it the "CDN first" approach if you will – check out our blog post about this here.

Unless you have a lot of user dependent dynamic content (and it's not feasible moving these areas to subdomains) the trick is to remove caching from all layers of the stack, while keeping the client side cache / expiry short (we're using only 1 hour or effectively one session).

This way the only place you need to worry about and manage cache is the CDN. Of course for this you need to have a decent CDN which has an API to purge and prefetch content. At this point all the servers and applications behind can be scaled down to no cache and minimum resources as they'll only be accessed by the CDN network for an occasional update.

The big picture

So here's how all this fits together and creates a working setup with our WordPress backend and CDN.

ustwo.com infrastructure diagram

Inclusion

Browser compatibility

We're aiming to support all evergreen browsers (Chrome, Firefox, Edge and Opera on all platforms), Safari on Mac and iOS, Internet Explorer 10-11 and Android Browser 4.2-4.4.4.

In case you were wondering, we've chosen these as we wanted to be able to use Flexbox, and they also happened to conveniently overlap our historical visitor profiles from Google Analytics.

If you see any misbehaviour with one of these browsers please open an issue!

Performance

Being a studio which is passionate about delivering a great user experience everywhere and early champions of mobile, we kept performance in the front of our minds throughout the process of building the websites.

This means that we are continuously reviewing both hard metrics and perceptual performance. To get reports and keep an eye on things, we found GTmetrix to be a great tool with a generous free tier. It calculates both PageSpeed and YSlow scores, generates a network waterfall, renders a filmstrip view and sends an automated report of all these regularly.

There are too many things to list here, but we mentioned a lot of optimisations throughout this README and might cover some of them specifically in blog posts later.

Accessibility

Officially supporting only modern browsers doesn't mean that we ignore people (and browsers) with special needs.

  • We're delivering prerendered HTML, so content is delivered to and rendered on clients without Javascript (or with overzealous ad blockers)
  • Clean, standards compliant markup
  • WAI-ARIA tags (TODO: test more comprehensively and with real users)

Setup

Docker

In order to get up and running you need Docker. The best way to install Docker is to follow the current Docker documentation

Then add the following aliases to your /etc/hosts file:

127.0.0.1 local.ustwo.com
127.0.0.1 staging.ustwo.com

Note: For setup without the native docker client, skip this step and see DOCKER-SOURCE.md.

Credentials / Vault

  • Open a Terminal window and go to the project folder.

The easiest way is to load the vault image from a tar. If you receive the image tar from someone in the team just do:

    $ make vault-load VAULT_PATH=path/to/vault-2015.tar

If you do not have access to this tar then you can proceed by generating your own self-signed certificates.

    $ make vault-generate-cert
    $ make vault-build

Note: If you use self-signed certificates you probably want to use your docker IP (e.g. docker-machine ip dev) instead of a custom ustwo.com domain.

Develop

Note: Check the MAKE.md for an explanation of how the Make tasks are structured.

  • Open a Terminal window and go to the project folder.

Prepare a new environment:

    $ make compiler-build build

Compile the assets (you can use only this when you're only recompiling on front end stuff):

    $ make stuff

Or target specific subtasks:

    $ make css             # compiles SASS files
    $ make spa             # compiles the React app
    $ make vendors         # compiles app dependencies

Note: css and spa combined with VERBOSE=true will create sourcemaps.

Note: spa and vendors combined with FLUSH_CACHE=true will skip any cache created by browserify. Ex:

    $ make spa VERBOSE=true FLUSH_CACHE=true

Deploy app (when you need to restart services):

    $ make -i love LOCAL_FS=true VERBOSE=true

Note: Add the flag LOCAL_FS=true if you want to use your local files instead of the ones inside the containers. Note: Add the flag VERBOSE=true if you want the JS and CSS expanded and more log output on the services.

As long as LOCAL_FS=true is set a convenient way to refresh the environment is:

    $ make -i love stuff LOCAL_FS=true

As it will rebuild the assets (stuff) and recreate the containers (love) remounting all necessary files from the host environment.

Clean the environment:

    $ make clean

See Node app logs with:

    $ make app-log

And Nginx logs with:

    $ make proxy-log

Watch and reload

  • Open a Terminal window and go to the project folder.

CSS has extra tasks to speed up the development cycle. css-watch starts a fswatch process in the host machine watching any scss or css file under scr/app.

    $ make css-watch

Note: brew install fswatch to install fswatch in your machine.

sync starts a dockerised browser-sync proxy listening by default to port 3000. So you can combine the two:

    $ make -i sync css-watch

Open http://192.168.99.100:3000 in your browser and start editing scss and let the toolchain compile and push changes to the browser.

Note: browser-sync uses a self-signed certificate so using local.ustwo.com or the raw IP will make the browser complain. If you need to overcome this please add a forward rule to Virtualbox so you can use http://localhost:3000.

Test

  • Open a Terminal window and go to the project folder.

Run all tests:

    $ make test

Sandbox

We believe that every component should hold a single responsibity, and which functionality must be working independently from the context the component is instantiated in.

To enforce best practices – like storing functionality and styles in the component they belong to – we created a sandbox to test components in an isolated environment.

To prepare the sandbox run:

    $ make sandbox-build

And start the sandbox server with:

    $ make -i sandbox LOCAL_FS=true

The sandbox will be available at https://local.ustwo.com:9443/sandbox

Unit

We're using Mocha + Chai + Sinon to run unit tests against JSDOM as this setup works well with React and executes fast.

Run the unit tests:

    $ make assets-unit-test

Integration

To keep setup simple and still be able to test Internet Explorer and mobile browsers running on real devices, we're running integrations tests using Sauce Labs with a Sauce Connect tunnel. This unfortunately means that if you want to be able to run these tests, you'll need to create an account and set up SAUCE_USERNAME and SAUCE_ACCESS_KEY as environment variables.

Also to minimise context switching, we're running our simple sanity testing suite using Mocha + Chai + Chai Promises + WD.js.

Run the integration tests:

    $ make assets-integration-test

If you need more info on what's happening with the tests, you can either log in to the Sauce web UI to see the Selenium logs to understand more details about the browser interactions or run verbose mode locally for more info on the API requests and their results:

    $ make assets-integration-test VERBOSE=true

TODO: add flow diagram about git branches -> CI, etc

Release

We're using Docker Hub and Docker Machine to tag and deploy Docker images, for more info see RELEASE.md.

Contribution

To read up on our coding style and general contribution guide, have a look at CONTRIBUTING.md.

License

ustwo.com website front end and tools Copyright (C) 2015-2017 ustwo fampany limited.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ustwo.com-frontend's People

Contributors

adkiam avatar andydutch avatar ch2ch3 avatar chriswatts91 avatar collingo avatar davidey avatar jgunson avatar matthewedwards12 avatar phil-linnell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ustwo.com-frontend's Issues

Capture Contact Details

User Story

AS A member of the ustwo marketing team
I WANT to collect a ‘contacter’s’ contact details
SO THAT I create a database of prioritised business leads

Acceptance Criteria

  • Is the ‘contacter’s’ email address captured somewhere that can be accessed by the marketing team? YES

Investigations

  • Can we use Tray.io to filter / capture a 'contacter's email address?

Blog Overview

User Story - Visitor

AS A Visitor
I WANT to see the breadth of ustwo's thinking and passion
SO THAT I can find something that I’m interested in reading

Acceptance Criteria

  • Can a visitor search for articles using keywords? YES
  • Can a visitor filter articles by category? YES
  • Can a visitor view a list of the most recent articles? YES
  • Can a visitor view a list of featured articles (We may use the terms 'popular'? YES
  • Can a visitor view an article’s sharing stats? YES
  • Can a visitor view the article title, author and date? YES
  • Can a visitor read an article synopsis without selecting to view the article? YES

Additional Info

We should limit the number of articles that are shown to the visitor - potentially using content placeholder to allow for performance issues. TBD.

Blog post terms:

Featured: The most recent blog post, always features at the top of the Blog page. A post does not retain its 'Featured' status.

Pinned: Curated by Content Admin for promotional purposes. Does not display the date that it was published. A post does not retain its 'pinned' status.

Popular: This status is given to the post by the Content Admin if deemed worthy. This post will always retain its badge.

A post can never hold more than one badge. If a 'popular' badge becomes 'pinned' it drops its popular status for the duration it is 'pinned'.

User Story - Content Admin

AS A Matthew
I WANT to give certain posts the status of 'Popular'
SO THAT I can promote certain content based on events that are of interest to ustwo and its clients (both current and potential)

Acceptance Criteria

  • Is a feature article required? YES
  • Can Matthew make any published article 'Featured'? NO
  • Is a featured article always the most recent? YES
  • Can Matthew make any published article 'Popular'? YES
  • Can Matthew make any published article 'Pinned'? YES
  • Can Matthew select more than one Popular article?YES
  • Can Matthew select more than one Pinned article? NO
  • Is a Pinned article required? NO
    -Can a user filter by the category of 'Popular? YES

User Story - Filter Blog Articles

AS A Visitor
I WANT to be able to filter blog articles using Categories
SO THAT I can find groups of articles that are relevant to me

Acceptance Criteria

  • Can a user filter by more than one category? NO
  • Can a user filter by the category of Popular? YES
  • Can a user filter by the category of Pinned or Featured? NO

User Story - Search Blog Articles

AS A Visitor
I WANT to be able to search for blog articles using keywords
SO THAT I can find articles that are relevant to my search terms

Acceptance Criteria

TBD - Once preferred​ search solution has been determined.

^Track if homepage is read

Description

After discussion with the dev team (@daaain & @collingo), implementing all the custom events that need to be tracked will take a considerable amount of effort - each event would need to be implemented manually, as opposed to combining the events that GA tracks as standard with custom events in order to create our required goals (and then track the conversion rates of those goals).

Investigation

  • Can we create a report that combines standard GA events (Time on Page) with a custom event (Scroll Position on Homepage) that gives enough data to determine whether or not the content has been read?

Task List

  • Set-up staging.ustwo.com as property in GA
  • Create tracking code and insert into staging head script
  • Add tracking ID to Homepage
  • Implement scroll tracking for visitor homepage
  • Check that scroll tracking goes through to GA
  • Ask a number of ustwobies to go onto the staging.ustwo.com homepage
  • Using collected data set-up report that combines Time on Page + Scroll position to assess Conversion Rate

What we do

User Story

AS A client
I WANT to get an idea of the breadth and quality of work that ustwo has done
SO THAT I can be inspired by the work and relate it to the work that I plan to

Acceptance Criteria

  • Can a visitor view a curated list of projects (case studies)? YES
  • Can the visitor read a description that explains the types of work ustwo does? YES
  • Can a visitor identify the category of work that each project is? YES
  • Can the visitor view the title of the project? YES
  • Can the visitor get more info about the project without leaving the page? YES
  • Can the visitor access additional pages that relate to that project? YES

Task List

  • TBD

Designs

Config injection

We need to find a way to inject some environment information and other config / metadata type stuff so that we can run the frontend app in different environments (and against different backend environments).

Join us

Intent

The join us page is a significant touch point within the site, and has yet to be explored. @Baramus to add additional detail.

Outcome

Design multiple, different approaches that can be reviewed with the team, before deciding on a solution for implementation

Tasks List

  • Write / review stories and acceptance criteria
  • Develop initial ideas and review with team
  • Finalise designs ready for intial implementation

Navigation

User Story 1 - Global Nav

AS A visitor
I WANT to be able to navigate the website
SO THAT I can find relevant content

User Story 2 - Nav Indicator

AS A visitor
I WANT to know where I am within the website
SO THAT I don’t get lost

Acceptance Criteria

  • Is the visitor clearly notified which page they are on? YES
  • Is the visitor able to access the navigation when they scroll down the page? YES

Implementation Task List

  • Finalise design for nav (both desktop and mobile)
  • Implement in page transitions
  • Implement between page transitions
  • Make colours work in transparent version
  • Collapse nav on scrolling for mobile
  • Add page title on mobile

Standard Task List

  • Write BDD scenarios
  • Write Unit tests
  • Run Unit tests
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Additional Info

Testing Setup

TASKS

  • Set up Travis CI
  • Set up unit testing framework
  • Write tests for existing code; SVG animation class

^Use Markdown in WP editor?

Just want to throw the idea out there for discussion, how does everyone (but chiefly @matthewedwards12) feel about using Markdown to write markup?

Main use case would obviously be the blog, but also for adding simple things like links in static text, etc.

Not sure if Markdown specifically is going to be the best solution, but the idea is to use a language which is neither raw HTML nor some WYSIWYG editor with great foot shooting potential.

Studio Locations

User Story

AS A visitor
I WANT to know where the ustwo studios are globally
SO THAT I know how to get there

Acceptance Criteria

  • Can the visitor view the address in text format? YES
  • Can the visitor view the location of the studios on a map? YES
  • Can the visitor call a studio directly from the mobile browser? YES
  • Can the visitor call a studio directly from the desktop browser? NO

Implementation Task List

  • Build footer
  • Source Google Maps locations
  • Confirm addresses
  • Build accordion for mobile

Standard Task List

  • Write BDD scenarios
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Additional Info

Infrastructure

TASKS

  • Set up Docker
  • Make production compilation work with properly minified files, etc

Legal Information

User Story

AS A member of ustwo’s legal team
I WANT to ensure that we have the required legal information displayed / accessible
SO THAT we meet relevant legislation

Acceptance Criteria

  • Is the visitor able to view ustwo’s copyright details? YES
  • Is the visitor able to access the ustwo’s legally required company details? YES
  • Is the visitor prompted that the site is using cookies? YES

Task List

  • Add link to Footer (without underline)

^Contact UsTwo

Intention

Ascertain the usability and clarity of sign-posting / messaging of proposed 'Contact Us' mechanism(s)

Desired Outcomes

  1. A validated design and copy for 'Contact Us'
  2. Refined user story, acceptance criteria and task list

Method

Axure prototyping and user testing, preferably with non-industry people


Results

Can be found here

^Test HeapAnalytics

Description

While we can set-up / combine / create custom events in GA (see Issue 36 it requires quite a bit of development effort and additional configuration in GA). Furthermore with the current GA subscription (free) we can only create a maximum of 20 goals for any given property.

Investigation

  • Can an alternative analytics solution (i.e. HeapAnalytics give us the information we need, with less effort than GA?

Task List

  • Create HeapAnalytics account
  • Install tracking code on Staging site (staging.ustwo.com)
  • Send scroll tracking to Heap via custom event (API info here
  • Set up tracking events and Content is Read funnel

Sprint 3 Goals

1. Finalise 'In_Test' Work:

  • ustwo team to individually Review WP implementation to date and provide feedback to @rmccue + @matteu
  • UX / UI sign off (Joe + @Baramus) required on Homepage, Footer, Studio Locations etc.
  • @matthewedwards12 to review and approve copy

2. Implement desired approach for handling images on backend:

3. Finalise designs for ‘What we do’ page:

4. Review WP API:

5. Complete MoodNotes takeover:

  • Joe & @Baramus to follow up with @b3nmarsh on SVG Animations (Breaking News) then review with team
  • ustwo team to determine whether or not integration of animations is feasible for launch (and provide estimate for ticket)

6. Continue investigation around preferred approach to analytics:

  • Investigate HeapAnalytics as a possible solution
  • Determine ideal solution for MoodNotes launch and spec relevant issues

Additional PO Tasks:

  • @matthewedwards12 to draft hardcoded cookie notice in footer copy for dev team to integrate
  • @matthewedwards12 to investigate download tracking link for MoodNotes Takeover tracking

Additional Design Tasks:

  • Joe to review Homepage and discuss potential upgrades with team

Additional Technical Tasks:

Blog Posts

User Story - Visitor

AS A Visitor
I WANT to read blog posts

Acceptance Criteria

  • Can a visitor share the article on social media? YES
  • Can a visitor view any video that is associated with the article? YES
  • Can a visitor view any images that are associated with the article? YES
  • Can a visitor view the article’s author, date of publication and title? YES
  • Can a visitor view the article’s topic that it relates to? YES
  • Can a visitor view more information about the author? YES

Privacy & Cookie Notice

Need to investigate legal requirements based on whether or not we're capturing any PII data or various cookie types (i.e. session, 3rd party etc.)

Homepage

User Story

AS A visitor
I WANT to get a feeling of what ustwo are all about
SO THAT I can form an opinion about the company

Acceptance Criteria

  • Is the visitor able to immediately view ustwo’s proposition? YES
  • Is the visitor prompted to explore the rest of the page? YES

Additional Info

  • Designs located here
  • Definition of Done here

Implementation Task List

  • Swap colours
  • Decrease the size of chevron
  • Increase chevron frame rate
  • Tweak typography
  • Make text colours variable between screen blocks
  • Add final image to Dice block
  • Transition in page content after loading
  • Source content
  • Edit gradient scroll. Colour doesn't change continuously
  • Export final imagery for MVP
  • Tweak body copy font weight
  • Tablet layout breakpoints (padding on both sides, font sizes, line heights)
  • Add left margin to Dice background
  • Monument Valley awards
  • Remove the kitten :(
  • Change colours on Dice block
  • Check why scrolling is choppy
  • Chevron click
  • Max page width
  • iPad Safari WTF

Standard Task List

  • Write BDD scenarios
  • Write Unit tests
  • Run Unit tests
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Investigations

  • Can hero image be enhanced to a video sequence across all devices?

ANALYTICS STRATEGY

  • Identify business outcomes
  • Define hierarchy of outcomes
  • Define how we measure analytics
  • Define KPIs

Set-up analytics

User Story

AS A Content Admin
I WANT to see how visitors are using the site
SO THAT I can make decisions on how to improve vistors’ experience of the site and determine whether or not the site is achieving it’s desired outcomes

Acceptance Criteria

This ustwo.com GA Tracking Sheet fulfils the ACs for this story - speak to @Baramus if needed.

Add studio clocks

User Story

AS A visitor
I WANT to know what the local time is each ustwo studio globally

Acceptance Criteria

  • Can the visitor view the local time of the relevant studios? YES

Implementation Task List

  • Tweak and implement svg.clock.js (see additional info)

Standard Task List

  • Write BDD scenarios
  • Write Unit tests
  • Run Unit tests
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Additional Info

Contact UsTwo

User Story

AS A person interested in ustwo
I WANT to be able to find the most appropriate way to contact ustwo
SO THAT I can get in touch

Acceptance Criteria

  • Is the visitor able to view ustwo’s contact emails and phone numbers? YES
  • Is the visitor able to use ustwo’s contact emails and phone numbers? YES
  • Can the visitor access ustwo’s social channels? YES

Implementation Task List

  • Ben to export assets
  • Contact overlay tray
  • Add Ben’s SVG social icons and link to social accounts
  • Implement mailto links
  • Add phone number with tel link

Standard Task List

  • Write BDD scenarios
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Additional Info


RELATED CONTENT

  • Map out decision points - user
  • Map out decision points - system
  • Define all related content rules

MoodNotes Takeover

User Story

AS A visitor
I WANT to view ustwo’s latest breaking news before viewing anything else
SO THAT I can view ustwo’s important activities

Acceptance Criteria

  • Is the visitor able to close the announcement? YES
  • Does the takeover only appear on the homepage? YES
  • Is the visitor able to directly access the relevant content via the takeover? YES
  • Can the visitor scroll down? NO
  • Can the visitor select items from the navigation? YES
  • If the visitor returns to the site are they re-shown the takeover? NO

Investigation

  • How effective is the call-to-action to dismiss the takeover?

Implementation Task List

  • Create SVG sequences for mobile and desktop
  • Implement ‘Dismiss (X) SVG’
  • Build loading sequence
  • Build responsive layout
  • Finalise transitions
  • Save dismissed state in cookie / local storage

Standard Task List

  • Write BDD scenarios
  • Manual Test
  • UI/UX Signoff
  • Content Signoff
  • Check DoD

Additional Info

User testing

  • User testing script and results found here

Case Study

User Story - Visitor

AS A Visitor
I WANT to view work ustwo has done

Acceptance Criteria

  • Can I view the type of work (as defined by ustwo)? YES
  • Can I view the client? YES
  • Can I read about the project? YES
  • Can I view a video related to the project (if applicable)? YES
  • Can I view images related to the project? YES
  • Can I share the entire case study? YES
  • Can I share a snippet of the case study (i.e. a piece of text)? YES

Task List

TBD

Additional Info

  • User story written from the perspective of a Content Admin is in Issue #7 (ustwo.com-backend)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.