Personal project · Software operationsVersions, builds and products
DevHub GitHub

Your products.One central view.

A desktop app to follow releases, builds, clients and feedback.

Releases, builds and feedback in one panel.

Desktop appGitHubPersonal

  • Tauri 2
  • Rust
  • React 19
  • SQLite
Personal project · Software operationsVersions, builds and productsReleasesBuildsClients and feedback
DevHub GitHub

Your products.One central view.

A desktop app to follow releases, builds, clients and feedback.

  • Tauri 2
  • Rust
  • React 19
  • SQLite

Releases, builds and feedback in one panel.

Desktop appGitHubPersonal

  • Tauri 2
  • Rust
  • React 19
  • SQLite

PortfolioDevHub GitHub

The panel

Every product, at a glance.

Anyone looking after several programs keeps opening GitHub to check which version each one is on and whether the last build passed. Here every product has its own page: the live version, the build status and how many new requests came in, all in one place.

DevHub · Control Panel

BabyShoes

collin-labs/babyshoes

  • Published versionv1.6.2The latest one out of draft.
  • Latest buildPassedThe newest in the repository.
  • New feedback29 in all, stored on the computer.

Publish a new versionStarts the cloud build and creates the version.

Publish
  • RepositoryOpens on GitHubgithub.com/collin-labs/babyshoes
  • ReleasesThe versionsgithub.com/collin-labs/babyshoes/releases
  • ActionsThe buildsgithub.com/collin-labs/babyshoes/actions

Where each number comes from

  1. The versionThe program asks GitHub for the versions and shows the first one already published. Drafts don't count.
  2. The buildComes from the repository's build log: queued, running, passed or failed.
  3. The requestsCounted in the computer's own database, keeping the new ones apart from those already seen.

The products belong to the owner; versions and counts here are examples. In the program they come from GitHub the moment the project is opened.

Project scene: the panel open on a laptop, connected to the GitHub cloud

DevHub GitHub · Integration and publishing

From version to workflow.

Check releases and builds. Trigger publishing from the panel.

GitHub REST APIGitHub ActionsReleases and buildsPublishing through the workflow set up in the repository.

The program doesn't open the GitHub website: it talks straight to the service, through four calls. One checks who you are, two bring the versions and the builds, and the last one tells the cloud to start a new version.

The four calls

First of all, the program checks whether the access key (the token) is valid and whose it is.

The request

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

The reply200 OK

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

What the panel does with it

If the key is valid, the account name shows up in green in the settings and the panel unlocks the projects. If not, an invalid-key warning appears.

The addresses, headers and content sent are the ones in the Rust core (github.rs). The replies are shortened.

Publishing

One number, one click.

Releasing a new version of a program is usually a checklist kept in your head: change the number in three files, build, sign, upload. Here you type the number and what changed; the cloud does the rest on its own, always in the same order.

Publish a new version

When you publish, the build starts in the GitHub cloud (about 10 minutes). The version stays as a draft for you to review and publish.

Publishing triggered! The build is running in the cloud.

What the cloud doesv1.6.3

  1. Download the codeThe cloud takes the project from the repository.GitHub Actions
  2. Install Node.jsThe tool that builds the screen.
  3. Install RustThe language of the program's core.
  4. Keep what's already builtNext time, Rust doesn't build everything again.
  5. Set the versionThe new number goes into the three files, without the invisible character that breaks the build.
  6. Install the dependenciesThe pieces the screen uses.
  7. Build, sign and publishCreates the installer, signs it and makes the version with the update file.GitHub Actions
v1.6.3 ready, as a draftWith the installer and the update file. You review and publish.

The steps are the ones in the project's automation file (publicar.yml). The suggested version follows the program's own rule: add 1 to the last number.

The feedback

Nothing gets lost along the way.

Client requests come from everywhere and get lost among the messages. Here each one becomes a card in the right project (bug, suggestion, improvement or note), with a priority and the version where it showed up, and moves across columns until it's solved.

2 new · 7 in all

New2

  • BugUrgent

    Report won't open after the update

    Loja Aurorav2.2.0

  • SuggestionNormal

    Export the contract list to a spreadsheet

    Escritório Prismav2.3.0

Reviewing2

  • ImprovementHigh

    Faster search on the clients screen

    Loja Aurorav2.2.0

  • NoteLow

    Asked for a step-by-step video

    Confecção Valev2.1.4

