Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.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.