Este é o repositório para a segunda versão do meu portfólio, desenvolvido para ser um hub central para minhas informações profissionais, projetos, e links relevantes. O projeto foi construído com Next.js e utiliza Supabase para gerenciamento de dados dinâmicos, como posts de blog, projetos, e informações de perfil.
Página Principal | Área Administrativa |
---|---|
![]() |
![]() |
Abaixo estão listadas as funcionalidades e sistemas que fazem ou farão parte deste projeto. Essa lista será atualizada conforme o desenvolvimento avança.
- Cards Interativos
- Página de Links inspirado no linktree
- Dashboard Admin
- Barra de Pesquisa
- Terminal Funcional
- Konami Easter Egg
- Blog Pessoal
- Guestbook (Mural de Recados)
- Detalhamento de Projetos
- Sistema de Reações (Likes/Emojis)
Entre em contato comigo e sinta-se à vontade para sugerir melhorias ou novas ideias!
Para executar este projeto localmente, você precisará ter o Node.js (versão 20 ou superior) e o npm instalados em sua máquina.
-
Clone o repositório:
git clone https://github.com/devjoseh/devjoseh-portfolio-v2.git cd devjoseh-portfolio-v2
-
Instale as dependências:
npm install
-
Configure o Supabase:
- Crie um novo projeto no Supabase.
- Vá para o "SQL Editor" no painel do seu projeto Supabase.
- Copie e cole o conteúdo dos arquivos localizados em
utils/supabase/schema/
na ordem correta para criar as tabelas, policies, funções, triggers e popular o banco com dados iniciais (seeders).
-
Configure as variáveis de ambiente: Renomeie o arquivo
.env.example
para.env.local
e adicione as seguintes variáveis de ambiente, substituindo os valores pelos da sua instância do Supabase e Turnstile da CloudFlare:SUPABASE_URL= SUPABASE_ANON_KEY= SUPABASE_SERVICE_ROLE_KEY= NEXT_PUBLIC_SITE_KEY= TURNSTILE_SECRET_KEY=
- Você pode encontrar as chaves do supabase em "Project Settings" > "API" no seu painel do Supabase.
- Para obter a chave pública do Turnstile, acesse o site do Turnstile e siga as instruções para obter a chave pública.
-
Execute o projeto:
npm run dev
Isso iniciará o servidor de desenvolvimento em
http://localhost:3000
.
- Build para produção:
npm run build
- Iniciar o servidor de produção:
npm run start
- Executar o linter:
npm run lint
Para otimizar e gerenciar os recursos visuais deste projeto, recomendo as seguintes ferramentas:
- Squoosh.app: Uma ferramenta online e de código aberto do Google para compressão de imagens. Essencial para reduzir o tamanho dos arquivos de imagem sem perder qualidade, melhorando o tempo de carregamento do site.
- imgbb.com: Um serviço de hospedagem de imagens gratuito e fácil de usar. Ideal para hospedar as imagens do seu portfólio e garantir que elas sejam carregadas rapidamente.
O portfólio é dividido em duas áreas principais: a página pública e a área administrativa.
- Home: Uma visão geral sobre mim, minhas habilidades e uma citação que me inspira.
- Sobre: Uma seção mais detalhada sobre minha jornada, minhas paixões e meus hobbies.
- Experiência: Uma linha do tempo com minhas experiências profissionais e acadêmicas.
- Projetos: Uma galeria com os projetos que desenvolvi, com links para o código-fonte e para a aplicação em produção.
- Hackathons: Uma seção dedicada aos hackathons que participei.
- Links: Uma lista de links úteis, como meu GitHub, LinkedIn, e outros perfis relevantes.
A área administrativa é protegida por senha e permite o gerenciamento do conteúdo dinâmico do site.
- Dashboard: Uma visão geral das informações cadastradas.
- Gerenciamento de Conteúdo: CRUD (Criar, Ler, Atualizar, Deletar) para experiências, projetos, hackathons e links.
- Framework: Next.js (com App Router)
- Linguagem: TypeScript
- Estilização: Tailwind CSS
- Componentes UI: shadcn/ui
- Backend como Serviço (BaaS): Supabase
- Segurança: Cloudflare Turnstile
- Linting: ESLint
- Package Manager: npm
A estrutura de pastas do projeto segue as convenções do Next.js App Router:
/
├── app/ # Contém todas as rotas, layouts e páginas
│ ├── admin/ # Páginas da área administrativa
│ ├── links/ # Página de links
│ └── ...
├── components/ # Componentes React reutilizáveis
│ ├── sections/ # Componentes de seções maiores (landing e admin)
│ └── ui/ # Componentes de UI genéricos (botões, cards, etc.)
├── lib/ # Funções utilitárias
├── public/ # Arquivos estáticos (imagens, fontes, etc.)
└── utils/ # Lógica de backend, ações e configuração do Supabase
├── actions/ # Server Actions para interagir com o backend
└── supabase/ # Clientes e configurações do Supabase
O deploy deste projeto é feito automaticamente através da Vercel. Cada push para a branch main
aciona uma nova build e o deploy para o ambiente de produção.
Contribuições são bem-vindas! Se você tiver alguma ideia para melhorar o projeto, sinta-se à vontade para abrir uma issue ou enviar um pull request.
- Fork o projeto
- Crie sua Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some 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.