ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
site para eole e ter como adicionar todo o meu trabalho
Translation pending
OtherJavaScript · CSSGitHub @RikoborgesOnlineOwner 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.
App de apoio para trabalho de reconditionnement (recondicionamento) de impressoras e copiadoras: referência de peças, acompanhamento diário de serviço, análise de indicadores e uma visão geral para administradores. Interface em francês (idioma de trabalho), com nomes/legendas em PT/EN nas peças. Roda direto no navegador, sem instalação — é um site estático (HTML + CSS + JS puro) com banco de dados na nuvem (Supabase).Read the full README ↗
App de apoio para trabalho de reconditionnement (recondicionamento) de impressoras e copiadoras: referência de peças, acompanhamento diário de serviço, análise de indicadores e uma visão geral para administradores.
Interface em francês (idioma de trabalho), com nomes/legendas em PT/EN nas peças. Roda direto no navegador, sem instalação — é um site estático (HTML + CSS + JS puro) com banco de dados na nuvem (Supabase).
Catálogo de referência de componentes de impressora/copiadora, com nome em francês, português e inglês, categoria (Nettoyage / Montage / Électrique), descrição técnica e busca. Inclui um "Top 10" com a ordem oficial de desmontagem e um guia rápido de segurança/boas práticas.
1. Nouveau Service (com cronômetro) — para trabalho numa impressora específica:
2. Enregistrement rapide (sem cronômetro) — para o que não é trabalho numa máquina específica: basta escolher a data, a Étape (qualquer uma da lista, incluindo Réunion/Formation/Congés/5S), uma quantidade (opcional) e uma nota, e salvar. Aparece na hora no histórico, sem precisar rodar cronômetro nenhum — é o equivalente digital de preencher uma célula QTE da planilha de papel.
Todo o histórico mostra as duas coisas juntas, e cada técnico só vê os próprios registros (ver seção RGPD/Segurança abaixo).
Ma semaine — além de "Aujourd'hui", o técnico vê a semana inteira (segunda → domingo, com ‹ › para semanas anteriores), agrupada por dia, com total por dia, total da semana e barra de progresso até 35h. Cada entrada pode ser corrigida (étape, quantidade, nota, duração de um registro rápido) num formulário próprio, e um dia esquecido pode ser preenchido pelo botão "+ Ajouter". Exporta a semana em CSV (abre direto no Excel).
Visível só para os e-mails cadastrados na função is_admin() do banco
(SQL, ver seção abaixo) — o app pergunta ao Supabase "sou admin?" em vez de
guardar essa lista no código. Mostra um resumo geral (serviços, horas,
número de técnicos) direto ao abrir; a lista detalhada com os serviços de
cada técnico (fotos incluídas) só aparece depois de clicar em "Voir tous
les services de l'équipe" — ninguém fica exposto por padrão.
A tabela da semana (navegável com ‹ ›) lista todos os técnicos, inclusive quem não registrou nada; tocar num nome abre a Analyse só daquela pessoa. A lista de serviços tem filtro por técnico e export CSV.
Também tem dois painéis de gestão:
SUPABASE_SERVICE_ROLE_KEY na Vercel (ver seção "Configuração
do servidor" abaixo) — sem ela, o botão mostra um erro em vez de travar
silenciosamente.O projeto usa Supabase (Postgres + Auth + Storage).
As credenciais públicas (URL + chave "publishable") já estão no script.js
— isso é normal e esperado, a segurança de verdade vem das políticas RLS,
não do sigilo dessa chave.
Passo único: abra o SQL Editor do seu projeto Supabase e rode o
conteúdo de supabase/setup-complete.sql. Ele:
jobs (etape, quantite,
photo_url_final) — seguro rodar de novo, não duplica nadajobs, job_pauses e settings por Row Level Security: cada
técnico só vê/edita os próprios registrosis_admin() do próprio script⚠️ Importante: a lista de e-mails admin vive só dentro da função
is_admin(), no SQL (setup-complete.sql). O script.js não guarda mais
nenhum e-mail — ele só chama is_admin() pelo Supabase e mostra ou esconde
a aba Admin conforme a resposta. Pra adicionar ou trocar um admin, edite a
função is_admin() direto no SQL Editor do Supabase e rode de novo; não há
nada para sincronizar no código do site.
Os arquivos rls-admin-vs-own.sql e schema-additions.sql ficam na pasta
só como histórico — não precisa rodá-los, o setup-complete.sql já inclui
tudo o que eles faziam.
Depois de rodar o setup-complete.sql, rode também supabase/printer-models.sql
— ele cria a tabela printer_models (modelos de impressora por marca, hoje
gerenciável pelo Admin) e já vem populada com os modelos que estavam fixos
no código antes. Depende da função is_admin() criada pelo script anterior.
Rode também supabase/presence.sql — cria a tabela presence (primeira e
última atividade de cada técnico por dia, com a hora do servidor, não
do navegador). O técnico vê o próprio tempo no botão ⏱ do topo; o admin vê
a equipe inteira em Admin → "Présence aujourd'hui". Sem esse script o
botão ⏱ simplesmente não aparece.
Por último, rode supabase/harden-admin-check.sql — ele restringe quem
pode até perguntar "sou admin?" ao banco (só usuários logados, nunca
visitantes anônimos).
Feito em código/SQL:
ADMIN_EMAILS removido do script.js — o e-mail do admin nunca mais
trafega no HTML/JS que qualquer visitante pode abrir em "Ver código-fonte"vercel.json adiciona cabeçalhos de segurança HTTP em toda resposta do
site (X-Content-Type-Options, X-Frame-Options, Referrer-Policy)supabase/harden-admin-check.sql tranca a função is_admin() para só
usuários autenticados poderem chamá-la<script> do Supabase no index.html usa versão fixa + Subresource
Integrity (integrity="sha384-..."), então o navegador recusa rodar o
arquivo se o CDN algum dia servir um conteúdo diferente do esperadoSó dá pra fazer no painel do Supabase (nenhum código resolve isso):
O botão "Adicionar um técnico" do Admin precisa de uma chave secreta do
Supabase que nunca pode entrar no repositório nem no script.js — ela
dá acesso total ao banco, ao contrário da chave pública já usada no app.
Passo a passo:
script.js e é pública). Copie o valor.SUPABASE_SERVICE_ROLE_KEY com o valor
copiado, marcada para o ambiente Production (e Preview, se quiser
testar em branches).Sem essa variável configurada, o botão continua visível mas mostra uma mensagem de erro ao tentar criar a conta — não falha silenciosamente.
A função que faz isso vive em api/create-technician.js (roda só no
servidor da Vercel, nunca no navegador) e confere com o próprio Supabase se
quem está chamando é mesmo admin antes de criar qualquer conta.
O que ainda depende de decisão/ação humana (não é código): definir prazo de retenção dos dados, verificar a região de hospedagem do projeto Supabase, e formalizar um aviso de privacidade caso o app seja usado comercialmente ou vendido para terceiros.
index.html estrutura da página (todas as telas)
style.css visual (paleta petróleo + cobre, mobile-first)
script.js toda a lógica (dados, telas, gráficos, Supabase)
favicon.svg ícone do site
vercel.json cabeçalhos de segurança HTTP (deploy na Vercel)
package.json dependência da função serverless (api/)
api/
create-technician.js ⚠️ roda só no servidor — cria login de técnico
supabase/
setup-complete.sql ⭐ rodar 1º (colunas + segurança)
printer-models.sql ⭐ rodar 2º (tabela de modelos + admin)
harden-admin-check.sql ⭐ rodar 3º (tranca quem pode chamar is_admin())
presence.sql ⭐ tempo de conexão por técnico (botão ⏱ + Admin)
rls-admin-vs-own.sql histórico, não precisa rodar
schema-additions.sql histórico, não precisa rodar
Basta abrir index.html num navegador, ou publicar a pasta em qualquer
hospedagem estática (o projeto já está publicado via Vercel).