Guia completo
Instalação, dia a dia, backups e resolução de problemas — explicado passo a passo, sem precisar de perceber de tecnologia.
O que vem na app (grátis, MIT)
Tudo o que uma oficina usa no dia a dia, sem subscrição nem limites:
| Menu | O que inclui |
|---|---|
| Painel | Resumo do dia — reparações abertas, prioridades e alertas (vista diferente para dono, técnico e balcão) |
| Reparações | Fichas com código único (REP-…), estados (receção → pronto → entregue), timeline, notas internas e ao cliente, fotos e prazo |
| Pedidos | Fila de entrada — pedidos e diagnósticos enviados por clientes, prontos a converter em reparação |
| Devoluções | Gestão de devoluções ligadas a vendas e reparações |
| Clientes | Fichas com histórico de reparações, pesquisa por nome/telefone/IMEI, consentimentos |
| Inventário de peças | Stock, alertas de mínimos, fornecedores, peças associadas a reparações |
| POS de balcão | Venda de peças e acessórios, sessões de caixa, talões e registo de pagamentos |
| Serviços de reparação | Catálogo de reparações com preços — a «tabela de preços» da loja |
| Orçamentos | Versões enviadas ao cliente, resposta aceite/recusada com registo datado, histórico completo |
| Notificações | Alertas na app, modelos de mensagem editáveis e fila de envio WhatsApp/SMS |
| Relatórios | Vendas, reparações e margens por período — com página de impressão A4 |
| Impressão | Talões e etiquetas configuráveis — rolo 58/80 mm, A4, secções opcionais e impressão direta em térmicas de rede |
| Analista de IA | Perguntas sobre os dados da loja em linguagem natural |
| Tracking do cliente | Página pública na rede da loja para o cliente seguir a reparação — grátis em LAN |
| Utilizadores | Vários funcionários com perfis e permissões por função |
| Idiomas | Português, inglês, francês e espanhol |
Três formas de instalar
O OficinaOS é sempre o mesmo programa — a diferença está em como é arrancado no PC da loja. Há três caminhos:
OficinaOS-Setup.exe (recomendado) — um instalador Windows normal, sem Docker: corre como serviço, arranca com o PC, cria a regra de firewall, faz backup diário automático e deixa um ícone na bandeja. É o caminho certo para o PC da loja.
Modo portátil — um pacote único com tudo embutido (a app, a base de dados PostgreSQL e o runtime), sem instalação e sem serviços Windows. Existe para as situações em que o instalador não serve: PCs onde não tens a password de administrador, quem prefere não instalar nada no sistema, e como fallback se o instalador falhar numa máquina concreta (antivírus, políticas da empresa).
Docker — para um NAS, um servidor dedicado, Linux ou macOS, ou para quem já usa Docker.
| Setup.exe (recomendado) | Portátil | Docker | |
|---|---|---|---|
| Quando usar | PC da loja — quase sempre | Sem admin, sem instalar nada, ou instalador falha | NAS, servidor, Linux/macOS |
| Requer administrador | Sim, durante a instalação | Não | Sim, na instalação do Docker |
| Download | ~339 MB | ~540 MB | ~1 GB (Docker + app) |
| Arranque com o PC | Automático (serviço Windows) | Opcional — tarefa agendada, perguntado na 1ª execução | Automático |
| Se a app crashar | Reinicia sozinha | Reinicia sozinha (wrapper) | Reinicia sozinha |
| Backups | Diário automático às 03:30 | A cada arranque + BACKUP.bat | Diário automático (a cada 24h) |
| Backups fora do PC | Copiar a pasta de backups | Copiar a pasta de backups | Suportado (rclone → S3/B2/GCS) |
| Atualizações | Botão «Atualizar» na app (~100 MB) ou Setup por cima | Botão «Atualizar» na app ou ATUALIZAR.bat | ATUALIZAR.bat — só descarrega o que mudou |
| Acesso remoto (HTTPS) | Cloudflare Tunnel instalado à parte | Cloudflare Tunnel instalado à parte | Cloudflare Tunnel incluído |
Instalação — OficinaOS-Setup.exe (uma vez, ~10 minutos)
Descarregue o OficinaOS-Setup.exe na página de releases e faça duplo clique. Se o Windows Defender SmartScreen avisar: «Mais informações» → «Executar mesmo assim».
Pede administrador uma só vez (serviços, firewall e a tarefa de backup) e faz tudo sozinho. No fim o browser abre em http://localhost:4000. Primeiro login: utilizador admin, palavra-passe braindead — a app obriga a mudar ambos.
Fica um ícone na bandeja junto ao relógio: abrir a app, ver o estado, parar/arrancar, fazer backup. Noutros aparelhos da loja: http://oficinaos.local:4000 — ou o QR code na página Ajuda.
Em Linux ou macOS não há instalador — usa-se o Docker manualmente:
git clone https://github.com/braindeadpt/OficinaOS.git
cd OficinaOS && cp .env.example .env
docker compose up -d
docker compose exec app bun run db:seed
Modo portátil — sem admin, sem instalar nada
Para quando o instalador não é opção: não tens a password de administrador do PC, não queres que nada fique instalado no sistema, ou o instalador/serviços foram bloqueados naquela máquina (antivírus, políticas da empresa).
Descarrega oficinaos-portable.zip, extrai para uma pasta e corre INICIAR.bat. A app é exatamente a mesma — mesmo código, mesma base de dados PostgreSQL, mesmas funcionalidades — e também tem o botão «Atualizar» dentro da app.
Duas diferenças práticas face ao Setup.exe: o arranque automático é uma tarefa agendada opcional (o INICIAR.bat pergunta na 1ª execução) em vez de um serviço; e como ninguém abre a firewall por ti, o Windows pergunta uma vez se permite a ligação — escolhe «Permitir» para os tablets da loja ligarem.
Se chegaste aqui por causa do erro «virtualization support not detected» do caminho Docker, o portátil resolve — mas nesse caso o Setup.exe é ainda mais simples, porque também não precisa de Docker.
Dia a dia — ligar, desligar, ficheiros
Depois de instalado, o dia a dia resume-se a duplo clique num ficheiro. Os nomes são iguais nos dois modos — só muda a pasta onde estão:
- Instalação por Setup.exe: o serviço corre sozinho — parar/arrancar e backup manual pelo ícone na bandeja.
- Modo Docker: na pasta onde extraiu o instalador.
- Modo portátil: dentro da pasta oficinaos-portable — os dados vivem em data\, os backups em app\uploads\backups.
- Outros dispositivos da loja (tablet, telemóvel, outro PC) não instalam nada — abrem http://<IP-do-PC>:4000 no browser.
| Ficheiro | Para quê |
|---|---|
| INICIAR.bat | Ligar o OficinaOS — abre o browser no fim |
| PARAR.bat | Desligar — os dados ficam guardados |
| ATUALIZAR.bat | Atualizar para a versão mais recente |
| BACKUP.bat | (só portátil) Backup manual da base de dados |
| RESTAURAR.bat | (só portátil) Repor a base de dados a partir de um backup |
Backups e restauro
Os backups são ficheiros comprimidos (.sql.gz) com a base de dados inteira. A app mostra o estado do último backup em Definições → Loja → Backups — funciona igual em todos os modos.
Na instalação por Setup.exe uma tarefa agendada faz backup diário às 03:30 para C:\ProgramData\OficinaOS\backups. No modo Docker um serviço dedicado faz um backup a cada 24 horas, guarda 14 dias, e opcionalmente copia para armazenamento externo (S3, Backblaze, etc.) e testa o restauro automaticamente.
No modo portátil o backup corre a cada arranque e com BACKUP.bat. Restaurar é com RESTAURAR.bat (repor um ficheiro de backups). Como não há cópia fora do PC automática, copie a pasta app\uploads\backups para um disco externo ou pen — backups no mesmo disco não protegem contra avaria, roubo ou ransomware.
Atualizações
A app avisa no topo quando existe versão nova. Nas instalações por Setup.exe e no modo portátil, o dono da loja tem um botão «Atualizar» no aviso — descarrega só a parte da app (~100 MB) com verificação SHA-256, faz backup da base de dados antes e repõe a versão anterior sozinho se a nova não arrancar. A app fica offline ~1-2 minutos durante a troca.
À mão também funciona: o Setup.exe da versão nova por cima, ou ATUALIZAR.bat no portátil e no Docker. No Docker pode ainda ativar-se atualização 100% automática (Watchtower) — as migrações da base de dados correm sempre sozinhas.
Na loja — telemóveis, tablets e PCs
Qualquer aparelho ligado à Wi-Fi da loja abre a app no browser — sem instalar nada. Basta escrever o endereço que a instalação dá e fazer login:
Funciona sem internet para o uso do dia a dia. Guarde o endereço nos favoritos — é sempre o mesmo.
http://192.168.1.33:4000 # o endereço do PC-servidor
Ícone no ecrã do telemóvel
Para abrir com um toque, como uma app normal — demora 10 segundos:
- iPhone/iPad: Safari → botão Partilhar → «Adicionar ao ecrã principal»
- Android: Chrome → menu ⋮ → «Adicionar ao ecrã principal»
- Com acesso remoto ligado, o Android chega a oferecer «Instalar aplicação» — instalação real
Fora da loja — acesso remoto
Com o PC da loja ligado, um Cloudflare Tunnel gratuito dá à loja um endereço https:// próprio — sem mexer no router, funciona com qualquer operadora, mesmo as que bloqueiam portas (CGNAT).
Serve para a equipa consultar a app fora da loja e para os links dos clientes — tracking, orçamentos, QR de garantia — abrirem em qualquer lado.
- Criar conta grátis na Cloudflare + um domínio (~10 €/ano)
- No painel Zero Trust: criar o túnel e copiar o token
- Duas linhas no ficheiro .env e reiniciar a app
- Na app: Definições → Loja → URL base de tracking → o endereço público
Privado por defeito
O túnel é opcional: a app funciona a 100% na rede local mesmo sem internet. Os dados dos clientes ficam na loja — a Cloudflare apenas transporta o tráfego encriptado quando o túnel está ligado.
Quem quiser uma barreira extra pode ativar o Cloudflare Access (grátis): email + código antes do login, mantendo as páginas públicas dos clientes abertas.
Impressão — talões e etiquetas
O OficinaOS imprime os três documentos do dia a dia diretamente da ficha ou do ecrã de venda: o talão da reparação para o cliente, o talão de venda do POS e a etiqueta que se cola no equipamento.
Tudo se configura em Definições → Loja → Impressão — as escolhas aplicam-se a todos os documentos a partir desse momento:
| Opção | Escolhas |
|---|---|
| Papel do talão | Rolo térmico 58 mm · Rolo térmico 80 mm · Folha A4 (documento completo, tipo fatura) |
| Secções do talão | Ligar/desligar cada bloco: IMEI, problema reportado, assinatura do cliente, QR de tracking, garantia |
| Etiqueta do equipamento | 40×20 mm · 57×32 mm · 62×29 mm |
| Método de impressão | Caixa de diálogo Imprimir — qualquer impressora instalada — ou térmica de rede ESC/POS — direto, sem diálogo |
Dois métodos de impressão
Caixa de diálogo Imprimir (predefinição): o documento abre num separador novo e usa o diálogo de impressão do sistema. Funciona com qualquer impressora instalada — USB, rede, Bluetooth — e até com «Guardar como PDF». As etiquetas seguem sempre este caminho: as etiqueteiras falam outras linguagens (ZPL/TSPL) e o browser trata do driver.
Impressora térmica de rede (ESC/POS): a app envia o talão diretamente para a impressora pela rede da loja — um clique e sai o talão, sem diálogo. Serve para térmicas ligadas por cabo ou Wi-Fi (Epson TM, Star, Xprinter e compatíveis ESC/POS). O texto usa a página de código CP850 — acentos corretos — e o QR de tracking é impresso pelos comandos nativos da impressora, sem drivers.
- Ativar (uma vez): Definições → Loja → Impressão → Método «Impressora térmica de rede» → indicar IP e porta (quase sempre 9100) → «Enviar ticket de teste»
- Descobrir o IP: na maioria das térmicas, ligar com o botão FEED premido imprime um autoteste com o IP; também aparece na lista de dispositivos do router
- Fixar o IP no router (reserva DHCP) — sem isso a impressora pode mudar de endereço e deixar de imprimir
- Com papel A4 configurado ou impressora só USB, o caminho é a caixa de diálogo — ESC/POS é só para rolos térmicos na rede
Impressão — problemas comuns
As situações mais frequentes:
| Sintoma | O que fazer |
|---|---|
| «Não foi possível aceder à impressora» | Confirmar que está ligada e na mesma rede da loja; rever IP e porta; repetir o «ticket de teste» |
| «Nenhuma impressora de rede configurada» | Indicar IP + porta em Definições → Loja → Impressão — ou mudar o método para «Caixa de diálogo Imprimir» |
| A impressora mudou de IP | Criar uma reserva DHCP no router e atualizar o IP nas definições |
| Talão cortado ou margens erradas | Na caixa de diálogo: escolher o papel certo (58 mm, 80 mm ou A4), margens «Nenhuma» e escala 100% |
| O separador do talão não abre | Permitir pop-ups para o endereço da app e imprimir outra vez |
| Impressora só liga por USB | Usar o método «Caixa de diálogo Imprimir» — ESC/POS precisa de uma impressora na rede |
Módulos Pro — como funcionam
Os módulos Pro são funcionalidades que precisam de «chegar à internet». A app continua 100% local e gratuita; quando a loja quer alcance remoto, emparelha a app com a OficinaOS Cloud — o nosso serviço que faz de ponte entre a app da loja e o exterior, sem expor o PC da loja.
A loja cria uma conta na Cloud e emparelha a app com um código (uma vez). Cada módulo é ativado do lado do servidor — sem ficheiros de licença. A app sincroniza com a Cloud a cada ~2 minutos para enviar e receber.
Sem emparelhamento, tudo continua a funcionar na rede local — os módulos Pro simplesmente não aparecem.
| Módulo | O que o cliente da loja ganha |
|---|---|
| Portal do cliente | Link público com o estado da reparação e botões para aceitar/recusar orçamento — sem ligar à loja |
| Bot de WhatsApp | Escreve para o WhatsApp da loja e recebe o estado da reparação automaticamente; aprova orçamentos com SIM/NÃO |
| Diagnóstico à distância | Faz o diagnóstico do telemóvel em casa (oficinaos-diag, grátis) e envia à loja com um código |
| Relatórios IA | Relatório do diagnóstico escrito em linguagem simples, pronto a entregar |
| Faturação certificada | Fatura ou fatura-recibo legal emitida diretamente da reparação ou venda — via InvoiceXpress, com a conta da própria loja — só Portugal |
| Montra online | Página pública com artigos do catálogo da loja; o cliente reserva e a reserva entra na fila de Pedidos |
| Procuro-peça | Quadro entre lojas OficinaOS para pedir peças e responder «tenho» — o negócio acerta-se entre lojas |
| Preços de mercado | Mediana anónima dos preços de reparações e peças de outras lojas, para comparar com os seus |
| Multi-loja | Receita e reparações de todas as lojas do mesmo dono num só painel na OficinaOS Cloud |
| Remarketing WhatsApp | Mensagem automática a clientes com consentimento cuja última reparação já foi há algum tempo |
Preços
A app completa é gratuita e open source (MIT) — sem limites, sem contas, sem período de teste. Para sempre.
Os módulos Pro estão em beta: durante este período, as lojas piloto usam-nos gratuitamente enquanto medimos o valor real que trazem ao balcão. Quando os preços forem anunciados serão subscrições mensais simples — sem fidelização e sem custos escondidos.
* Nota WhatsApp: responder a clientes dentro da janela de 24h é grátis. Para notificações proativas («está pronta») fora dessa janela, a Meta cobra pequenos valores por mensagem modelo — custo da Meta, não nosso.
| O quê | Estado | Preço |
|---|---|---|
| App completa (core) | Grátis para sempre | 0 € |
| OficinaOS Diag (ferramenta) | Grátis para sempre | 0 € |
| Portal do cliente | Disponível (beta) | A anunciar — grátis no beta |
| Bot de WhatsApp | Disponível (beta) | A anunciar — grátis no beta* |
| Canal SMS (gateway Android) | Incluído no core | 0 € — grátis |
| Receção de diagnósticos | Disponível (beta) | A anunciar — grátis no beta |
| Relatórios IA | Disponível (beta) | A anunciar — por relatório |
| Faturação (InvoiceXpress) | Disponível (beta) | A anunciar — grátis no beta. A conta InvoiceXpress é da loja e tem o custo próprio do serviço deles |
| Montra online (+ personalização) | Disponível (beta) | A anunciar — grátis no beta |
| Procuro-peça | Disponível (beta) | A anunciar — grátis no beta |
| Preços de mercado | Disponível (beta) | A anunciar — grátis no beta |
| Multi-loja | Disponível (beta) | A anunciar — grátis no beta |
| Remarketing WhatsApp | Disponível (beta) | A anunciar — grátis no beta. As mensagens modelo têm o custo da Meta* |
Portal do cliente (Pro)
Com o módulo ativo, cada reparação ganha um botão «Public link» na página de detalhe. Ao clicar, a app publica na Cloud um snapshot redigido do trabalho — estado, dispositivo, orçamento, prazo e timeline — e copia o link.
O link é segredo por trabalho (um código aleatório de 16 caracteres): quem o tem vê a página. Envia-se ao cliente por SMS, WhatsApp ou impresso no registo. A página atualiza sozinha quando o estado muda na app.
Se houver um orçamento pendente, o cliente aceita ou recusa diretamente na página — a resposta entra na app pelo fluxo normal de orçamentos, com notificação ao staff.
Bot de WhatsApp (Pro)
O cliente escreve para o número de WhatsApp da loja e o bot responde com dados reais da ficha — sem ninguém pegar no telemóvel. Funciona com o próprio número da loja (o WhatsApp Business do telemóvel continua a funcionar em paralelo).
Notas honestas: a resposta pode demorar até ~2 minutos (ciclo de sincronização); o setup usa a WhatsApp Business Platform oficial da Meta e é assistido por nós na primeira loja.
| O cliente escreve | O bot responde |
|---|---|
| «está pronto?» ou qualquer texto | Estado da reparação + previsão |
| «orçamento» / «preço» | Valor do orçamento + instruções para responder |
| SIM / aceito | Aprova o orçamento pendente (mesmo fluxo do balcão) |
| NÃO / recuso | Recusa o orçamento |
| Código da reparação (REP-…) | Estado desse trabalho |
| «ajuda», áudio ou imagem | Encaminha ao staff com aviso na app |
Canal SMS (grátis no core)
O mesmo assistente automático, mas por SMS — para lojas que não querem (ou ainda não têm) a conta empresarial da Meta. Um telemóvel Android com SIM fica na loja a fazer de ponte: a app envia e recebe SMS através dele, pela rede móvel normal. É gratuito e não precisa de Cloud — tudo acontece na rede da loja.
Sem contas Meta, sem aprovações de modelos e sem custo por mensagem — só o tarifário do SIM da loja (cartões com SMS incluídos tornam o custo marginal zero). O setup são ~5 minutos e está explicado passo a passo no guia.
Diagnósticos enviados por clientes (Pro)
A ferramenta oficinaos-diag é gratuita para qualquer pessoa: o cliente descarrega, liga o telemóvel ao PC por cabo e o programa lê bateria, ecrã, sensores e armazenamento.
Com o módulo ativo, a loja recebe esses diagnósticos diretamente na app (fila de pedidos), prontos a converter em reparação — o cliente só precisa do código da loja. O módulo de relatórios IA transforma os dados técnicos num texto simples para entregar ao cliente.
Faturação certificada (Pro)
A app emite documentos fiscais legais diretamente da venda ou da reparação — fatura-recibo quando o cliente tem NIF, fatura simplificada quando não tem. A emissão é feita via InvoiceXpress com a conta da própria loja: a chave API fica guardada encriptada no PC da loja e a app fala diretamente com o InvoiceXpress — a OficinaOS Cloud só controla o acesso ao módulo, nunca vê os documentos. Só para lojas em Portugal.
Montra, procuro-peça, preços, multi-loja e remarketing (Pro)
Mais cinco módulos Pro, todos em beta e ativados na conta OficinaOS Cloud. Cada um tem um guia curto:
| Módulo | Para quê |
|---|---|
| Montra online | Página pública com os artigos que escolher do catálogo — o cliente reserva e o pedido aparece em Pedidos |
| Procuro-peça | Pedir uma peça às outras lojas OficinaOS ou responder aos pedidos delas |
| Preços de mercado | Ver a mediana anónima dos preços de outras lojas ao lado dos seus |
| Multi-loja | Painel com a receita e as reparações de todas as suas lojas |
| Remarketing WhatsApp | Mensagem automática a clientes que não voltam há algum tempo |
Problemas comuns
As situações mais frequentes e a resolução de cada uma:
| Sintoma | O que fazer |
|---|---|
| SmartScreen avisa ao instalar | «Mais informações» → «Executar mesmo assim» — é um ficheiro novo sem reputação, não um vírus |
| «Virtualization support not detected» | O instalador oferece as duas opções: ativar na BIOS ou usar o modo portátil |
| O Windows pede para reiniciar durante a instalação | Reiniciar e correr INSTALAR.bat outra vez — é normal na instalação do Docker |
| Firewall do Windows pergunta | Escolher «Permitir» em rede privada |
| Página em branco / não abre | Ctrl+F5; confirmar que o endereço é http:// (não https://) |
| «Invalid username or password» | O login é por utilizador (admin), não por email |
| O PC mudou de IP e os outros dispositivos não ligam | Atualizar APP_URL no .env (Docker) ou apagar .env e correr INSTALAR.bat de novo |
| Porta 4000 ocupada (portátil) | Mudar PORT em app\.env |
| Postgres não arranca (portátil) | Ver data\postgres.log; porta 5433 ocupada → mudar em data\postgresql.conf e no .env |
| Desinstalar tudo | PARAR.bat + apagar a pasta (modo portátil); docker compose down -v + apagar a pasta (Docker). Atenção: apaga a base de dados — fazer backup antes |
Perguntas frequentes
As dúvidas que ouvimos mais vezes:
| Pergunta | Resposta |
|---|---|
| Preciso de internet? | Não para o uso diário — a app corre toda na rede da loja. Só para atualizações e módulos Pro. |
| Os dados dos clientes vão para algum servidor? | Não por defeito — a app não tem telemetria. Com módulos Pro, a OficinaOS Cloud recebe só os dados de que cada módulo precisa (por exemplo, páginas do portal, mensagens, reservas e diagnósticos enviados), nunca custos internos nem notas internas. O detalhe está na política de privacidade da Cloud (cloud.oficinaos.app/privacy). |
| Funciona no telemóvel? | Sim — na Wi-Fi da loja qualquer aparelho abre no browser; fora da loja com o acesso remoto (Cloudflare Tunnel). |
| O cliente tem de instalar alguma coisa? | Não — o portal abre num link no browser; o bot responde no WhatsApp normal dele. |
| Quanto custa? | A app completa é gratuita (licença MIT). Os módulos Pro são subscrições opcionais em beta. |
| Várias lojas / filiais? | Cada loja tem a sua instalação. Com o módulo Pro Multi-loja, o dono vê a receita e as reparações de todas as lojas num só painel na OficinaOS Cloud. |
| E se o PC avariar? | Backups diários automáticos; restaurar noutro PC é copiar o backup e correr o instalador. |
| Mac ou Linux? | Sim, via Docker manual — o instalador automático é só Windows. |
| Dá para importar dados de outro sistema? | Clientes e catálogo por CSV; contacte-nos para migrações assistidas. |
Documentação completa
Este guia cobre o essencial. O repositório no GitHub tem a documentação técnica completa — instalação detalhada, acesso remoto, telemóveis, backups com cópia externa e o funcionamento interno do pacote portátil: