Sobre o projeto

# Visão geral do RelayAB O RelayAB é um gateway (estação de retransmissão) de API de IA auto-hospedado, projetado para compartilhar de forma segura e controlada as chaves de API de serviços de IA upstream com um pequeno número de usuários, oferecendo gerenciamento refinado de permissões e uso. Ele suporta implantação em um clique na Vercel e é compatível com os protocolos de API da OpenAI e da Anthropic. ## Funcionalidades principais - **Multiusuário e papéis**: suporta dois papéis, administrador (admin) e usuário comum (user); as senhas dos usuários são armazenadas com hash unidirecional bcrypt. - **Gerenciamento de cotas de pontos**: o administrador pode atribuir a cada conta um total de pontos e os modelos acessíveis; todas as chaves de API da conta compartilham esses pontos e, quando esgotados, todas param. - **Autoatendimento do usuário**: usuários comuns podem criar, renomear, ativar/desativar ou excluir chaves de API por conta própria no console, além de alterar a própria senha. - **Controle refinado de chaves**: cada usuário pode criar várias chaves de API, e cada chave pode ter configurações independentes de tempo de expiração, estado de ativação e lista de modelos permitidos (que só pode restringir dentro da lista permitida da conta). - **Protocolos compatíveis**: suporta os protocolos OpenAI Chat Completions e Anthropic Messages, além de mapeamento de modelos do cliente para modelos reais upstream. - **Armazenamento seguro**: as chaves de provedor upstream são armazenadas no Redis criptografadas com AES-256-GCM; a perda da chave mestra tornará os dados permanentemente inutilizáveis. - **Interface multilíngue**: chinês por padrão, com suporte a inglês, alternável com um clique no rodapé. - **Página de documentação amigável ao usuário**: fornece endereços de interface copiáveis e exemplos de código compatíveis com OpenAI/Anthropic. ## Stack tecnológico - **Framework**: Next.js 15 App Router + React 19 + TypeScript 5 - **Armazenamento de dados**: Upstash for Redis (instalável em um clique pelo Vercel Marketplace) - **Autenticação**: iron-session 8 + bcryptjs (work factor 12) - **Criptografia**: AES-256-GCM + bcryptjs - **Integração de IA upstream**: Vercel AI SDK - **Testes**: Vitest + Playwright ## Início rápido 1. **Instalar dependências**: `pnpm install` 2. **Configurar variáveis de ambiente**: copie `.env.example` para `.env.local`; basta definir `RELAY_AUTH` (senha mestra, que também é a senha de login do administrador). As variáveis do Upstash são injetadas automaticamente na Vercel. 3. **Iniciar o servidor de desenvolvimento**: `pnpm dev` e acesse `http://localhost:3000`. 4. **Login**: na primeira inicialização, uma conta de administrador é criada automaticamente, com nome de usuário padrão `admin` e senha igual ao valor de `RELAY_AUTH`. ## Implantação na Vercel O projeto oferece um botão de implantação em um clique; na implantação, basta preencher a variável de ambiente `RELAY_AUTH`. Após a implantação bem-sucedida, instale o banco de dados Upstash pelo Vercel Marketplace e faça um novo deploy (Redeploy) para que entre em vigor. ## Pontos de segurança - As senhas dos usuários usam hash unidirecional bcrypt, impossibilitando reverter ao texto original. - As chaves de API dos clientes armazenam apenas seu hash SHA-256; o texto em claro é retornado somente uma vez na criação. - As chaves de provedor upstream são armazenadas criptografadas com AES-256-GCM; a perda da chave mestra torna a recuperação impossível. - O cookie de sessão é criptografado com iron-session e configurado com os atributos HttpOnly, Secure e SameSite=Lax. ## Documentação e operação O projeto fornece documentação detalhada de arquitetura, modelo de dados, rotas de API, testes e implantação. Também inclui scripts de operação, como os comandos bootstrap-admin, reset-password, rotate-key e list-usage. ## Licença MIT