Skip to content

danielsantos404/portfolio

Repository files navigation

RESUMO:

Este projeto é o meu portfólio pessoal, desenvolvido para centralizar e apresentar meus trabalhos, habilidades e trajetória profissional. O grande diferencial é a construção de um painel administrativo (CMS) completo e privado, que me permite gerenciar todo o conteúdo do site — como adicionar, editar ou remover projetos e tecnologias — em tempo real, sem a necessidade de alterar o código-fonte. A plataforma foi construída utilizando tecnologias modernas, com um frontend reativo em React.js e um backend robusto provido pelos serviços do Firebase.

DESCRIÇÃO TÉCNICA:

O portfólio foi desenvolvido como uma Single-Page Application (SPA) com foco em componentização, segurança e gerenciamento de conteúdo dinâmico.

Linguagens e Ferramentas:

JavaScript

React.js (com uso extensivo de Hooks como useState, useEffect, useRef e useMemo)

Vite como ferramenta de build para um desenvolvimento rápido e otimizado.

CSS3 com Variáveis Nativas para componentização de estilos.

Bibliotecas do Ecossistema React:

react-router-dom: Para a criação de rotas e navegação entre as páginas (/ e /projects).

react-select: Para a seleção múltipla de tecnologias no formulário de projetos.

@tinymce/tinymce-react: Implementação de um editor de texto rico (WYSIWYG) para a descrição detalhada dos projetos.

react-toastify: Para feedback ao usuário através de alertas (toasts) de sucesso e erro.

react-multi-carousel: Para a exibição dos projetos em destaque na página inicial.

react-scroll: Para a implementação do scroll suave (smooth scrolling) ao navegar entre as seções da página inicial através dos links do cabeçalho.

react-tooltip: Para a criação de tooltips customizados que exibem o nome da tecnologia ao passar o mouse sobre os ícones.

Backend e Serviços (BaaS - Backend as a Service):

Firebase Authentication: Para a autenticação segura do painel de admin via provedor OAuth do GitHub.

Firestore Database: Banco de dados NoSQL utilizado para todas as operações de CRUD (Criar, Ler, Atualizar, Deletar) dos projetos e tecnologias.

Firebase Storage: Para o upload, armazenamento e exclusão de todos os arquivos de imagem (ícones de tecnologias e imagens de projetos).

EmailJS: Serviço de terceiros para o envio de e-mails através do formulário de contato, sem a necessidade de um backend próprio.

Técnicas e Arquitetura:

Operações CRUD completas no painel de admin para gerenciamento de conteúdo.

Autorização baseada em UID com Regras de Segurança (Security Rules) no Firestore e Storage para garantir que apenas o administrador possa manipular os dados.

Gerenciamento de sessão customizado, com expiração automática após 24 horas, implementado no lado do cliente com localStorage.

Manipulação dinâmica de SVGs com a técnica de mask-image do CSS para permitir a troca de cor dos ícones dinamicamente.

Uso de variáveis de ambiente (.env) para proteger chaves de API e outras informações sensíveis.

Releases

No releases published

Packages

No packages published