Sobre o projeto

Wakapi é um backend gratuito, de código aberto e auto-hospedado, compatível com WakaTime, o popular rastreador de atividade de codificação. Ele é projetado para desenvolvedores que desejam manter suas estatísticas de codificação em sua própria infraestrutura, enquanto continuam usando os plugins de editor WakaTime existentes. ## O que ele faz Wakapi recebe heartbeats das ferramentas oficiais do cliente WakaTime e os transforma em estatísticas sobre projetos, linguagens, editores, hosts e sistemas operacionais. Ele oferece um painel web, badges incorporáveis, relatórios semanais por e-mail, uma API REST e exportação de métricas compatível com Prometheus. É descrito como parcialmente compatível com WakaTime e também pode se integrar ao próprio WakaTime. ## Opções de implantação O README lista várias maneiras de executar o Wakapi: - Usar o serviço de nuvem hospedado em wakapi.dev. - Executar rapidamente uma versão via script de instalação shell. - Executar a imagem Docker oficial (ghcr.io/muety/wakapi), com volume persistente e um salt de senha. SQLite é o banco de dados padrão; MySQL e Postgres também são suportados. Docker Compose e Docker Secrets são suportados, e existe um Helm chart da comunidade para Kubernetes. - Compilar e executar a partir do código-fonte com Go, usando um arquivo de configuração YAML. Executar como um serviço SystemD é recomendado para implantações independentes. ## Configuração do cliente Wakapi depende das ferramentas de código aberto do cliente WakaTime. Os usuários instalam o plugin WakaTime para seu editor e, em seguida, editam `~/.wakatime.cfg` para apontar `api_url` para sua instância Wakapi e definir sua chave de API Wakapi. Um proxy do lado do cliente pode ser configurado opcionalmente. Wakapi e WakaTime podem ser executados em paralelo, seja por meio da configuração do lado do cliente ou do recurso de relay do Wakapi, que encaminha heartbeats para o WakaTime. ## Configuração A configuração pode ser fornecida por meio de um arquivo YAML ou variáveis de ambiente. O README documenta um amplo conjunto de opções, incluindo: - Configurações do aplicativo: habilitação de leaderboard, escopo, tempo de geração e requisito de autenticação; agendamentos de agregação e relatórios semanais; limpeza de dados e tempos de otimização do banco de dados; configurações de importação (habilitação, tamanho do lote, backoff, limites de taxa, lista de permissões de host); idade máxima de heartbeat; aquecimento de cache; mapeamentos de linguagem personalizados; modelos de URL de avatar; formatos de data e datetime; contato de suporte; retenção de dados e limites de contas inativas. - Configurações do servidor: porta, endereços IPv4/IPv6, socket UNIX e suas permissões, formato de log, timeout de requisição, caminhos de certificado e chave TLS, caminho base e URL pública. - Configurações de segurança: desabilitar autenticação local, desabilitar WebAuthn, salt de senha, chave de cookie, cookies inseguros, tempo de vida do cookie, cadastro local, cadastro OIDC, verificação TLS OIDC e CAPTCHA de cadastro. ## Notas O README afirma que, devido ao tempo limitado do mantenedor, pull requests não são aceitos temporariamente. O projeto é licenciado sob uma licença de código aberto e é mantido por muety.