An open API service indexing awesome lists of open source software.

https://github.com/haquanq-frontendmentor/intro-component-with-sign-up-form

Solution for frontendmentor.io challenge: intro-component-with-signup
https://github.com/haquanq-frontendmentor/intro-component-with-sign-up-form

accessibility bem-css bem-methodology css frontendmentor frontendmentor-challenge frontendmentor-newbie frontendmentor-solution html javascript

Last synced: 3 months ago
JSON representation

Solution for frontendmentor.io challenge: intro-component-with-signup

Awesome Lists containing this project

README

          

## Frontend Mentor - Intro component with sign up form solution

This is a solution to the [Intro component with sign up form challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/intro-component-with-signup-form-5cf91bd49edda32581d28fd1). Frontend Mentor challenges help you improve your coding skills by building realistic projects.



Solution post


Live demo


## Table of contents

- [Project overview](#sunrise-project-overview)
- [Development workflow](#stars-development-workflow)
- [Working in this repository](#astronaut-working-in-this-repository)

## :sunrise: Project overview

### Challenge equirements

- View the optimal layout for the site depending on their device's screen size
- See hover states for all interactive elements on the page
- Receive an error message when the `form` is submitted if:
- Any `input` field is empty. The message for this error should say _"[Field Name] cannot be empty"_
- The email address is not formatted correctly (i.e. a correct email address should have this structure: `name@host.tld`). The message for this error should say _"Looks like this is not an email"_

### Todo

Features

- [x] Text field component
- [x] Validate basic specifications (required, length) and can be provided with custom validators
- [x] Show every error when users blur input (from basic specifications to custom validators)
- [x] Aggregate all invalid fields and notify screen readers
- [x] Show/hide passowrd

Accessibility

- [x] Responsive accross different screen sizes
- [x] Interactive elements have clear focus indicator

### Preview

![](./docs/preview.png)

## :stars: Development workflow

### Approach

Site built with mobile-first workflow to prioritize mobile devices, made accessible using [ARIA Authoring Practices Guide (APG)](https://www.w3.org/WAI/ARIA/apg/).

### Tools

- **HTML + CSS:** vanilla CSS for styling.
- **JavaScript:** for site interactivity
- **Browsersync:** live development server (sync files changes).

### Deployment

- Deployed on github page using Github Actions (manually triggered).

## :astronaut: Working in this repository

### Presequisites

Having these tools installed:

- Git (prefer lastest LTS version)
- NodeJS (prefer latest LTS version)

### Clone this project to your machine

Open new terminal, run the following command:

```
git clone https://github.com/haquanq-frontendmentor/intro-component-with-sign-up-form.git
```

Then, run `npm install` to install all dependencies.

```
npm install
```

### Start development server

In terminal, run `npm run dev` to start development server:

```
npm run dev
```