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.jsxInstalaçã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 devScripts 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.jsximport { 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.jsxroutes.jsxUso do Componente Stack
O componente
StackExemplo 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 (elementTypepor padrão).div
- : Adiciona classes CSS extras ao contêinerclassName.Stack
- : Elementos filhos renderizados dentro do contêiner.children
Uso do Componente ButtonLink
O componente
ButtonLinkExemplo 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.jsExemplo 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!