Figma link https://www.figma.com/design/MDGn9uI2Ny5Y8sOJWnmfRp/Proposta-Empower?node-id=1-2&node-type=frame&t=1VbQfaLck9v3KEx8-0
Projeto React com Vite, Sass e React Router
Este é um projeto de boilerplate em React utilizando Vite para desenvolvimento rápido, Sass para o gerenciamento de estilos e React Router para navegação. Todas as rotas da aplicação são centralizadas no arquivo
src/routes/routes.jsx
Instalação
Pré-requisitos
- Node.js
- Yarn, pnpm ou npm (preferência pessoal)
Passos para instalação
-
Clone o repositório
- Usando HTTPS
git clone https://github.com/samuelrms/react-project-start.git
- Usando SSH
git clone git@github.com:samuelrms/react-project-start.git
- Usando GitHub CLI
gh repo clone samuelrms/react-project-start
-
Navegue até o diretório do projeto:
cd react-project-start
-
Instale as dependências:
- Se estiver usando npm, execute:
npm i
- Se estiver usando yarn, execute:
yarn
- Se estiver usando pnpm, execute:
pnpm i
Use este template
Este template pode ser utilizado com os seguintes comandos:
npx degit samuelrms/react-project-start <NOME_DO_SEU_APP>
Esse comando usa o degit para clonar diretamente o projeto do repositório GitHub
react-project-start
<NOME_DO_SEU_APP>
ou
npx create-next-app --example https://github.com/samuelrms/react-project-start <NOME_DO_SEU_APP>
Esse comando usa create-next-app para criar uma nova aplicação Next.js usando o projeto
react-project-start
<NOME_DO_SEU_APP>
Ambos os comandos usam o npx, que permite executar pacotes sem instalá-los globalmente. Substitua
<NOME_DO_SEU_APP>
Lembre-se de navegar até o novo diretório com
cd <NOME_DO_SEU_APP>
npm run dev
Scripts disponíveis
No diretório do projeto, você pode executar:
Start Project
- npm
npm run dev
- yarn
yarn dev
- pnpm
pnpm dev
Executa o app no modo de desenvolvimento. Abra http://localhost:5173/ para visualizá-lo no navegador.
Build Project
- npm
npm run build
- yarn
yarn build
- pnpm
pnpm build
Compila o app para produção.
Configuração de Rotas
Todas as rotas estão centralizadas no arquivo
src/routes/routes.jsx
import { createBrowserRouter } from "react-router-dom"; import App from "../App"; import { Home, About, NotFound } from "../shared/screens"; export const routes = createBrowserRouter([ { path: "/", element: <App />, children: [ { path: "/", element: <Home /> }, { path: "/about", element: <About /> }, { path: "*", element: <NotFound /> }, ], }, ]);
No componente principal (
App.jsx
routes.jsx
Uso do Componente Stack
O componente
Stack
Exemplo de Uso
import { Stack } from "./shared/components"; export const ExampleComponent = () => { return ( <Stack elementType="section" className="custom-class"> <p>Exemplo de uso do Stack</p> </Stack> ); };
Props do Componente
- : Define o tipo de elemento HTML (
elementType
por padrão).div
- : Adiciona classes CSS extras ao contêiner
className
.Stack
- : Elementos filhos renderizados dentro do contêiner.
children
Uso do Componente ButtonLink
O componente
ButtonLink
Exemplo de Uso
import { Stack, ButtonLink } from "./shared/components"; export const ExampleComponent = () => { return ( <Stack elementType="section" className="custom-class"> <ButtonLink className="custom-class">Botão Padrão</ButtonLink> <ButtonLink to="/about" className="custom-class"> Link para About </ButtonLink> </Stack> ); };
Props do Componente
- : O destino do link (opcional se for tipo botão).
to
- : Define o tipo do elemento (padrão é "button").
type
- : Classes CSS extras para personalização.
className
- : Conteúdo do botão/link.
children
- : Outras propriedades adicionais para o botão/link.
props
Estrutura Modular de Estilos
Este projeto utiliza CSS Modules com Sass. Para adicionar estilos:
- Crie um arquivo na pasta do componente.
.module.scss
- Importe o diretamente no componente.
.module.scss
Exemplo:
import styles from "./Home.module.scss"; export const Home = () => { return ( <div className={styles.homeContainer}> <h1 className={styles.homeTitle}>Página Inicial</h1> </div> ); };
- : Contém o reset CSS e estilos globais.
src/assets/styles/main.scss
- : Estilos específicos para cada página.
src/shared/screens/[Page]/[Page].module.scss
Estrutura de Arquivos
Abaixo está a estrutura do projeto:
. ╠══ package.json ╠══ vite.config.js ╠══ .gitignore ╠══ public/ ║ ╚══ vite.svg ╠══ README.md ╠══ src/ ║ ╠══ main.jsx ║ ╠══ shared/ ║ ║ ╠══ components/ ║ ║ ║ ╠══ Search/ ║ ║ ║ ║ ╠══ SearchBar.module.scss ║ ║ ║ ║ ╚══ index.jsx ║ ║ ║ ╠══ Stack/ ║ ║ ║ ║ ╚══ index.jsx ║ ║ ║ ╠══ Text/ ║ ║ ║ ║ ╚══ index.jsx ║ ║ ║ ╠══ Footer/ ║ ║ ║ ║ ╠══ Footer.module.scss ║ ║ ║ ║ ╚══ index.jsx ║ ║ ║ ╠══ ButtonLink/ ║ ║ ║ ║ ╠══ index.jsx ║ ║ ║ ║ ╚══ ButtonLink.module.scss ║ ║ ║ ╠══ Navbar/ ║ ║ ║ ║ ╠══ index.jsx ║ ║ ║ ║ ╚══ Navbar.module.scss ║ ║ ║ ╚══ index.js ║ ║ ╠══ layout/ ║ ║ ║ ╚══ index.jsx ║ ║ ╚══ screens ║ ║ ║ ╠══ Home/ ║ ║ ║ ║ ╠══ index.jsx ║ ║ ║ ║ ╚══ Home.module.scss ║ ║ ║ ╠══ About/ ║ ║ ║ ║ ╠══ index.jsx ║ ║ ║ ║ ╚══ About.module.scss ║ ║ ║ ╠══ index.js ║ ║ ║ ╚══ NotFound ║ ║ ║ ║ ╠══ NotFound.module.scss ║ ║ ║ ║ ╚══ index.jsx ║ ╠══ App.jsx ║ ╠══ routes/ ║ ║ ╚══ routes.jsx ║ ╚══ assets ║ ║ ╠══ img/ ║ ║ ║ ╠══ youtube.png ║ ║ ║ ╠══ linkedin.png ║ ║ ║ ╠══ facebook.png ║ ║ ║ ╠══ logo.png ║ ║ ║ ╠══ instagram.png ║ ║ ║ ╚══ twitter.png ║ ║ ╠══ styles/ ║ ║ ║ ╚══ main.scss ║ ║ ╚══ icons ║ ║ ║ ╠══ icon.svg ║ ║ ║ ╚══ search.jsx ╠══ eslint.config.js ╠══ pnpm-lock.yaml ╠══ LICENSE ╚══ index.html
Exportações de Componentes e Telas
Para facilitar as importações, cada pasta contém um arquivo
index.js
Exemplo src/shared/components/index.js
src/shared/components/index.js
// TODO: Export all components from this file export * from "./ButtonLink"; export * from "./Stack";
Exemplo src/shared/screens/index.js
src/shared/screens/index.js
// TODO: Export all screens export * from "./About"; export * from "./Home"; export * from "./NotFound";
Licença
Este projeto está sob a licença MIT.
Dê uma Estrela ⭐
Se você chegou até o final, considere dar uma estrela no repositório para apoiar o projeto!