Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/felipecezar01/front-portfolio
My portfolio using Next.js, Tailwind, and TypeScript
https://github.com/felipecezar01/front-portfolio
atomic-design nextjs tailwind typescript
Last synced: 5 days ago
JSON representation
My portfolio using Next.js, Tailwind, and TypeScript
- Host: GitHub
- URL: https://github.com/felipecezar01/front-portfolio
- Owner: felipecezar01
- Created: 2024-06-07T15:18:49.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-11-06T23:17:20.000Z (3 months ago)
- Last Synced: 2024-12-17T19:13:40.207Z (about 2 months ago)
- Topics: atomic-design, nextjs, tailwind, typescript
- Language: TypeScript
- Homepage: https://portfolio-felipecezar01s-projects.vercel.app/
- Size: 4.02 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Estrutura do Projeto e Explicação
## Pastas
### `.next`
- **Descrição**: Essa é a pasta de build gerada automaticamente pelo Next.js quando você executa o projeto (`yarn dev` ou `yarn build`).
- **Função**: Armazena os arquivos de build da aplicação, otimizados para produção ou desenvolvimento. Inclui código pré-renderizado, cache de páginas, e outros arquivos que ajudam a melhorar o desempenho do projeto.
- **Observação**: Geralmente é ignorada pelo Git (presente no `.gitignore`), pois é uma pasta gerada automaticamente.### `node_modules`
- **Descrição**: Diretório onde o Yarn (ou npm) armazena todas as dependências do projeto.
- **Função**: Contém os pacotes e bibliotecas que o projeto precisa para funcionar, como React, Next.js, Tailwind, entre outros.
- **Observação**: Também é ignorado pelo Git, pois as dependências podem ser reinstaladas a partir do `package.json`.### `public`
- **Descrição**: Pasta para arquivos públicos, que podem ser acessados diretamente no navegador.
- **Função**: Armazena imagens, ícones, fontes, e outros ativos que serão usados no projeto. Os arquivos nessa pasta são servidos diretamente no navegador, por exemplo, `public/image.jpg` pode ser acessado em `http://localhost:3000/image.jpg`.
- **Observação**: Não é processada pelo Webpack, então tudo aqui é servido "como está".### `src`
- **Descrição**: A pasta principal de código do projeto.
- **Função**: Geralmente, contém todo o código fonte, incluindo componentes, páginas, estilos, utilitários e qualquer outro código necessário para o funcionamento do projeto.
- **Estrutura Típica**: Dentro de `src`, normalmente, encontramos subpastas como `components`, `pages` (ou `app` no Next.js 13+), `styles`, entre outras.---
## Arquivos na Raiz do Projeto
### `.eslintrc.json`
- **Função**: Arquivo de configuração para o ESLint, que define regras de linting e estilos de código. Ajuda a manter o código consistente e sem erros comuns.
- **Exemplo de Configuração**: Pode incluir regras como a proibição de `console.log` em código de produção, ou obrigar o uso de ponto e vírgula no final de cada linha.### `.gitignore`
- **Função**: Lista de arquivos e pastas que o Git deve ignorar e não versionar.
- **Exemplo de Conteúdo**: `node_modules`, `.next`, `.env`, que não são necessários no repositório.### `.prettierrc`
- **Função**: Arquivo de configuração do Prettier, que define o estilo de formatação do código (ex.: uso de aspas simples, largura máxima de linha, uso de ponto e vírgula).
- **Exemplo de Configuração**: Configurações como `singleQuote: true` (para usar aspas simples) e `printWidth: 100` (para limitar a linha a 100 caracteres).### `next-env.d.ts`
- **Função**: Arquivo de declaração de tipos gerado automaticamente pelo Next.js para o TypeScript. Define tipos específicos do Next.js para que o TypeScript compreenda as APIs e funcionalidades do framework.
- **Observação**: Esse arquivo não deve ser editado manualmente, pois é gerado e atualizado automaticamente.### `next.config.js`
- **Função**: Arquivo de configuração do Next.js, usado para personalizar o comportamento do framework, como otimização de imagem, redirects, configurações de roteamento, e muito mais.
- **Exemplo de Configuração**: Configurações como habilitar imagens externas ou configurar redirects de rotas.### `package.json`
- **Função**: Arquivo principal de configuração do projeto Node.js. Define as dependências (pacotes que o projeto usa), scripts de execução (`yarn dev`, `yarn build`), e outras informações do projeto.
- **Exemplo de Conteúdo**: Dependências como `react`, `next`, `tailwindcss` e scripts como `"dev": "next dev"` para iniciar o servidor de desenvolvimento.### `postcss.config.js`
- **Função**: Arquivo de configuração para o PostCSS, uma ferramenta de processamento de CSS. Necessário para o Tailwind CSS.
- **Exemplo de Configuração**: Plugins como `tailwindcss` e `autoprefixer`, que adicionam funcionalidades e compatibilidade ao CSS.### `README.md`
- **Função**: Arquivo de documentação do projeto, onde normalmente se descreve o propósito do projeto, como instalar e rodar o projeto, e outros detalhes importantes para desenvolvedores ou colaboradores.
- **Exemplo de Conteúdo**: Instruções como `yarn install` para instalar dependências e `yarn dev` para iniciar o projeto localmente.### `tailwind.config.js`
- **Função**: Arquivo de configuração para o Tailwind CSS, onde se define temas personalizados, cores, fontes, e outras configurações de estilo.
- **Exemplo de Configuração**: Configuração de temas customizados, especificação de onde Tailwind deve procurar por classes usadas (`content`), entre outros.### `tsconfig.json`
- **Função**: Arquivo de configuração do TypeScript. Define as opções do compilador TypeScript, como quais diretórios incluir/excluir, regras de tipo e restrições.
- **Exemplo de Configuração**: `strict: true` para garantir verificação estrita de tipos e `include` para incluir arquivos específicos no projeto.### `yarn.lock`
- **Função**: Arquivo de lock do Yarn, que garante que todos os desenvolvedores e ambientes usem as mesmas versões das dependências.
- **Exemplo de Conteúdo**: Especificações detalhadas das versões exatas das dependências e suas dependências internas, para garantir consistência no ambiente de desenvolvimento.# Estrutura do Diretório `src`
## 1. `app`
- **Descrição**: Contém as páginas e rotas principais da aplicação.
- **Função**: Este é o diretório onde estão as páginas que compõem o aplicativo Next.js. Cada subpasta ou arquivo dentro de `app` representa uma rota na aplicação, por exemplo, `app/home` pode representar a rota `/home`.
- **Observação**: Este diretório é a base para o roteamento de páginas no Next.js, e os arquivos `page.tsx` dentro de cada subpasta representam o conteúdo dessas rotas.## 2. `components`
- **Descrição**: Armazena os componentes reutilizáveis da interface do usuário (UI).
- **Função**: Os componentes dentro desta pasta são blocos de construção reutilizáveis que podem ser utilizados em várias partes da aplicação. Eles ajudam a criar uma UI consistente e modular, como botões, formulários, cabeçalhos, rodapés, etc.
- **Observação**: Manter os componentes isolados facilita a manutenção e a reutilização de elementos de UI, melhorando a consistência visual do projeto.## 3. `interfaces`
- **Descrição**: Contém definições de interfaces TypeScript utilizadas no projeto.
- **Função**: As interfaces definem a estrutura e os tipos dos dados que o projeto utiliza, fornecendo segurança de tipo no TypeScript. Isso ajuda a garantir que os dados sejam passados corretamente entre os componentes, evitando erros comuns de tipagem.
- **Observação**: Este diretório é essencial para o desenvolvimento com TypeScript, pois ajuda a manter a consistência dos dados em toda a aplicação.## 4. `styles`
- **Descrição**: Contém os arquivos de estilo global e temas do projeto.
- **Função**: Os arquivos aqui são responsáveis por definir estilos globais, configurações de tema, e quaisquer outras regras CSS que se aplicam em toda a aplicação. Isso inclui arquivos CSS, SCSS ou configurações específicas para frameworks de estilo como Tailwind CSS.
- **Observação**: Centralizar os estilos globais e temas facilita a gestão de estilos em um único local, assegurando uma aparência consistente em todo o projeto.## 5. `utils`
- **Descrição**: Armazena funções utilitárias e helpers.
- **Função**: Contém funções auxiliares e utilitárias que podem ser reutilizadas em várias partes do código, como formatação de datas, manipulação de strings, ou qualquer outra funcionalidade que seja útil em diferentes contextos do projeto.
- **Observação**: Manter funções utilitárias em `utils` ajuda a evitar duplicação de código e melhora a organização, pois concentra as funções genéricas e auxiliares em um único local.# Estrutura do Diretório `src/app`
## Pastas e Arquivos
### `articles`
- **Descrição**: Pasta que representa a seção ou página de "Artigos" no projeto.
- **Arquivos**:
- **`page.tsx`**: Arquivo que define o conteúdo e layout da página de artigos. Este arquivo serve como a entrada principal para a rota `/articles`, exibindo uma lista de artigos ou conteúdo relacionado a essa seção.### `education`
- **Descrição**: Pasta que representa a seção ou página de "Educação" no projeto.
- **Arquivos**:
- **`page.tsx`**: Arquivo que define o conteúdo e layout da página de educação. Esse arquivo serve como a entrada principal para a rota `/education`, onde é possível mostrar informações sobre a formação educacional, cursos ou qualificações.### `experience`
- **Descrição**: Pasta que representa a seção ou página de "Experiência" no projeto.
- **Arquivos**:
- **`page.tsx`**: Arquivo que define o conteúdo e layout da página de experiência. Ele serve como a entrada principal para a rota `/experience`, exibindo informações sobre a experiência profissional, projetos anteriores, ou outras atividades relevantes.### `resume`
- **Descrição**: Pasta que representa a seção ou página de "Resumo" (ou currículo) no projeto.
- **Arquivos**:
- **`page.tsx`**: Arquivo que define o conteúdo e layout da página de resumo ou currículo. Esse arquivo serve como a entrada principal para a rota `/resume`, onde pode ser mostrado um resumo das qualificações, habilidades e experiências de forma condensada.### Arquivos na Raiz de `src/app`
- **`page.tsx`**:
- **Função**: Esse é o arquivo que define a página principal da aplicação (geralmente a homepage ou a página de introdução). Ele serve como a entrada principal para a rota raiz `/` do projeto.- **`error.tsx`**:
- **Função**: Arquivo que define a página de erro, exibida para o usuário em caso de problemas na navegação ou carregamento de conteúdo. É usado para lidar com erros de forma personalizada, proporcionando uma experiência amigável para o usuário.- **`layout.tsx`**:
- **Função**: Define o layout padrão para as páginas da aplicação. Este arquivo controla o design e a estrutura comuns, como cabeçalhos, rodapés e barras de navegação, garantindo consistência visual em todas as páginas.- **`loading.tsx`**:
- **Função**: Arquivo que define um componente de carregamento (loading). Este componente é exibido enquanto a página ou conteúdo está sendo carregado, proporcionando feedback visual ao usuário e melhorando a experiência de navegação.- **`not-found.tsx`**:
- **Função**: Arquivo que define a página "Não Encontrado" (404), exibida quando o usuário tenta acessar uma rota inexistente. Esse arquivo fornece uma experiência amigável para informar que a página requisitada não foi encontrada.---
Cada pasta dentro de `src/app` representa uma seção específica da aplicação, enquanto os arquivos na raiz do diretório controlam o layout geral, o comportamento de carregamento, erros e a homepage. Essa estrutura organizada permite que cada rota e funcionalidade tenha seu próprio espaço, facilitando a manutenção e a navegação no projeto.
# Estrutura do Diretório `src`
## `components`
### `atoms`
- **Descrição**: Contém componentes básicos e independentes, que são os blocos fundamentais da interface do usuário (UI).
- **`AbilitiesList.tsx`**: Componente que exibe uma lista de habilidades.
- **`Button.tsx`**: Componente de botão reutilizável, usado em várias partes do projeto.
- **`CertificateItem.tsx`**: Componente que representa um item de certificado, usado para listar certificações.
- **`EducationItem.tsx`**: Componente que exibe informações sobre uma formação educacional específica.
- **`ExperienceItem.tsx`**: Componente que representa uma experiência de trabalho ou projeto anterior.
- **`Loader.tsx`**: Componente de carregamento, exibido enquanto os dados ou conteúdo da página estão sendo carregados.
- **`MenuItem.tsx`**: Componente para exibir um item do menu de navegação.
- **`PageHeading.tsx`**: Componente de cabeçalho de página, usado para exibir títulos de seções ou páginas com estilo.
- **`PostItem.tsx`**: Componente que representa um item de postagem, usado para listar artigos ou posts.
- **`SocialMediaList.tsx`**: Componente que exibe uma lista de links para redes sociais.- **`index.ts`**: Arquivo de exportação que facilita a importação dos componentes dentro da pasta `atoms` em outras partes do projeto.
### `layouts`
- **Descrição**: Contém componentes de layout que definem a estrutura de diferentes seções da aplicação.- **`DefaultLayout.tsx`**: Layout padrão da aplicação, usado para envolver o conteúdo e definir a estrutura básica da página.
- **`SectionLayout.tsx`**: Layout específico para uma seção, utilizado para estruturar seções dentro de uma página.
- **`index.ts`**: Arquivo de exportação que facilita a importação dos componentes de layout.### `molecules`
- **Descrição**: Contém componentes que são combinações de átomos, formando partes mais complexas da UI.- **`Biography.tsx`**: Componente que exibe uma biografia ou descrição curta de uma pessoa.
- **`MenuList.tsx`**: Componente que exibe uma lista de itens de menu, usado na navegação.
- **`Navbar.tsx`**: Componente de barra de navegação, que inclui o menu e permite a navegação entre as páginas.- **`index.ts`**: Arquivo de exportação que facilita a importação dos componentes na pasta `molecules`.
### `organisms`
- **Descrição**: Contém componentes maiores, compostos de átomos e moléculas, que representam seções inteiras da UI.- **`index.ts`**: Arquivo de exportação que consolida componentes de organismo, facilitando a importação se novos organismos forem adicionados.
## `interfaces`
- **Descrição**: Define as interfaces TypeScript que especificam a estrutura de dados utilizados no projeto, proporcionando segurança de tipos.- **`article.ts`**: Interface que define a estrutura de um artigo.
- **`education.ts`**: Interface que especifica os dados relacionados à formação educacional.
- **`experience.ts`**: Interface que representa a estrutura de uma experiência profissional ou projeto.
- **`image.ts`**: Interface que define os atributos de uma imagem usada no projeto.
- **`profile.ts`**: Interface que descreve os dados de perfil de um usuário ou autor.
- **`project.ts`**: Interface que especifica os dados de um projeto, incluindo informações como nome, descrição e URL.## `styles`
- **Descrição**: Contém os arquivos de estilo global do projeto.- **`globals.css`**: Arquivo CSS global que define os estilos aplicados em toda a aplicação, como fontes, cores e estilos base. Inclui definições para garantir uma aparência consistente entre os componentes.
## `utils`
- **Descrição**: Contém funções utilitárias e helpers que fornecem funcionalidades comuns para serem reutilizadas em várias partes do projeto.- **`day.util.ts`**: Funções utilitárias para manipulação e formatação de datas.
- **`error.util.ts`**: Funções utilitárias para tratamento e formatação de erros.
- **`fonts.util.ts`**: Funções relacionadas ao gerenciamento e configuração de fontes usadas no projeto.
- **`image.util.ts`**: Funções utilitárias para manipulação de imagens, lidando com URLs de imagens ou otimizações.
- **`menu.util.ts`**: Funções utilitárias específicas para lidar com a navegação e estrutura de menus.
- **`random-color.util.ts`**: Função que gera cores aleatórias, usada para dar um toque dinâmico na interface.---
### Resumo
A estrutura `src` está organizada para maximizar a modularidade e reutilização. Cada pasta tem uma função específica:
- **`components`** organiza a interface do usuário em átomos, moléculas e layouts.
- **`interfaces`** define as estruturas de dados para garantir a segurança de tipo.
- **`styles`** mantém a estilização centralizada.
- **`utils`** oferece funcionalidades auxiliares reutilizáveis.Essa organização promove a clareza e facilita a manutenção e expansão do projeto.