Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Orçamentos da AA Montagens. Funciona sem internet.
Translation pending
BusinessTypeScript · CSSGitHub @AlexandreAndradeSilvaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Orçamentos da AA Montagens — app local-first, sem servidor. Feito a partir da planilha da empresa.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
App de orçamentos da AA MONTAGENS (Birigui/SP), feito a partir da planilha que a empresa usava. Funciona no navegador, no computador ou no celular. Os dados ficam na nuvem da AA Montagens (Firebase — Firestore, na conta Google da empresa) e aparecem em qualquer aparelho em que você entrar com o e-mail e a senha da oficina. Precisa de internet.Read the full README ↗
App de orçamentos da AA MONTAGENS (Birigui/SP), feito a partir da planilha que a empresa usava.
Funciona no navegador, no computador ou no celular. Os dados ficam na nuvem da AA Montagens (Firebase — Firestore, na conta Google da empresa) e aparecem em qualquer aparelho em que você entrar com o e-mail e a senha da oficina. Precisa de internet.
No ar: https://alexandreandradesilva.github.io/orcamentos-aa-montagens/
Publica sozinho a cada alteração na main (GitHub Actions → GitHub Pages). O endereço é público, mas sem login só existe a tela de entrar: quem pode ler e gravar é decidido no servidor, por firestore.rules. Como o projeto na nuvem foi montado, e como dar acesso a mais alguém: docs/nuvem.md.
Precisa do Node.js 20 ou mais novo.
npm install # uma vez
npm run fontes:copiar # uma vez: copia as fontes para public/fontes
npm run dev # abre em http://localhost:5173
npm run build # gera a pasta dist/
npm run preview # abre a versão final para conferir
A pasta dist/ é o app inteiro. Pode ser copiada para um pendrive, para uma pasta na rede ou para qualquer hospedagem de arquivos estáticos. Não precisa de banco de dados nem de servidor.
Para publicar na internet e restringir o acesso, veja docs/publicar.md. Resumo: nenhum dado de cliente vai para o servidor — só o código —, e a proteção certa é no servidor (Cloudflare Access, grátis), nunca uma tela de login dentro do app, que num app só de navegador é teatro.
Funciona no navegador do celular, e dá para adicionar à tela de início (menu do Chrome ou Safari → "Adicionar à tela de início"): abre em tela cheia, com o ícone da AA Montagens, parecendo app.
Abaixo de 720px o layout muda de forma: cada item do orçamento vira um cartão (descrição inteira em cima; quantidade, unidade e valor embaixo), as listas viram cartões e a navegação vai para o pé da tela, onde o polegar alcança. Tudo o que é tocável tem no mínimo 44px.
Para ver o app já com dados sem digitar nada: na lista vazia, Ver com dados de exemplo — ou abra …/orcamentos?exemplo. Só entra com o banco vazio; nunca sobrescreve orçamento de verdade.
No celular e no computador você vê os mesmos orçamentos: é a mesma conta, o mesmo banco. Se cair a internet, o app avisa numa faixa no topo e não finge que salvou — quando voltar, salve de novo.
Orçamentos → Novo orçamento. Escolha um cliente já cadastrado ou preencha um novo. O número é reservado na hora, no formato 001/2026, e reinicia a cada ano.
Só o nome é obrigatório; o resto (CNPJ/CPF, endereço, cidade, CEP, telefone, pessoa de contato) sai no PDF e pode ser completado depois em Clientes → Editar.
Digitando um CNPJ completo, o botão Buscar puxa razão social, endereço, cidade, CEP e telefone da Receita Federal (via BrasilAPI). Preenche só o que está em branco — não atropela o que você já digitou.
Há o mesmo botão no CEP, que traz rua, bairro e cidade.
CPF não tem busca, e não é limitação do app: não existe cadastro público de pessoa física por CPF no Brasil, e não deveria existir — é dado pessoal protegido pela LGPD. Cliente pessoa física se preenche à mão; o app valida os dígitos para pegar erro de digitação.
Sem internet, as buscas avisam e você preenche à mão. Nada mais no app depende da internet.
Quem vem do Excel não precisa reaprender nada:
| Tecla | O que faz |
|---|---|
Tab / Shift+Tab | Próximo campo / anterior |
Enter | Confirma e cria uma linha abaixo |
Ctrl+D | Duplica a linha |
↑ ↓ | Sobe e desce mantendo a coluna |
Alt+↑ / Alt+↓ | Move a linha de lugar |
Ctrl+Enter | Cria uma seção |
Ctrl+V | Cola direto da planilha — várias linhas, colunas separadas por tabulação |
Esc | Cancela a edição da célula |
Valores podem ser digitados como você quiser: 25.600,00, 25600,5 ou 25600.50.
Ao digitar a descrição, aparecem os serviços que você já orçou. Escolher um traz junto a unidade e o último valor praticado — mas não sobrescreve o que você já tiver digitado. Setas escolhem, Enter aceita, Esc fecha.
Na unidade, o campo sugere as que estão em Configurações, sem impedir de digitar uma nova.
O × no fim de cada linha remove aquela linha.
Marque preço fechado no cabeçalho de uma seção quando várias frentes de serviço tiverem um preço só — como no orçamento da Igreja Portal Pérola 2, em que fachada alta, fachada baixa e os dois pergolados fecharam em R$ 25.600,00 juntos.
Com o preço fechado ligado, as quantidades e valores das linhas de dentro ficam informativos e não somam.
Uma linha com descrição mas sem quantidade ou sem valor mostra —— na coluna TOTAL e não entra na conta. É assim que a planilha registrava observações, e continua sendo — a seção "DAS OBSERVAÇÕES" é só uma seção sem preço.
Exportar PDF — na tela do orçamento e na lista. Gera orcamento-001-2026-nome-do-cliente.pdf, com texto selecionável e leve (~32 KB).
Enviar no WhatsApp — gera o PDF e envia junto com o resumo:
Detalhe fora do nosso controle: ao compartilhar arquivo, o WhatsApp do iPhone às vezes leva só o PDF e descarta o texto. É comportamento do sistema.
Os dados vivem na nuvem, então limpar o navegador ou trocar de aparelho não perde nada. O backup continua existindo como cópia extra em arquivo — para guardar por garantia, ou para levar os dados para outro sistema um dia.
A versão anterior guardava tudo no navegador do aparelho. Na primeira vez que você entrar com a nuvem ainda vazia, a lista mostra "Encontrei orçamentos guardados neste aparelho" com um botão Trazer para a nuvem — um clique e vem tudo (orçamentos, clientes, catálogo e a numeração). Se a nuvem já tiver dados, a oferta não aparece; aí o caminho é exportar o backup na versão antiga e importar aqui.
Configurações → Backup → Exportar backup. Baixa um arquivo backup-aa-montagens-2026-09-09.json com tudo: configurações, clientes, serviços e orçamentos.
Configurações → Backup → Importar backup e escolha o arquivo. O conteúdo é conferido antes de entrar — arquivo estragado é recusado inteiro, e não pela metade.
Por padrão o backup é mesclado com o que já existe (o arquivo vence em caso de conflito de id).
A planilha original não tinha tabela de preços. Por isso o catálogo se monta sozinho: toda descrição salva num orçamento entra em Serviços, com o último preço praticado como referência e a contagem de quantas vezes foi usada.
Não há o que "atualizar" à mão — é só orçar. Para corrigir uma descrição, corrija-a no orçamento e salve; a versão nova passa a valer.
É esse catálogo que alimenta as sugestões na coluna de descrição. Excluir um serviço da lista só o tira das sugestões: os orçamentos que já o usaram continuam iguais, e ele volta se for orçado de novo.
Se um dia existir uma tabela de preços de verdade em planilha, dá para importá-la — mas isso ainda não foi construído, porque não havia o que importar.
Tudo o que sai no PDF é editável em Configurações: razão social, CNPJ, inscrição estadual, endereço, telefones, quais números são WhatsApp, e-mail e site.
Também ficam ali:
Na ordem exata da planilha, com o desconto acrescentado:
TOTAL DOS SERVIÇOS = soma dos itens e dos blocos fechados
+ ACRÉSCIMO NOTA FISCAL
TOTAL
− DESCONTO (em reais, sem teto)
TOTAL A PAGAR ← o número do orçamento
Entrada sugerida (30% do total a pagar; pode ser digitada) só informa
Restante após a entrada (total a pagar − entrada) só informa
A entrada não abate do total: ela e o restante aparecem abaixo do total, como informação da condição de pagamento.
O desconto não tem limite: se passar do total, o app não corta o valor — mostra um aviso em vermelho e deixa a decisão com você.
Dinheiro é sempre inteiro em centavos, nunca número quebrado, e o arredondamento é HALF_UP no total de cada linha — o mesmo resultado que aparece na tela do Excel.
Uma diferença em relação à planilha, de propósito: a planilha trazia entrada 0 digitada à mão e subtraía a entrada no "A PAGAR". O app sugere 30% e não subtrai: o total é o mesmo do papel, e a entrada com o restante saem como informação. Detalhes em docs/paridade.md.
npm test # 117 testes
npm run lint
npm run format
npm run build # sem warnings
| Comando | O que faz |
|---|---|
npm run fontes:copiar | copia os TTF dos pacotes npm para public/fontes |
npm run casos:extrair | relê a planilha e regenera os casos de paridade |
npm run pdf:exemplo | gera exemplos/orcamento-001-2026-....pdf |
src/domain/ cálculo puro — zero React, zero I/O. É onde a regra mora.
src/dados/ a interface Repositorio, as implementações (memória, Dexie) e o backup
src/estado/ zustand: o orçamento em edição
src/telas/ as rotas e a grade densa
src/pdf/ o documento em @react-pdf/renderer
src/formato.ts todo o Intl do app, num módulo só
tools/ scripts de apoio (leitura da planilha, logo, contraste)
docs/ a auditoria da planilha e as decisões, fase por fase
| Arquivo | Sobre |
|---|---|
docs/mapeamento.md | a planilha célula a célula, e 11 anomalias |
docs/regras-de-negocio.md | as fórmulas traduzidas em regra |
docs/PERGUNTAS.md | o que ficou em aberto |
docs/decisoes.md | D1–D9, as respostas confirmadas |
docs/direcao-visual.md | paleta, tipografia, o desenho da tela |
docs/logo.md | a vetorização da marca |
docs/arquitetura.md | as camadas e por quê |
docs/paridade.md | a conferência contra a planilha |
docs/pdf.md | o PDF e o WhatsApp |
wa.me só carrega texto; no celular vai pela folha de compartilhamento.docs/paridade.md §6.docs/publicar.md| hospedar e controlar quem acessa |