Skip to content

Ferramenta pública, livre e de código aberto para ajudar administradores de repositórios a alterar URLs registradas no DataCite de forma simples e rápida.

Notifications You must be signed in to change notification settings

devmarcosanjos/datacite-urls

Repository files navigation

DataCite Logo

DataCite URLs - Gerenciador de DOIs

Ferramenta pública, livre e de código aberto para ajudar administradores de repositórios a alterar URLs registradas no DataCite de forma simples e rápida.

Interface web moderna para gerenciar e atualizar URLs de DOIs do DataCite, totalmente alinhada com a documentação oficial do DataCite.

🎯 Objetivo

Esta ferramenta foi desenvolvida para facilitar a vida dos administradores de repositórios DataCite que precisam atualizar URLs de DOIs em massa ou individualmente. Com uma interface intuitiva e rápida, você pode:

  • Visualizar todos os DOIs do seu repositório
  • Identificar quais DOIs precisam de atualização
  • Atualizar URLs individualmente ou em lote
  • Fazer substituições automáticas de domínios

Tudo isso seguindo rigorosamente a documentação oficial da DataCite REST API.

✨ Funcionalidades

  • 📋 Listar todos os DOIs de um repositório DataCite
  • 🔍 Filtrar DOIs que precisam de atualização
  • ✏️ Editar URLs de DOIs individualmente
  • 🔄 Atualização automática de URLs (substituição de domínio)
  • 📊 Visualização de estados dos DOIs (draft, registered, findable)
  • 🎨 Interface moderna e responsiva com shadcn/ui
  • ⚡ Atualizações rápidas e eficientes

📸 Interface

Interface do Gerenciador de DOIs DataCite

Interface do Gerenciador de DOIs DataCite

📋 Pré-requisitos

  • Node.js 18+
  • Conta DataCite com credenciais de repositório
  • Repository/Client ID do DataCite

🚀 Configuração

1. Instalação

npm install

2. Configuração de Variáveis de Ambiente

Crie um arquivo .env.local na raiz do projeto com as seguintes variáveis:

# Credenciais DataCite (obrigatórias)
DATACITE_CLIENT_ID=ORGANIZACAO.REPOSITORIO    # Repository/Client ID (formato: ORGANIZACAO.REPOSITORIO)
DATACITE_PASS=sua_senha                      # Senha do repositório

# Credenciais alternativas (opcional)
# Se DATACITE_USER não for definido, será usado DATACITE_CLIENT_ID
DATACITE_USER=ORGANIZACAO.REPOSITORIO         # Opcional: username alternativo

# Ambiente (opcional)
DATACITE_USE_TEST=false                       # true para usar api.test.datacite.org

Variáveis de Ambiente Detalhadas

Variável Obrigatória Descrição Exemplo
DATACITE_CLIENT_ID ✅ Sim Repository/Client ID usado para listar DOIs e autenticação ORGANIZACAO.REPOSITORIO
DATACITE_PASS ✅ Sim Senha do repositório DataCite sua_senha_secreta
DATACITE_USER ❌ Opcional Username alternativo. Se não definido, usa DATACITE_CLIENT_ID ORGANIZACAO.REPOSITORIO
DATACITE_USE_TEST ❌ Opcional Usar ambiente de teste (true) ou produção (false) false

* Obrigatórias apenas se você usar a funcionalidade de atualização automática.

Formato do Repository ID

O DATACITE_CLIENT_ID deve estar no formato ORGANIZACAO.REPOSITORIO (com ponto):

  • ✅ Correto: ORGANIZACAO.REPOSITORIO
  • ❌ Incorreto: ORGANIZACAO_REPOSITORIO ou organizacao.repositorio

Você pode encontrar seu Repository ID no DataCite Fabrica na seção de configurações do repositório.

🏃 Executando o Projeto

npm run dev

Abra http://localhost:3000 no navegador.

Importante: Após modificar o arquivo .env.local, você precisa reiniciar o servidor Next.js para que as mudanças tenham efeito.

📁 Estrutura do Projeto

datacite-urls/
├── app/
│   ├── api/
│   │   └── dois/
│   │       ├── route.ts              # GET: Listar DOIs
│   │       └── [id]/
│   │           ├── route.ts          # PUT: Atualizar DOI individual
│   │           └── auto-update/
│   │               └── route.ts      # PUT: Atualização automática em lote
│   ├── page.tsx                      # Página principal
│   └── layout.tsx                    # Layout da aplicação
├── components/
│   ├── ui/                           # Componentes shadcn/ui
│   ├── doi-list.tsx                  # Componente de lista de DOIs
│   └── update-url-dialog.tsx          # Dialog modal para editar URL
└── lib/
    ├── datacite.ts                   # Cliente e funções da API DataCite
    ├── types.ts                      # Tipos TypeScript
    └── utils.ts                      # Funções utilitárias

📖 Uso

Listar DOIs

A página principal exibe automaticamente todos os DOIs do repositório configurado ao carregar. Use o botão "Atualizar" para recarregar a lista.

Filtrar DOIs

Use os botões de filtro no topo da página:

  • Todos: Mostra todos os DOIs do repositório
  • Precisa Atualizar: Mostra apenas DOIs cuja URL contém o URL_DOMAIN configurado

Editar URL Manualmente

  1. Clique no botão "Editar" ao lado do DOI desejado
  2. No modal que abrir, modifique a URL no campo de texto
  3. Clique em "Atualizar"
  4. A URL será atualizada diretamente na API do DataCite seguindo o formato oficial

Atualização Automática

Para DOIs que precisam de atualização (marcados com badge vermelho "Precisa atualizar"):

  1. Clique no botão "Atualizar" ao lado do DOI
  2. A URL será automaticamente atualizada substituindo URL_DOMAIN por NEW_URL_DOMAIN
  3. Exemplo: http://repositorio-antigo.org/doi/10.1234/examplehttp://repositorio-novo.org/doi/10.1234/example

🔧 Troubleshooting

Erro 401: Bad credentials

Causa: Credenciais incorretas ou formato inválido.

Solução:

  • Verifique se DATACITE_CLIENT_ID está no formato correto: ORGANIZACAO.REPOSITORIO
  • Confirme que a senha está correta
  • Certifique-se de que não há espaços extras no .env.local
  • Reinicie o servidor após modificar .env.local

Erro 403: You are not authorized

Causa: O usuário não tem permissão para atualizar o DOI específico.

Solução:

  • Verifique se o DOI pertence ao repositório configurado
  • Confirme que o Repository ID está correto
  • Verifique as permissões no DataCite Fabrica

Erro: Credenciais não configuradas

Causa: Variáveis de ambiente não encontradas.

Solução:

  • Certifique-se de que o arquivo é .env.local (não .env)
  • Verifique se as variáveis estão no formato correto (sem aspas, sem espaços)
  • Reinicie o servidor

DOI não encontrado ao editar

Causa: O DOI pode não existir no ambiente configurado ou estar em outro ambiente.

Solução:

  • A aplicação continuará tentando atualizar mesmo se não conseguir buscar o DOI
  • Verifique se DATACITE_USE_TEST está configurado corretamente
  • O PUT pode criar ou atualizar DOIs conforme a documentação do DataCite

Variáveis de ambiente não carregam

Causa: Next.js não recarregou as variáveis.

Solução:

  • Pare completamente o servidor (Ctrl+C)
  • Inicie novamente com npm run dev
  • Certifique-se de que o arquivo está na raiz do projeto (mesmo nível do package.json)

🛠️ Tecnologias

  • Next.js 16 - Framework React com App Router
  • TypeScript - Tipagem estática
  • shadcn/ui - Componentes UI modernos e acessíveis
  • Tailwind CSS - Framework CSS utilitário
  • Axios - Cliente HTTP para requisições
  • DataCite REST API - API oficial do DataCite

📚 Documentação

Esta ferramenta está totalmente alinhada com a documentação oficial do DataCite:

💻 Desenvolvimento

Scripts Disponíveis

npm run dev      # Inicia servidor de desenvolvimento
npm run build    # Cria build de produção
npm run start    # Inicia servidor de produção
npm run lint     # Executa linter

Estrutura de API

A aplicação usa API Routes do Next.js, seguindo os padrões da DataCite REST API:

  • GET /api/dois - Lista todos os DOIs do repositório
  • PUT /api/dois/[id] - Atualiza URL de um DOI específico
  • PUT /api/dois/[id]/auto-update - Atualização automática de domínio

🤝 Contribuindo

Contribuições são bem-vindas! Este é um projeto de código aberto e livre.

Como Contribuir

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Contato

Para dúvidas, sugestões ou problemas, entre em contato:

📧 Email: marcosanjos.js@gmail.com

📄 Licença

Este projeto é de código aberto e livre para uso. Sinta-se livre para usar, modificar e distribuir conforme necessário.


Desenvolvido para facilitar a gestão de URLs de DOIs no DataCite 🚀

About

Ferramenta pública, livre e de código aberto para ajudar administradores de repositórios a alterar URLs registradas no DataCite de forma simples e rápida.

Resources

Stars

Watchers

Forks

Packages

No packages published