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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
CRM básico para gestão de contatos, negócios (pipeline) e tarefas. Front-end estático (sem servidor próprio), mas com dados de verdade num banco Postgres gerenciado pelo Supabase: contatos, negócios, tarefas e estágios do funil ficam disponíveis em qualquer navegador/dispositivo que fizer login, não só no aparelho onde foram criados. Ver seção Banco de dados (Supabase) abaixo. O botão Exportar continua existindo como backup manual em JSON (útil antes de mudanças arriscadas ou para migrar de projeto Supabase); Importar restaura um backup, substituindo tudo que está no banco.查看完整 README ↗
CRM básico para gestão de contatos, negócios (pipeline) e tarefas.
Front-end estático (sem servidor próprio), mas com dados de verdade num banco Postgres gerenciado pelo Supabase: contatos, negócios, tarefas e estágios do funil ficam disponíveis em qualquer navegador/dispositivo que fizer login, não só no aparelho onde foram criados. Ver seção Banco de dados (Supabase) abaixo.
O botão Exportar continua existindo como backup manual em JSON (útil antes de mudanças arriscadas ou para migrar de projeto Supabase); Importar restaura um backup, substituindo tudo que está no banco.
Tela de login com dois usuários fixos, definidos em app.js:
| Usuário | Senha |
|---|---|
matheus | m4t123 |
paulo | 123456 |
A sessão fica salva no localStorage até clicar em Sair. As senhas são
comparadas por hash (SHA-256), então não aparecem em texto puro no código —
mas isso não é segurança de verdade: é só uma trava de acesso para não
deixar o app aberto pra qualquer um. Como é 100% front-end (sem servidor),
qualquer pessoa com acesso ao app.js pode ver os hashes ou pular a
checagem de login direto pelo devtools do navegador. Não use essas
credenciais nem essa tela para proteger dados sensíveis de verdade.
O app carrega a biblioteca @supabase/supabase-js via CDN e se conecta
usando a URL/chave definidas em config.js (a "publishable key" é pública
por design — protegida pelas regras de Row Level Security do banco, não é
segredo). Antes de usar o app pela primeira vez:
supabase/schema.sql
— cria as tabelas contacts, deals, tasks, estagios, os 5 estágios
padrão e as políticas de RLS.config.js.Sem isso, a tela de login mostra "Carregando dados..." e depois um alerta de erro de conexão — é o app avisando que ainda não achou o banco.
Não há build. Sirva a pasta com qualquer servidor estático (não abra
index.html direto com duplo-clique: o fetch para o Supabase e o script
do CDN se comportam melhor servidos por http/https do que por file://):
npx serve .
# ou
python3 -m http.server 8000
Tanto em Contatos quanto em Negócios há um botão Baixar modelo CSV (gera o arquivo com o cabeçalho e uma linha de exemplo) e um botão Importar CSV para subir a planilha preenchida.
nome, empresa, email, telefone, notas. Só nome
é obrigatório. Um contato com o mesmo email de um já cadastrado é
atualizado em vez de duplicado; sem e-mail, sempre entra como novo.titulo, valor, estagio, contato_nome, contato_email. Só titulo é obrigatório. estagio aceita o nome
cadastrado na aba Funil (sem diferenciar acento/maiúsculas) ou o id
interno; se não reconhecer, cai no primeiro estágio da lista. valor
aceita tanto 1500.00 quanto o formato BR 1.500,00. O contato é
resolvido primeiro por contato_email, depois por contato_nome
(comparação exata); se nenhum bater, o negócio é importado sem contato
vinculado., ou ; como separador (detectado automaticamente pelo
cabeçalho) e campos entre aspas, então funciona tanto com CSV exportado
por planilhas em PT-BR quanto no formato "internacional" do modelo.index.html — tela de login, estrutura das telas do app e do modal de
formulário; carrega @supabase/supabase-js via CDN antes de config.js
e app.js.config.js — URL e publishable key do projeto Supabase.supabase/schema.sql — tabelas, seed dos estágios padrão e políticas RLS.style.css — estilos.app.js — login, acesso ao Supabase (carregarDados, uma função
criar/atualizar/excluir por entidade), renderização, regras de cada tela
(CRUD de contatos/negócios/tarefas/estágios, filtros, drag-and-drop do
Kanban) e importação/exportação (backup em JSON, CSV de
contatos/negócios).config.js, no
navegador de qualquer um) acessa a API do banco direto, sem passar pela
tela de login. A proteção de verdade dos dados é a política de RLS no
banco, não essa tela.ganho nem perdido. Se você excluir/renomear esses dois estágios padrão
na aba Funil e criar outros com o mesmo sentido, o Dashboard não vai saber
que eles são "estágios finais" — só afeta o card de resumo, não os dados.