Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/viniciuscosta89/viniciuscosta89.github.io

My personal website!
https://github.com/viniciuscosta89/viniciuscosta89.github.io

Last synced: about 4 hours ago
JSON representation

My personal website!

Awesome Lists containing this project

README

        

# Frontend Mentor - Single-page developer portfolio solution

This is a solution to the [Single-page developer portfolio challenge on Frontend Mentor](https://www.frontendmentor.io/challenges/singlepage-developer-portfolio-bBVj2ZPi-x). And is my own website as well!

## Table of contents

- [Overview](#overview)
- [The challenge](#the-challenge)
- [Screenshot](#screenshot)
- [Links](#links)
- [My process](#my-process)
- [Built with](#built-with)
- [What I learned](#what-i-learned)
- [Continued development](#continued-development)
- [Useful resources](#useful-resources)
- [Author](#author)

## Overview

### The challenge

Users should be able to:

- Receive an error message when the `form` is submitted if:
- Any field is empty
- The email address is not formatted correctly
- View the optimal layout for the interface depending on their device's screen size
- See hover and focus states for all interactive elements on the page

### Screenshot

![Mobile](./screenshot-mobile.jpg)
![Desktop](./screenshot-desktop.jpg)

### Links

- Solution URL: [https://www.frontendmentor.io/solutions/single-page-frontend-developer-portfolio-astro-react-and-pandacss-4V1qeTfghy](https://www.frontendmentor.io/solutions/single-page-frontend-developer-portfolio-astro-react-and-pandacss-4V1qeTfghy)
- Live Site URL: [https://viniciuscosta89-github-io.vercel.app](https://viniciuscosta89-github-io.vercel.app)

## My process

### Built with

- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
- Mobile-first workflow
- [pnpm](https://pnpm.io) - Fast, disk space efficient package manager
- [Astro](https://astro.build) - Astro is the all-in-one web framework designed for speed.
- [React](https://reactjs.org/) - JS library
- [Vite](https://vitejs.dev) - Frontend Tooling
- [Panda CSS](https://panda-css.com) - CSS-in-JS with build time generated styles, RSC compatible, multi-variant support, and best-in-class developer experience
- [Typescript](https://www.typescriptlang.org) - JavaScript with syntax for types
- [Zod](https://zod.dev) - TypeScript-first schema validation with static type inference
- [React Hook Form](https://www.react-hook-form.com) - Performant, flexible and extensible forms with easy-to-use validation
- [Framer Motion](https://www.framer.com/motion/) - A production-ready motion library for React
- [reaptcha](https://github.com/sarneeh/reaptcha) - Google reCAPTCHA v2 for React

### What I learned

It was my first time developing with Panda CSS. Since Stitches isn't maintained anymore and styled-components doesn't work properly with Astro, I need an alternative for the CSS-in-JS approach.

### Continued development

I like to use Composition Pattern for my components since some weeks ago. It's a good approach to avoid "prop drilling". I want to dive deeper into the composition pattern. And take a look if Panda CSS is the better solution for CSS-in-JS to work with Astro.

### Useful resources

- Documentations from React, Astro, Panda CSS, Vite, Zod, React Hoof Form, Framer Motion and reaptcha.

## Author

- Website - [Vinicius Costa](https://viniciuscosta89-github-io.vercel.app)
- GitHub - [https://github.com/viniciuscosta89](https://github.com/viniciuscosta89)
- Frontend Mentor - [@viniciuscosta89](https://www.frontendmentor.io/profile/viniciuscosta89)