Projeto pessoal · Operação de softwareVersões, builds e produtos
DevHub GitHub

Seus produtos.Uma visão central.

Um app desktop para acompanhar releases, builds, clientes e feedbacks.

Releases, builds e feedbacks de cada produto num painel só.

App desktopGitHubPessoal

  • Tauri 2
  • Rust
  • React 19
  • SQLite
Projeto pessoal · Operação de softwareVersões, builds e produtosReleasesBuildsClientes e feedbacks
DevHub GitHub

Seus produtos.Uma visão central.

Um app desktop para acompanhar releases, builds, clientes e feedbacks.

  • Tauri 2
  • Rust
  • React 19
  • SQLite

Releases, builds e feedbacks de cada produto num painel só.

App desktopGitHubPessoal

  • Tauri 2
  • Rust
  • React 19
  • SQLite

PortfólioDevHub GitHub

O painel

Cada produto, uma olhada.

Quem cuida de vários programas vive abrindo o GitHub para saber em que versão cada um está e se o último build passou. Aqui cada produto tem a sua página: a versão no ar, o estado do build e quantos pedidos novos chegaram, num lugar só.

DevHub · Painel de Controle

BabyShoes

collin-labs/babyshoes

  • Versão publicadav1.6.2A última que saiu do rascunho.
  • Último buildPassouO mais recente do repositório.
  • Feedbacks novos29 no total, guardados no computador.

Publicar nova versãoDispara o build na nuvem e cria a versão.

Publicar
  • RepositórioAbre no GitHubgithub.com/collin-labs/babyshoes
  • ReleasesAs versõesgithub.com/collin-labs/babyshoes/releases
  • ActionsOs buildsgithub.com/collin-labs/babyshoes/actions

De onde vem cada número

  1. A versãoO programa pergunta ao GitHub pelas versões e mostra a primeira que já foi publicada. Rascunho não conta.
  2. O buildVem do registro de builds do repositório: na fila, rodando, passou ou falhou.
  3. Os pedidosContados no banco do próprio computador, separando os novos dos que já foram vistos.

Os produtos são do próprio dono; versões e contagens aqui são de exemplo. No programa, elas chegam do GitHub na hora em que o projeto é aberto.

Cena do projeto: o painel aberto num notebook, ligado à nuvem do GitHub

DevHub GitHub · Integração e publicação

Da versão ao workflow.

Consulte releases e builds. Dispare a publicação pelo painel.

GitHub REST APIGitHub ActionsReleases e buildsPublicação por workflow configurado no repositório.

O programa não abre o site do GitHub: ele conversa direto com o serviço, por quatro chamadas. Uma confere quem é você, duas trazem as versões e os builds, e a última manda a nuvem começar uma versão nova.

As quatro chamadas

Antes de tudo, o programa confere se a chave de acesso (o token) vale e de quem ela é.

O pedido

GET api.github.com/user

Authorization
Bearer github_pat_…
Accept
application/vnd.github+json
X-GitHub-Api-Version
2022-11-28
User-Agent
DevHub-Panel

A resposta200 OK

  • { "login": "collin-labs", … }

O que o painel faz com isso

Se a chave vale, o nome da conta aparece em verde nas configurações e o painel libera os projetos. Se não vale, aparece o aviso de chave inválida.

Os endereços, os cabeçalhos e o conteúdo enviado são os do núcleo em Rust (github.rs). As respostas estão resumidas.

A publicação

Um número, um clique.

Lançar uma versão nova de um programa costuma ser uma lista de passos de cabeça: mudar o número em três arquivos, montar, assinar, enviar. Aqui você escreve o número e o que mudou; o resto a nuvem faz sozinha, sempre na mesma ordem.

Publicar nova versão

Ao publicar, o build começa na nuvem do GitHub (cerca de 10 minutos). A versão fica como rascunho para você revisar e publicar.

Publicação disparada! O build está rodando na nuvem.

O que a nuvem fazv1.6.3

  1. Baixar o códigoA nuvem pega o projeto do repositório.GitHub Actions
  2. Instalar o Node.jsA ferramenta que monta a tela.
  3. Instalar o RustA linguagem do núcleo do programa.
  4. Guardar o que já foi montadoNa próxima vez, o Rust não monta tudo de novo.
  5. Ajustar a versãoO número novo entra nos três arquivos, sem o caractere invisível que quebra a montagem.
  6. Instalar as dependênciasAs peças que a tela usa.
  7. Montar, assinar e publicarGera o instalador, assina e cria a versão com o arquivo de atualização.GitHub Actions
v1.6.3 pronta, como rascunhoCom o instalador e o arquivo de atualização. Você revisa e publica.

Os passos são os do arquivo de automação do projeto (publicar.yml). A conta da versão sugerida é a do programa: soma 1 no último número.

O retorno

Nada se perde no meio do caminho.

Pedido de cliente chega por todo lado e some no meio das mensagens. Aqui cada um vira uma ficha no projeto certo (erro, sugestão, melhoria ou nota), com prioridade e a versão em que apareceu, e anda de coluna até ser resolvido.

2 novos · 7 no total

Novo2

  • BugUrgente

    Relatório não abre depois da atualização

    Loja Aurorav2.2.0

  • SugestãoNormal

    Exportar a lista de contratos em planilha

    Escritório Prismav2.3.0

