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
- Host: GitHub
- URL: https://github.com/haquanq-frontendmentor/intro-component-with-sign-up-form
- Owner: haquanq-frontendmentor
- License: mit
- Created: 2024-07-27T10:19:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-27T23:31:03.000Z (3 months ago)
- Last Synced: 2025-07-28T01:13:26.506Z (3 months ago)
- Topics: accessibility, bem-css, bem-methodology, css, frontendmentor, frontendmentor-challenge, frontendmentor-newbie, frontendmentor-solution, html, javascript
- Language: CSS
- Homepage: https://haquanq-frontendmentor.github.io/intro-component-with-sign-up-form/
- Size: 716 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.
## 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

## :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
```