Solved2

  • BugHigh

    Date showing in English on the receipt

    Confecção Valev2.1.4

  • SuggestionNormal

    Keyboard shortcut to save

    Escritório Prismav2.3.0

Dropped1

  • ImprovementLow

    Print button on the card itself

    Mercado Bom Diav1.9.0

Requests and companies are examples. In the program, each card is logged in the project and stored in the computer's database; the panel counter reads from there.

Project scene: the monitor with the program's guides, a tablet with the settings and the document, database and GitHub icons

DevHub GitHub · Organization and know-how

The process is part of the product.

Internal guides, clients and feedback follow how each project is run.

Clients
per project
Organized
feedback
Guides and
templates
Local data in SQLite · Publishing through GitHub Actions

The way of working lives inside the program itself: how it works, how GitHub numbers and publishes versions, and the recipe every new program follows so it's born already updating itself. Written for people outside the field.

Welcome to DevHub

Anyone looking after several systems controls everything from here, without opening a terminal, remembering commands or touching files.

A car dashboard

You look and know right away how each project is doing: which version is live, whether the last build worked and whether a client is asking for something.

What it does

  • Shows each project's status, brought from GitHub.
  • Publishes new versions with one button.
  • Keeps feedback by project and by status.
  • Lists the companies using each system and the version each one has.

On the client's side

The client never sees DevHub. They use the program they received; when a new version comes out, their program says so on opening, updates and restarts.

Day to day

Improved the code, open DevHub, click Publish and write what changed. Done.

The first time

The first installer is delivered by hand; from then on, new versions arrive on their own.

The guides are the program's own texts, summarized here. In DevHub they have their own tab, to read and copy.

The core

Five tables, twenty functions.

Under the window, a small database keeps everything on the computer itself: nothing sits on someone else's server. There are five tables, and the Rust core has twenty functions the screen calls; every button in the program is one of them.

config3

The program's settings, such as the connected GitHub account.

  • PKchaveTEXT
  • valorTEXTRequired (NOT NULL)
  • atualizado_emTEXTDefault: the time it was saved

projetos8

Each product being tracked: the owner and name of the GitHub repository, the colour and the automation file.

  • PKidINTEGER
  • nomeTEXTRequired (NOT NULL)
  • github_ownerTEXTRequired (NOT NULL)
  • github_repoTEXTRequired (NOT NULL)
  • corTEXTDEFAULT '#6366f1'
  • workflow_arquivoTEXTDEFAULT 'publicar.yml'
  • ativoINTEGERDefault: 1 (leaving the list doesn't delete)
  • criado_emTEXTDefault: the time it was saved

clientes7

Who uses each product and on which version.

  • PKidINTEGER
  • FKprojeto_idINTEGERGoes away with the project (ON DELETE CASCADE)
  • nomeTEXTRequired (NOT NULL)
  • emailTEXT
  • telefoneTEXT
  • versao_instaladaTEXT
  • ativoINTEGERDefault: 1 (leaving the list doesn't delete)

feedbacks6

Each product's requests, with type, status and priority.

  • PKidINTEGER
  • FKprojeto_idINTEGERGoes away with the project (ON DELETE CASCADE)
  • tipoTEXTOnly accepts: bug · sugestao · melhoria · nota
  • statusTEXTOnly accepts: novo · em_analise · resolvido · descartado
  • prioridadeTEXTOnly accepts: baixa · normal · alta · urgente
  • versao_appTEXT

publicacoes5

The log of every version triggered from the panel.

  • PKidINTEGER
  • FKprojeto_idINTEGERGoes away with the project (ON DELETE CASCADE)
  • versaoTEXTRequired (NOT NULL)
  • notasTEXT
  • statusTEXTDefault: 'disparado'

The black light shows the rules the database itself enforces.Tied to the project: goes away when the project is deleted.

Tables, columns and rules come from the database file (schema.rs); the functions, from the core registry (lib.rs). Four indexes speed up searching by project and by status.

The technologies

What it is made of, piece by piece

A desktop program that talks to GitHub: the screen is React inside Tauri 2, and the Rust core keeps everything in a SQLite database on the computer itself and makes the GitHub calls. Pick a piece to see what it does here and which file it is in.

15technologies, in 3 layers

Screen

Window and core

Data and GitHub