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
Serv by Tareo — Gestão operacional para empresas de serviços
Translation pending
BusinessTypeScript · PLpgSQLGitHub @mikecqsOnlineOwner 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.
FieldService — aplicação real (Next.js + Supabase) Esqueleto funcional multi-empresa (SaaS), com autenticação real e permissões aplicadas na base de dados, não só na interface. O que já está feito e a funcionarRead the full README ↗
Esqueleto funcional multi-empresa (SaaS), com autenticação real e permissões aplicadas na base de dados, não só na interface.
requireRole() nos
layouts + RLS): SUPER_ADMIN, ADMIN, TECHNICIAN, FINANCE./super-admin): criar empresas novas e o primeiro Admin
de cada uma./admin/*): dashboard com números reais, e módulo de
Clientes completo (listar, criar, ver detalhe com histórico) — este é
o padrão de referência para os restantes módulos./tecnico/*): agenda com os serviços atribuídos, iniciar
serviço, e terminar com "Concluído" / "Precisa de nova visita" / "Não foi
possível realizar" — tudo através de funções seguras (RPC) que nunca dão
ao técnico acesso de escrita direto às tabelas administrativas.supabase/schema.sql: esquema completo (todas as tabelas do briefing:
clientes, pedidos, orçamentos, serviços, visitas, materiais, compras,
faturação) com RLS multi-tenant e a view segura para técnicos.Pedidos, Agenda (vista de calendário), Serviços (detalhe admin com
agendamento e faturação), Orçamentos (com itens e cálculo de IVA),
Materiais, Compras, Faturação, Relatórios, Utilizadores, Configurações —
todos seguem exactamente o padrão do módulo Clientes: uma page.tsx como
Server Component a fazer supabase.from(...).select(...), e um
actions.ts com Server Actions para escrita. Como o schema e a RLS já
existem para todas estas tabelas, portar cada módulo é sobretudo repetir
este padrão.
supabase/schema.sql para lá e corre (Run).Authentication → Users → Add user — cria o teu login (email + password).
Copia o User UID que aparece.
Volta ao SQL Editor e corre (substitui os valores):
insert into profiles (id, organization_id, role, nome, email)
values ('COLA-AQUI-O-UUID', null, 'SUPER_ADMIN', 'O Teu Nome', '[email protected]');
.env.local.example para .env.local.Project URL → NEXT_PUBLIC_SUPABASE_URLanon public key → NEXT_PUBLIC_SUPABASE_ANON_KEYservice_role key → SUPABASE_SERVICE_ROLE_KEY (esta é secreta —
nunca a exponhas no código do browser nem a partilhes)npm install
npm run dev
Abre http://localhost:3000 → entra com o teu login de Super Admin →
/super-admin → cria a primeira empresa → cria o Admin dessa empresa →
sai (Sair) → entra com esse login de Admin para testares o fluxo normal.
.env.local nas
definições do projeto Vercel (Settings → Environment Variables).middleware.ts): corre no servidor antes de qualquer
página, mas só verifica se existe sessão (cookie) — redireciona para
/login quem não tem sessão nenhuma. A validação real da role de cada
utilizador é feita por requireRole() (lib/auth.ts), chamada nos
layout.tsx de /admin, /tecnico, /super-admin e /financeiro, que
correm em Node.js normal e confirmam a role em profiles antes de
deixar passar.schema.sql): mesmo que o middleware falhasse, a
própria base de dados recusa devolver ou aceitar dados fora do que cada
papel pode ver. É a barreira que conta a sério.services_technician_view e afins): o técnico
nunca lê a tabela services diretamente — só uma vista com as colunas
necessárias para o trabalho no terreno (sem valor, sem faturação, sem
margens).tech_start_service,
tech_finish_visit): o técnico não tem UPDATE na tabela services —
só estas duas funções, muito específicas, com as suas próprias validações,
conseguem mudar o estado de um serviço, e só do serviço que lhe está
atribuído.