Portfolio pessoal de delucena.dev apresentado em formato de IDE interativa. Uma interface criada com CSS modular e JavaScript modular, demonstrando o poder do CSS moderno usando seletores avançados, pseudo-classes e propriedades CSS para criar uma experiência interativa única. O projeto utiliza um sistema de templates modulares e build automatizado.
🚀 Demo • 📖 Documentação • 🤝 Contribuir • 🐛 Reportar Bug • 💡 Sugerir Feature
Este é o portfolio pessoal de José Paulo de Lucena Oliveira (Zé/Delucena), um desenvolvedor Back-end especializado em Java e Spring Boot. O projeto demonstra como é possível criar interfaces interativas complexas usando CSS moderno e JavaScript modular. A interface inclui:
- ✅ Barra lateral com explorador de arquivos
- ✅ Editor de código com abas e syntax highlighting
- ✅ Terminal integrado com múltiplas abas (Problems, Output, Terminal, Debug, Ports)
- ✅ Menu de configurações
- ✅ Alternância entre tema claro e escuro
- ✅ Navegação entre arquivos
- ✅ Sistema de templates modulares
- ✅ CSS e JavaScript organizados em módulos
- ✅ Build automatizado com minificação
- ✅ Efeitos de hover e transições suaves
delucena/
├── src/ # Código-fonte
│ ├── index.html # HTML base (montado a partir de templates)
│ ├── 404.html # Página de erro 404
│ ├── templates/ # Componentes HTML modulares
│ │ ├── navigation.html # Barra lateral de navegação
│ │ ├── editor-header.html # Cabeçalho do editor
│ │ └── terminal/ # Terminal modular
│ │ ├── terminal.html
│ │ ├── terminal-header.html
│ │ └── terminal-tabs/
│ │ ├── footer.html # Rodapé
│ │ └── sections/ # Seções de conteúdo
│ │ ├── index-section.html
│ │ ├── experience-section.html
│ │ ├── skills-section.html
│ │ ├── contact-section.html
│ │ └── readme-section.html
│ ├── css/ # Arquivos CSS modulares
│ │ ├── main.css # Arquivo principal (importa todos)
│ │ ├── variables.css # Variáveis CSS (tema, cores)
│ │ ├── reset.css # Reset CSS
│ │ ├── layout.css # Layout principal
│ │ ├── navigation.css # Barra de navegação
│ │ ├── explorer.css # Explorer de arquivos
│ │ ├── editor.css # Editor de código
│ │ ├── syntax-highlight.css # Syntax highlighting
│ │ ├── terminal.css # Terminal (wrapper)
│ │ └── terminal/ # CSS modular do terminal
│ ├── js/ # Arquivos JavaScript modulares
│ │ ├── main.js # Inicialização
│ │ ├── theme.js # Gerenciamento de temas
│ │ ├── navigation.js # Navegação
│ │ ├── code-highlighter.js # Syntax highlighting
│ │ ├── code-copy.js # Cópia de código
│ │ ├── preview-toggle.js # Alternância preview/código
│ │ └── terminal/ # Módulos do terminal
│ ├── assets/ # Imagens e recursos
│ ├── config/ # Arquivos de configuração
│ │ ├── _headers # Headers Cloudflare Pages
│ │ ├── robots.txt # Configuração para crawlers
│ │ └── sitemap.xml # Mapa do site
│ ├── scripts/ # Scripts auxiliares
│ │ └── optimize-images.js # Otimização de imagens
│ └── main/ # Estrutura Spring Boot
│ ├── java/ # Código Java
│ └── resources/ # Recursos e configurações
├── scripts/ # Scripts auxiliares
│ ├── serve.js # Script de servidor (verifica e libera porta)
│ ├── optimize-images.js # Otimização de imagens
│ └── generate-lcp-images.js # Geração de imagens LCP
├── dist/ # Arquivos compilados (gerados pelo build)
├── build.js # Script de build (Node.js)
├── build.sh # Script de build (Shell)
├── package.json # Configuração do projeto
├── .gitignore # Arquivos ignorados pelo Git
├── .editorconfig # Configuração do editor
├── .gitattributes # Atributos Git
├── README.md # Este arquivo
├── DOCUMENTACAO.md # Documentação completa
├── ESTRUTURA_PROJETO.md # Estrutura detalhada
├── CONTRIBUTING.md # Guia de contribuição
├── SECURITY.md # Política de segurança
├── CHANGELOG.md # Histórico de mudanças
└── LICENSE # Licença MIT
📚 Para mais detalhes sobre a estrutura, consulte ESTRUTURA_PROJETO.md
- Um navegador moderno (Chrome, Firefox, Safari, Edge)
- Node.js (opcional, apenas para usar o script de build automatizado)
-
Clone o repositório:
git clone https://github.com/delucena/delucena.git cd delucena -
Instale as dependências (se necessário):
npm install
-
Execute o build:
npm run build
-
Visualize o resultado:
npm run serve
Acesse
http://localhost:8000no navegador💡 Dica: O comando
npm run serveautomaticamente verifica se a porta 8000 está em uso e libera qualquer processo que esteja ocupando-a, evitando o erro "Address already in use".
Scripts disponíveis:
npm run build- Gera a pasta dist com os arquivos compilados (monta templates, minifica CSS/JS)npm run clean- Remove a pasta distnpm run preview-⚠️ Gera o build e abre no navegador (macOS), mas não funciona com i18n (usa file://)npm run serve- ✅ Gera o build e inicia servidor HTTP local na porta 8000 (recomendado). Automaticamente verifica e libera a porta se estiver em usonpm run dev- Alias paraserve
O que o build faz:
- Monta
index.htmla partir de templates modulares - Consolida CSS - Resolve todos os
@importem um único arquivomain.css(funciona mesmo abrindo diretamente) - Minifica CSS e JavaScript (cria arquivos .min.css e .min.js, mantém originais)
- Copia assets (imagens, favicons)
- Copia arquivos de configuração (robots.txt, sitemap.xml, _headers)
- Otimiza imagens (se script disponível)
Nota: O build consolida automaticamente todos os CSS (resolve @import) em um único arquivo main.css.
dist/index.html diretamente no navegador (protocolo file://), algumas funcionalidades podem não funcionar devido a restrições de segurança do navegador (CORS). Isso afeta especialmente o sistema de i18n que usa fetch() para carregar traduções. Recomendado: Use npm run serve para testar com um servidor HTTP local.
npm run build
npm run clean
npm run serveDepois acesse http://localhost:8000 no navegador.
npm run preview abre o arquivo diretamente do sistema de arquivos (file://), o que causa erros com requisições fetch() (usado pelo sistema de i18n). Use sempre npm run serve para garantir que tudo funcione corretamente.
-
Torne o script executável:
chmod +x build.sh
-
Execute o build:
./build.sh
-
Abra
dist/index.htmlno navegador
Nota: O script shell é uma versão simplificada. Recomendamos usar
npm run buildpara obter todas as funcionalidades (templates, minificação, consolidação CSS).
Após gerar a pasta dist/, você pode visualizar o projeto de várias formas:
-
Abrir diretamente no navegador:
- Navegue até a pasta
dist/ - Abra
index.htmlcom seu navegador
- Navegue até a pasta
-
Usar um servidor local (recomendado):
# Usando o script npm (recomendado - libera porta automaticamente) npm run serve # Python 3 (manual) cd dist && python3 -m http.server 8000 # Node.js (com http-server) npx http-server dist -p 8000 # PHP cd dist && php -S localhost:8000
Depois acesse:
http://localhost:8000⚠️ Nota: Se usar os comandos manuais (Python, Node.js, PHP) e a porta 8000 estiver em uso, você precisará encerrar o processo manualmente ou usar outra porta. O comandonpm run servefaz isso automaticamente.
Este projeto utiliza recursos avançados do CSS moderno:
- Seletores
:has()- Para estilização baseada em estado de elementos filhos - Pseudo-classes
:checked- Para criar interatividade com inputs - Variáveis CSS - Para temas e cores
- Flexbox e Grid - Para layout responsivo
- Transições e animações - Para efeitos suaves
- Media queries - Para responsividade
O projeto utiliza CDNs para:
- Bootstrap 5.3.2 - Para alguns utilitários (opcional)
- Font Awesome 6.5.1 - Para ícones
Essas dependências são carregadas via CDN no HTML, então não é necessário instalar nada localmente.
Edite os templates em src/templates/:
src/templates/sections/*.html- Seções do portfóliosrc/templates/navigation.html- Barra lateralsrc/templates/terminal/- Terminal e abas
- Crie um novo template em
src/templates/sections/nova-secao.html - Adicione o placeholder no
src/index.html:<!-- TEMPLATE: sections/nova-secao.html --> - Adicione um novo label no explorer (
src/templates/navigation.html) - Adicione uma nova aba no header (
src/templates/editor-header.html) - Adicione as regras CSS correspondentes em
src/css/editor.css
As cores são definidas em variáveis CSS em src/css/variables.css:
:root {
--bg-clr-500: rgb(30, 30, 30);
--secondary-clr-500: rgb(37, 37, 38);
/* ... */
}
body:has(#theme:checked) {
--bg-clr-500: rgb(255, 255, 255);
--secondary-clr-500: rgb(243, 243, 243);
/* ... */
}- Crie um novo módulo em
src/js/novo-modulo.js - Adicione o script no
src/index.html - Inicialize o módulo em
src/js/main.jsse necessário
-
Frontend:
- HTML5 semântico
- CSS3 modular (variáveis, seletores
:has(), pseudo-classes) - JavaScript ES6+ modular
- Sistema de templates HTML
- Bootstrap 5.3.2 (CDN)
- Font Awesome 6.5.1 (CDN)
-
Backend:
- Java
- Spring Boot
-
Ferramentas:
- Node.js (build system)
- Git
- Build automatizado com minificação
- Total de arquivos: ~50+ arquivos
- Linhas de código HTML: ~1000+ (templates modulares)
- Linhas de código CSS: ~2000+ (CSS modular)
- Linhas de código JavaScript: ~2000+ (JS modular)
- Linhas de código Java: ~12+
Contribuições são sempre bem-vindas! Por favor, leia o guia de contribuição primeiro.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'feat: Adiciona AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Se você descobrir uma vulnerabilidade de segurança, por favor, não abra uma issue pública. Em vez disso, consulte nossa política de segurança.
- 📖 Documentação Completa - Detalhes técnicos completos
- 📊 Estrutura do Projeto - Visão geral da arquitetura
- 🤝 Guia de Contribuição - Como contribuir
- 🔒 Política de Segurança - Reportar vulnerabilidades
- 📝 Changelog - Histórico de mudanças
- Interface Baseada em: Visual Studio Code da Microsoft
- Desenvolvido por: José Paulo de Lucena Oliveira (delucena)
- Website: delucena.dev
- LinkedIn: delucena
- GitHub: @delucena
- Email: josepaulo@delucena.dev
- Alguns navegadores mais antigos podem não suportar o seletor
:has() - A funcionalidade de edição de conteúdo é limitada (apenas visual)
- Requer build para funcionar corretamente (HTML é montado a partir de templates)
O projeto utiliza uma arquitetura modular:
- Templates HTML: Componentes reutilizáveis montados durante o build
- CSS Modular: Arquivos separados por funcionalidade, consolidados no build
- JavaScript Modular: Módulos ES6 com IIFE para encapsulamento
- Build System: Consolidação automática de CSS/JS e minificação
Para mais detalhes sobre a arquitetura, consulte ESTRUTURA_PROJETO.md.
Desenvolvido com ❤️ usando CSS modular e JavaScript moderno