Multi step form that guides the user through checkout process and collects data using GitHub's API

GitHub

Multi step form that guides the user through checkout process and collects data using GitHub’s API.

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Lints and fixes files

npm run lint

Run unit tests

npm run unit

Run unit tests on watch mode

npm run watch:unit

Run E2E tests

npm run e2e

Tech Stack

  • Vue 3
  • Vue Router
  • Pinia
  • TypeScript
  • Jest
  • Cypress
  • Tailwind CSS
  • SCSS
  • Semantic HTML
  • Vee-validate & Yup
  • Axios
  • Webpack

Description

Vue 3’s Composition API allows to directly add the setup attribute to the script tag to expose anything we want to the template in a faster and easier way. More info: https://learnvue.co/2021/05/explaining-the-new-script-setup-type-in-vue-3-major-takeaways-from-the-rfc/

The structure of the project is:

  • Layout: Header & Footer.
  • Steps: Introduction, FormOne, FormTwo and Navigation which is a shared child component of the previous 3.
  • User: GitHubData & UserData.

Pinia is now the recommended library for state management in Vue 3 since it features many benefits and improvements compared to Vuex 4. Pinia provides a very easy to digest documentation in order to migrate existing Vuex stores to Pinia with clear benefits highlighted. More info: https://pinia.vuejs.org/introduction.html

Vue Router makes it easy to go back and forth with the multi step form by using the browser’s back and next buttons.

GitHub API consumption is handled through a service with the usage of Axios: github.service.ts.

Vee-validate & Yup libraries allow to validate every field of the forms and provide clear errors to the user. Every step is correctly validated before the Next/Finish button is enabled.

If username exists the GitHub data panel will be shown in the final view. Otherwise a text stating username not found will be shown.

Build Version

0.1.0

License

The MIT License (MIT)

About Me

Kevin Martínez Montero

Senior Front End Engineer