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
Gestão do viveiro: cadastros, produção e pedidos.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @JoaoMudarOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Sistema integrado de gestão para um viveiro de mudas nativas no Alto Vale do Itajaí (SC). Área de ~10.000 m², equipe de 9 pessoas e venda no atacado via WhatsApp. O sistema tem três áreas de negócio, Cadastro único, Produção e Comercial, com Acesso e Configurações atravessando as três, e é operado por três pessoas: chefia, gerência e administrador. O foco é trocar o "tudo de cabeça" por dados estruturados, com interfaces extremamente simples e mobile-first: os usuários finais não são técnicos e o celular é o dispositivo principal de uso no campo.Read the full README ↗
Sistema integrado de gestão para um viveiro de mudas nativas no Alto Vale do Itajaí (SC). Área de ~10.000 m², equipe de 9 pessoas e venda no atacado via WhatsApp.
O sistema tem três áreas de negócio, Cadastro único, Produção e Comercial, com Acesso e Configurações atravessando as três, e é operado por três pessoas: chefia, gerência e administrador.
O foco é trocar o "tudo de cabeça" por dados estruturados, com interfaces extremamente simples e mobile-first: os usuários finais não são técnicos e o celular é o dispositivo principal de uso no campo.
| Camada | Tecnologia |
|---|---|
| Frontend | Next.js 16 (App Router) + React 19 + Tailwind CSS |
| Backend | Server Actions com SQL direto (pool.query) |
| Banco de dados | PostgreSQL: local em dev, Neon (cloud) na produção/Vercel; driver escolhido pelo host |
| Autenticação | Sessão própria por cookie (scrypt + tokens SHA-256) |
| Mobile | PWA (manifest + service worker, fila de sync offline) |
| Linguagem | TypeScript |
| Testes | Vitest: unitários e suíte contra Postgres real (test:db) |
Pré-requisitos: Node.js 20+ e um PostgreSQL local acessível (ex.: instância do pgAdmin).
Na produção (Vercel) o banco é o Neon: basta apontar a DATABASE_URL de cada ambiente;
o driver certo é escolhido automaticamente pelo host (*.neon.tech → driver serverless).
# 1. Instalar dependências
npm install
# 2. Configurar a conexão com o banco local (.env.local)
echo 'DATABASE_URL=postgresql://postgres:<senha>@localhost:5432/viveiro' > .env.local
# 3. Rodar as migrações
npm run db:migrate
# 4. Criar o primeiro administrador (a senha provisória aparece uma vez)
npm run db:seed-admin -- --login admin --nome "Administrador"
# 5. Subir o ambiente de desenvolvimento
npm run dev
A aplicação fica disponível em http://localhost:3000. O login é exigido em todas as rotas
(o middleware redireciona para /login).
| Comando | Descrição |
|---|---|
npm run dev | Servidor de desenvolvimento |
npm run build | Aplica as migrações pendentes e faz o build |
npm run build:app | Só o build, sem tocar no banco |
npm start | Servidor de produção |
npm run lint | ESLint |
npm run typecheck | Gera os tipos de rota do Next e roda o tsc |
npm test | Testes unitários (Vitest) |
npm run test:db | Recria o banco de TEST_DATABASE_URL e testa contra ele |
npm run db:migrate | Aplica migrações pendentes |
npm run db:migrate:status | Mostra aplicadas e pendentes, sem escrever |
O npm install ativa o hook de pre-commit (.githooks/pre-commit): varredura de segredos, lint e
testes. O CI (.github/workflows/ci.yml) roda o mesmo, mais typecheck e test:db com Postgres 17.
sa-east-1) e copiar a URL de conexão
com pooler (...-pooler.sa-east-1.aws.neon.tech/neondb?sslmode=require).DATABASE_URL com a URL do Neon, marcada só em
Production.npm run build aplica as migrações pendentes antes do next build: se uma falhar,
a publicação para e a versão anterior continua no ar.
Publicação de preview pula as migrações, para nunca mexer no banco de produção.master exigindo o check verificar do CI: é
isso que bloqueia PR com teste quebrado.migrations/ Migrações SQL (psql puro), aplicadas em ordem cronológica
scripts/ migrate.ts, seed-admin.ts, geração de ícones, hooks de git
src/
app/ Rotas (App Router), organizadas pelas três áreas
cadastros/ 1 · Espécies, recipientes, insumos, pessoas, tipos de tarefa, protocolos
producao/ 2 · Ainda sem tela: agenda, lotes, protocolo e mapa
pedidos/ 3 · Cadastro de pedidos
clientes/ fornecedores/ 1 · As telas de cada papel da mesma pessoa
configuracoes/ Período de trabalho e parâmetros do sistema
admin/ Usuários e sessões
login/ logout/ conta/ trocar-senha/ Fluxo de autenticação
api/ Endpoints (notificações, fotos de espécie)
components/ Componentes compartilhados (Toast, Autocomplete, sino de notificações)
lib/ db, auth, orders, permissions, modules, offline-queue, utilitários
middleware.ts Proteção de rotas por sessão
São três papéis, e correspondem às três pessoas que operam o sistema:
Não há perfil de campo. Os seis colaboradores do viveiro não operam o sistema: o trabalho deles é planejado e confirmado pela gerência. Eles existem em
pessoas_papeiscom o papelfuncionario, que diz esta pessoa trabalha aqui e não implica acesso. A matriz completa está emsrc/lib/permissions.ts.
As telas de Cadastro único, Produção e Comercial ainda não existem: o modelo de dados está no banco, e as fases seguintes constroem as telas.
Quatro fases, e a ordem importa.
Fase 1 (acesso e cadastro) ─┬─> Fase 2 (lotes) ─┬─> Fase 4 (mapa e pedido)
└─> Fase 3 (agenda e protocolo) ─┘
A Fase 1 bloqueia tudo: a agenda escala pessoas, o lote referencia espécie e canteiro, e o pedido referencia pessoa. O mapa é o último a funcionar, porque depende das duas fontes de pendência, a atribuição lançada à mão e a ordem gerada pelo protocolo.
.sql em migrations/ (compatível com psql puro),
manter compatibilidade retroativa e ser documentada.localhost) e Neon (cloud) na produção/Vercel.DATABASE_URL; pool singleton em src/lib/db.ts. O driver é escolhido pelo
host da URL: *.neon.tech → @neondatabase/serverless; qualquer outro → pg
(mesmo critério de scripts/migrate.ts). Importar como import pool from '@/lib/db'.
Nunca usar o pool no lado cliente.snake_case no plural (ex.: especies, eventos_perda).feat(pedidos): adiciona separação por cargas).*.test.ts em __tests__/).
O pre-commit hook roda lint e testes: commits são bloqueados se algo falhar.