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

https://github.com/melvinaguilar/payapi-multi-page-website

This is a solution to the "PayAPI multi-page website" challenge on Frontend Mentor challenges.
https://github.com/melvinaguilar/payapi-multi-page-website

Last synced: 14 days ago
JSON representation

This is a solution to the "PayAPI multi-page website" challenge on Frontend Mentor challenges.

Awesome Lists containing this project

README

        

frontendmentor

Time tracking dashboard solution



Frontend Mentor Challenge




View Demo
·
Report Bug
·
Request Feature





Melvin Profile



Status Completed

#

![](https://res.cloudinary.com/dz209s6jk/image/upload/f_auto,q_auto,w_1920/Challenges/epifjilrebysvrlmmipt.jpg)

This is a solution to the [PayAPI multi-page website challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/payapi-multipage-website-FDLR1Y11e). Frontend Mentor challenges help you improve your coding skills by building realistic projects.

Links

- Solution URL: [PayAPI multi-page website (Next.js + TypeScript + Tailwind + ESLint) | Frontend Mentor](https://www.frontendmentor.io/solutions/payapi-multipage-website-nextjs-typescript-tailwind-eslint-NwaOQ2ahp2)
- Live Site URL: [https://payapi-multi-page-website-hdez.vercel.app/](https://payapi-multi-page-website-hdez.vercel.app/)


## Table of contents

- [Overview](#overview)
- [The challenge](#the-challenge)
- [My process](#my-process)
- [Built with](#built-with)
- [Author](#author)
- [Acknowledgments](#acknowledgments)

## Overview

### The challenge

Users should be able to:

- View the optimal layout for each page depending on their device's screen size
- See hover states for all interactive elements throughout the site
- Receive an error message when the contact form is submitted if:
- The `Name`, `Email Address` or `Message` fields are empty should show "This field can't be empty"
- The `Email Address` is not formatted correctly should show "Please use a valid email address"

## My process

### Built with

![](https://img.shields.io/badge/Next.js-000000.svg?style=for-the-badge&logo=Next.js&logoColor=white)
![](https://img.shields.io/badge/Typescript-3178C6.svg?style=for-the-badge&logo=Typescript&logoColor=white)
![](https://img.shields.io/badge/Tailwind%20CSS-38B2AC?style=for-the-badge&logo=tailwind-css&logoColor=white)
![](https://img.shields.io/badge/ESLint-4B32C3.svg?style=for-the-badge&logo=ESLint&logoColor=white)
![](https://img.shields.io/badge/HTML5-E34F26?style=for-the-badge&logo=html5&logoColor=white)
![](https://img.shields.io/badge/Prettier-F7B93E.svg?style=for-the-badge&logo=Prettier&logoColor=black)
![](https://img.shields.io/badge/Git-F05032?style=for-the-badge&logo=git&logoColor=white)

- Tailwind CSS
- TypeScript
- Custom Hooks
- Semantic HTML5 markup
- Eslint

### Useful resources

- [Tailwind CSS](https://tailwindcss.com/)
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
- [Font Optimization | Next.js](https://nextjs.org/docs/pages/building-your-application/optimizing/fonts) - Font Optimization
- [Variable method for fonts | Next.js](https://nextjs.org/docs/app/api-reference/components/font#variable) - Variable method for fonts
- [PWA with Next.js | Dev.to](https://dev.to/anuraggharat/pwa-with-nextjs-5178) - Build a PWA with Next.js
- [SVG Crop](https://svgcrop.com/) - Crop SVG online

## Author

- Frontend Mentor - [@melvinaguilar](https://www.frontendmentor.io/profile/melvinaguilar)
- Linkedin: Melvin Aguilar - [Linkedin: Melvin Aguilar](https://www.linkedin.com/in/melvinaguilar)

## Acknowledgments

### Run the project

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.