Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
NTECH 현장 관리: 사진·GPS, 현장 일지, 일정, 측정, 가치추가분석·위험 관리
Gestão de obras da NTECH: ponto com foto e GPS, diário de obra, cronograma, medições, análise de valor agregado e riscos.
비즈니스TypeScript · CSSGitHub @ntechcontatoadministrativo-web온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗cp .env.example .env # preencha NEXTAUTH_SECRET, ENCRYPTION_KEY e HASH_KEY (openssl rand -hex 32)
bash scripts/preparar-migrations.sh # sobe o Postgres, instala e gera prisma/migrations
npm run db:seed # dados de demonstração
npm test # testes unitários
npm run dev # http://localhost:3000
Logins de demo (senha Demo@12345): dono@, engenheiro@, encarregado@, fiscal@, cliente@, compras@ demo.com.
| Peça | Arquivo |
|---|---|
| Schema completo (13 módulos) | prisma/schema.prisma |
| Login (bcrypt, bloqueio, 2FA TOTP opcional) | src/lib/auth/options.ts |
| Matriz de permissões (5 perfis) | src/lib/auth/permissions.ts |
| Acesso por obra (anti-IDOR) | src/lib/auth/guard.ts |
| Criptografia CPF/banco (AES-256-GCM) | src/lib/crypto.ts |
| Auditoria sem dados sensíveis | src/lib/audit.ts |
| Raio GPS do ponto, horas extras | src/lib/geo.ts, src/lib/jornada.ts |
| Fluxo de aprovação de compras | src/lib/compras.ts |
| Seed e CI | prisma/seed.ts, .github/workflows/ci.yml |
/api/obras/[id]/... chama exigirPerfilNaObra() e depois assertCan().registrarAuditoria().crypto.ts.Obras (CRUD + painel) → Usuários → Ponto (PWA + câmera + GPS) → Diário → Etapas/Gantt → Compras → Financeiro.
/login (com etapa do código 2FA, quando a conta tiver ativado), menu lateral (desktop) e barra inferior (celular), tema claro/escuro/dashboard: resumo e cartões de cada obra (avanço físico, custo, semáforo do prazo)/obras, /obras/nova (só o dono), /obras/[id] (painel, etapas, mapa, equipe, mudança de situação)/perfil e /perfil/2fa (QR code para o aplicativo autenticador)Para ver: npm install e npm run dev, abrir http://localhost:3000.
/obras/[id]/ponto: bater entrada, almoço e saída; entrada e saída pedem foto (câmera do celular) e GPS*FotoUrl já aceitam URL).prisma db push nem seed de novo./obras/[id]/diario: situação de hoje, dias úteis sem diário concluído (alerta), histórico de 60 dias e gerador de relatório/obras/[id]/diario/AAAA-MM-DD: diário do dia (turno: manhã, tarde ou dia inteiro)
/obras/[id]/diario/relatorio?de=&ate=: relatório do período (máx. 31 dias) para imprimir ou salvar em PDF, com ou sem fotos/obras/[id]/etapas: lista em árvore (etapa > sub-etapa > sub-sub-etapa), Gantt (planejado x realizado, hoje, atrasadas em vermelho), andamento informado direto na lista/obras/[id]/medicoes: fechar medição do período (andamento atual − medição anterior) e boletim para imprimir ou salvar em PDFPrecisa de migração: 20261021200000_compras_pagamentos (chave PIX no fornecedor;
vencimento, favorecido e PIX na despesa). Rode npm run db:deploy antes de subir o código.
/obras/[id]/compras: solicitação (encarregado) → aprovação (engenheiro; acima do
limite da empresa, o dono) → ordem de compra com fornecedor e prazo de pagamento →
enviada → entregue. Na entrega nasce a conta a pagar, com o PIX do fornecedor.
Preço acima da média histórica do material aparece como alerta./pagamentos: todas as obras com o que falta pagar, o vencido e o próximo vencimento;
lista das contas com "Copiar PIX", QR code e "Marcar como paga". Cada conta é uma
Despesa (pagamento nulo = em aberto), então entra no custo real da análise.unpdf),
foto (QR do PIX e código de barras pelo leitor do celular; o resto pelo assistente, se
ASSISTENTE_API_KEY estiver configurada) ou texto colado. PIX e linha digitável são
conferidos pelos dígitos verificadores; a pessoa confere tudo antes de salvar./fornecedores: cadastro com chave PIX.[email protected] no seed): setor de compras, em todas as obras.
Abre pedido, emite e envia a ordem de compra, cadastra fornecedor e registra a entrega;
não aprova e não vê o financeiro. Só o dono cria um Comprador. /compras reúne os
pedidos em aberto de todas as obras (esperando ordem, a caminho, aguardando aprovação).src/lib/voz.ts), sem IA.
Funciona no Chrome/Edge e no Safari do iPhone; no Firefox, digite o comando./obras/[id]/diario/AAAA-MM-DD/rdo — folha A4 no formato de papel
(cabeçalho, clima por turno, mão de obra, equipamentos, serviços, fotos, assinaturas).
?branco=1 gera o modelo vazio para preencher à mão.A pasta prisma/migrations/ precisa existir e estar commitada. Sem ela o
Vercel não tem como criar as tabelas no Neon.
bash scripts/preparar-migrations.sh
git add prisma/migrations && git commit -m "migrations iniciais"
Crie o projeto na região AWS São Paulo (sa-east-1) — não aceite o padrão
dos Estados Unidos: cada consulta atravessaria o continente e o app é usado em
campo, no celular.
Copie as duas strings de conexão. A agrupada tem -pooler no host:
| Variável | String | Para quê |
|---|---|---|
DATABASE_URL | [email protected]/...?sslmode=require&pgbouncer=true&connect_timeout=15 | tempo de execução |
DIRECT_URL | [email protected]/...?sslmode=require | migrations |
Importe o repositório (detecta Next.js sozinho). O vercel.json já fixa a
região gru1, junto do banco.
Variáveis de ambiente, em Production e Preview:
DATABASE_URL = <agrupada do Neon>
DIRECT_URL = <direta do Neon>
NEXTAUTH_URL = https://seu-dominio.vercel.app
NEXTAUTH_SECRET = openssl rand -base64 32
ENCRYPTION_KEY = openssl rand -hex 32
HASH_KEY = openssl rand -hex 32
As duas últimas são irrecuperáveis. Perder
ENCRYPTION_KEYtransforma todo CPF e dado bancário do banco em lixo — não existe recuperação. TrocarHASH_KEYfaz a busca por CPF parar de encontrar os registros antigos. Guarde as duas num cofre antes de subir.
O build do package.json roda prisma migrate deploy && prisma generate && next build — as tabelas são criadas no primeiro deploy.
Nunca rode npm run db:seed em produção: ele cria usuários com a senha
pública Demo@12345. Use o bootstrap, que cria só a empresa real, a
configuração e o primeiro administrador:
EMPRESA_NOME="Construtora X" ADMIN_NOME="Seu Nome" \
ADMIN_EMAIL="[email protected]" ADMIN_SENHA="<12+ caracteres>" \
DATABASE_URL="<direta do Neon>" ENCRYPTION_KEY=... HASH_KEY=... \
npm run db:bootstrap
Entre com esse e-mail e senha. A verificação em duas etapas é opcional: fica em Perfil → Verificação em duas etapas. Quem ativa passa a ter o código pedido no login; quem não ativa entra só com e-mail e senha.
Com dados reais de trabalhador no banco (CPF, foto de rosto, GPS), ative o 2FA pelo menos na conta do dono, que enxerga todas as obras.
*FotoUrl já aceitam URL.NEXTAUTH_URL é fixa, então o login falha nas URLs
geradas por preview. Aponte a Preview para uma URL fixa de homologação ou
teste só em produção.&connection_limit=1 à DATABASE_URL.