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 condominial com transparência total: ordens de serviço, registro visual e aprovações.
Translation pending
BusinessTypeScript · JavaScriptGitHub @kreativaeConnection unstableOwner 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.
Plataforma de gestão condominial com transparência total: ordens de serviço com registro visual de antes e depois, validação do zelador, aprovação do síndico e feed público para moradores. Status: MVP da Fase 1 (núcleo de OS, dashboards, feed, usuários, multi-condomínio, auditoria). Banco: PostgreSQL no Neon, provisionado pela integração Neon do Vercel Marketplace (projeto Vercel kreativae-projetos/condtrack).Read the full README ↗
Plataforma de gestão condominial com transparência total: ordens de serviço com registro visual de antes e depois, validação do zelador, aprovação do síndico e feed público para moradores.
Status: MVP da Fase 1 (núcleo de OS, dashboards, feed, usuários, multi-condomínio, auditoria).
Banco: PostgreSQL no Neon, provisionado pela integração Neon do Vercel Marketplace
(projeto Vercel kreativae-projetos/condtrack).
npm install
vercel env pull .env.local --yes # traz DATABASE_URL / DATABASE_URL_UNPOOLED do Neon
npm run db:migrate # aplica prisma/migrations
npm run db:seed # dados de demonstração
npm run dev # http://localhost:3000
Os scripts db:* leem .env.local e .env (via dotenv-cli), porque o Prisma CLI não lê .env.local.
Alterou o schema? npm run db:migrate:dev -- --name descricao cria uma nova migração.
No deploy, npm run build roda prisma migrate deploy antes do next build.
Variáveis de ambiente do projeto:
| Variável | Obrigatória | Observação |
|---|---|---|
DATABASE_URL | sim | PostgreSQL (Neon). A integração Neon da Vercel cria automaticamente. |
DATABASE_URL_UNPOOLED | não | Conexão direta para migrações; se ausente, usa DATABASE_URL. |
AUTH_SECRET | sim | openssl rand -base64 32. Sem ela o login não funciona. |
BLOB_STORE_ID ou BLOB_READ_WRITE_TOKEN | sim, em produção | Fotos e vídeos das OS no Vercel Blob (privado). Criado ao conectar um Blob store ao projeto (Storage → Create → Blob); o formato novo usa BLOB_STORE_ID + OIDC. Sem ele, usa o disco local (./storage), que não persiste na Vercel. |
SETUP_TOKEN | só na instalação | Código (mín. 12 caracteres) para criar a conta de superadmin em /primeiro-acesso quando o banco não tem nenhum. Remova depois. |
SEED_ON_DEPLOY | não | true roda o seed de demonstração apenas se o banco estiver sem usuários. Remova após o primeiro deploy. |
O build (npm run build) aplica as migrações pendentes via scripts/migrate.mjs.
Contas de demonstração (senha condtrack123):
| Perfil | |
|---|---|
| Superadmin | [email protected] |
| Síndico | [email protected] |
| Zelador | [email protected] |
| Prestador (pintura) | [email protected] |
| Prestador (elétrica) | [email protected] |
| Conselho | [email protected] |
| Morador (somente visualização) | [email protected] |
| Perfil | Código | O que faz |
|---|---|---|
| Superadmin | superadmin | Tudo, em todos os condomínios |
| Síndico | syndic | Gestão completa do condomínio, atribui e aprova OS |
| Zelador | caretaker | Registra ocorrências e valida serviços |
| Prestador | provider | Executa OS atribuídas, anexa antes/depois |
| Conselho | council | Abre solicitações, acompanha as suas, comunicados e feed |
| Morador | resident | Somente visualização: dashboard e feed de serviços entregues |
Next.js 16 (App Router, Server Actions, proxy.ts) · React 19 · Tailwind CSS 4 · Prisma 6 + PostgreSQL (Neon) ·
Zod · jose (JWT em cookie httpOnly) · bcryptjs · Recharts · Lucide.
open ─► assigned ─► in_progress ─► completed ─► validated ─► approved (feed)
(síndico) (prestador, (prestador, (zelador) (síndico)
exige ANTES) exige DEPOIS)
│ │
└── rejected ◄─┘ (devolvida com motivo → prestador retoma)
Todas as regras de transição e visibilidade ficam em src/lib/workflow.ts (can() / canView()),
usadas tanto pela UI quanto pelas server actions — a UI nunca é a única barreira.
prisma/schema.prisma modelo de dados (Condomínio, Torre, Unidade, Usuário, OS, Mídia, Evento, …)
prisma/seed.ts dados de demonstração
src/proxy.ts redireciona não autenticados (checagem otimista)
src/lib/auth.ts sessão, requireUser(), "visualizar como" (impersonate)
src/lib/workflow.ts máquina de estados da OS + permissões por papel
src/lib/notify.ts notificações in-app (ponto de extensão p/ push/e-mail)
src/lib/audit.ts log de auditoria (IP, user-agent, antes/depois)
src/lib/storage.ts mídias: Vercel Blob privado (produção) ou disco local (dev)
src/app/actions/* server actions (auth, OS, admin, comunicados)
src/app/api/upload upload de mídia (1 arquivo/req, com checagem de permissão)
src/app/api/media entrega de mídia autenticada
src/app/(app)/… páginas autenticadas por perfil
src/components/ design system (ui.tsx), slider antes/depois, uploader, gráficos
Cobrança recorrente por condomínio, em BRL, via Stripe (integração do Vercel Marketplace).
lookup_key condtrack_<plano>_<month|year>)./assinatura): assinar via Stripe Checkout, trocar de plano/periodicidade (com proration), cancelar no fim do período ou reativar, trocar cartão e dados de cobrança no Portal do Cliente, histórico de faturas com PDF./admin/assinaturas): MRR, ARR, recebido em 30 dias, pagantes / em teste / inadimplentes / cancelados, receita mensal, condomínios por plano, lista completa com último pagamento e próxima cobrança; detalhe por condomínio com troca de plano, cancelamento e link para o Stripe./api/stripe/webhook (idempotente). Eventos: checkout.session.completed, customer.subscription.created|updated|deleted|trial_will_end, invoice.finalized|paid|payment_failed|voided|marked_uncollectible. Falha de pagamento notifica síndico e superadmins.Em dev, para receber webhooks: stripe listen --forward-to localhost:3000/api/stripe/webhook e use o segredo exibido em STRIPE_WEBHOOK_SECRET.
/admin/configuracoes centraliza as APIs da plataforma. Valores ficam na tabela Setting, cifrados com AES-256-GCM (SETTINGS_ENCRYPTION_KEY ou derivado do AUTH_SECRET). Ordem de leitura: valor salvo → variável de ambiente → padrão.
after()), e convite/redefinição de senha com a senha provisória.pg_stat_activity (por estado, por aplicação, sessões mais longas, uso vs. max_connections).@simplewebauthn): ativar/desativar, nome exibido, domínio (RP ID) e origens. Cada usuário cadastra aparelhos em Meu perfil; o login mostra "Entrar com Face ID / biometria". Exige HTTPS em produção.| Item | Observação |
|---|---|
| 2FA síndico/superadmin | Fase 1 restante. |
| Push / e-mail / WhatsApp | Plugar em src/lib/notify.ts. |
| Fase 2 | Documentos, reservas de áreas comuns, chat, inspeções/rondas persistidas, manutenção preventiva, relatórios PDF/Excel. |
| Fase 3 | App mobile (Expo), modo offline. |
| Logo por condomínio | Hoje só a cor de destaque é configurável. |
| Testes E2E | Playwright cobrindo o fluxo completo da OS. |