Em análise2

  • MelhoriaAlta

    Busca mais rápida na tela de clientes

    Loja Aurorav2.2.0

  • NotaBaixa

    Pediu um passo a passo em vídeo

    Confecção Valev2.1.4

Resolvido2

  • BugAlta

    Data aparecendo em inglês no recibo

    Confecção Valev2.1.4

  • SugestãoNormal

    Atalho de teclado para salvar

    Escritório Prismav2.3.0

Descartado1

  • MelhoriaBaixa

    Botão de imprimir na própria ficha

    Mercado Bom Diav1.9.0

Pedidos e empresas são de exemplo. No programa, cada ficha é registrada no projeto e guardada no banco do computador; o contador do painel lê dali.

Cena do projeto: o monitor com os guias do programa, um tablet com as configurações e os ícones de documento, banco e GitHub

DevHub GitHub · Organização e conhecimento

O processo também faz parte do produto.

Guias internos, clientes e feedbacks acompanham a operação de cada projeto.

Clientes
por projeto
Feedbacks
organizados
Guias e
modelos
Dados locais em SQLite · Publicação pelo GitHub Actions

O jeito de trabalhar mora dentro do próprio programa: como ele funciona, como o GitHub numera e publica as versões, e a receita que todo programa novo segue para já nascer se atualizando sozinho. Escrito para quem não é do ramo.

Bem-vindo ao DevHub

Quem cuida de vários sistemas controla tudo daqui, sem abrir terminal, lembrar de comandos ou mexer em arquivos.

Um painel de carro

Você olha e sabe na hora como cada projeto está: qual versão está no ar, se o último build deu certo e se tem cliente pedindo alguma coisa.

O que ele faz

  • Mostra o estado de cada projeto, trazido do GitHub.
  • Publica versões novas com um botão.
  • Guarda os feedbacks por projeto e por estado.
  • Lista as empresas que usam cada sistema e a versão de cada uma.

Do lado do cliente

O cliente nunca vê o DevHub. Ele usa o programa que recebeu; quando sai uma versão nova, o programa dele avisa ao abrir, atualiza e reinicia.

O dia a dia

Melhorou o código, abre o DevHub, clica em Publicar e escreve o que mudou. Pronto.

A primeira vez

O primeiro instalador vai na mão; daí em diante, as versões novas chegam sozinhas.

Os guias são textos do próprio programa, resumidos aqui. No DevHub, eles ficam numa aba própria, para consultar e copiar.

O núcleo

Cinco tabelas, vinte funções.

Por baixo da janela, um banco de dados pequeno guarda tudo no próprio computador: nada fica num servidor de terceiros. São cinco tabelas, e o núcleo em Rust tem vinte funções que a tela chama; cada botão do programa é uma delas.

config3

Os ajustes do programa, como a conta do GitHub conectada.

  • PKchaveTEXT
  • valorTEXTObrigatório (NOT NULL)
  • atualizado_emTEXTPadrão: a hora em que foi gravado

projetos8

Cada produto acompanhado: o dono e o nome do repositório no GitHub, a cor e o arquivo de automação.

  • PKidINTEGER
  • nomeTEXTObrigatório (NOT NULL)
  • github_ownerTEXTObrigatório (NOT NULL)
  • github_repoTEXTObrigatório (NOT NULL)
  • corTEXTDEFAULT '#6366f1'
  • workflow_arquivoTEXTDEFAULT 'publicar.yml'
  • ativoINTEGERPadrão: 1 (sair da lista não apaga)
  • criado_emTEXTPadrão: a hora em que foi gravado

clientes7

Quem usa cada produto e em que versão.

  • PKidINTEGER
  • FKprojeto_idINTEGERSome junto com o projeto (ON DELETE CASCADE)
  • nomeTEXTObrigatório (NOT NULL)
  • emailTEXT
  • telefoneTEXT
  • versao_instaladaTEXT
  • ativoINTEGERPadrão: 1 (sair da lista não apaga)

feedbacks6

Os pedidos de cada produto, com tipo, estado e prioridade.

  • PKidINTEGER
  • FKprojeto_idINTEGERSome junto com o projeto (ON DELETE CASCADE)
  • tipoTEXTSó aceita: bug · sugestao · melhoria · nota
  • statusTEXTSó aceita: novo · em_analise · resolvido · descartado
  • prioridadeTEXTSó aceita: baixa · normal · alta · urgente
  • versao_appTEXT

publicacoes5

O registro de cada versão disparada pelo painel.

  • PKidINTEGER
  • FKprojeto_idINTEGERSome junto com o projeto (ON DELETE CASCADE)
  • versaoTEXTObrigatório (NOT NULL)
  • notasTEXT
  • statusTEXTPadrão: 'disparado'

A luz negra mostra as regras que o próprio banco faz cumprir.Ligada ao projeto: some junto quando o projeto é apagado.

Tabelas, colunas e regras são as do arquivo do banco (schema.rs); as funções, as do registro do núcleo (lib.rs). Quatro índices aceleram a busca por projeto e por estado.

As tecnologias

Do que é feito, peça por peça

Um programa de computador que conversa com o GitHub: a tela é React dentro do Tauri 2, e o núcleo em Rust guarda tudo num banco SQLite no próprio computador e faz as chamadas ao GitHub. Escolha uma peça para ver o que ela faz aqui e em que arquivo está.

15tecnologias, em 3 camadas

Tela

Janela e núcleo

Dados e GitHub