Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证versão de recomeço de site
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Plataforma onde clientes publicam projetos e freelancers enviam propostas. Web nativa moderna, sem passo de build: HTML + CSS + módulos ES, com Supabase (Postgres, Auth, Realtime) e alojamento na Vercel. Os endereços antigos (/login, /cadastro, /chat, /definicoes) redirecionam para os novos (vercel.json).查看完整 README ↗
Plataforma onde clientes publicam projetos e freelancers enviam propostas. Web nativa moderna, sem passo de build: HTML + CSS + módulos ES, com Supabase (Postgres, Auth, Realtime) e alojamento na Vercel.
| Endereço | Quem | O que faz |
|---|---|---|
/ | todos | Página de entrada: o que é, como funciona, projetos recentes, perguntas frequentes. |
/projetos | todos | Projetos abertos com filtros no endereço. ?p=<id> abre um projeto (link partilhável). Freelancers enviam propostas. |
/painel | com sessão | Cliente: projetos, propostas recebidas (aceitar e pagar pelo PayPal, recusar), confirmar entrega e libertar pagamento, publicar, procurar freelancers. Freelancer: propostas (editar, retirar, reenviar) e estado dos pagamentos. |
/mensagens | com sessão | Conversas em tempo real, filtro «por ler», contador no cabeçalho. |
/conta | com sessão | Fotografia, perfil público, portfólio (freelancer), dados privados e e-mail PayPal, tema, palavra-passe, histórico de pagamentos, exportar e apagar dados (RGPD). |
/perfil?id=<id> | todos | Perfil público: apresentação, competências e portfólio (freelancer) ou projetos abertos (cliente). |
/entrar, /registar | sem sessão | Entrar, recuperar palavra-passe, reenviar confirmação, criar conta. |
/privacidade, /termos | todos | Política de privacidade (RGPD) e termos. |
Os endereços antigos (/login, /cadastro, /chat, /definicoes) redirecionam para os novos (vercel.json).
*.html uma página por endereço (cleanUrls da Vercel)
css/
base.css @layer reset, tokens (cores claro/escuro), base, utilitários; tipografia fluida até TV
componentes.css botões, cartões, formulários, janelas, cabeçalho, rodapé (container queries)
paginas.css estilos de cada página
js/
config.js URL e chave pública do Supabase, dados do responsável RGPD
arranque.js importado por todas as páginas: componentes + tema
tema-inicial.js corre antes de pintar, para não piscar no tema errado
nucleo/ supabase, sessão, modelos HTML (lit-html), formatação, interface
componentes/ <wop-topo>, <wop-rodape>, <wop-logo>, <wop-icone> e o cursor-panela (Web Components)
paginas/ um módulo por página
vendor/ lit-html e supabase-js servidos pelo próprio site (sem CDN)
fontes/ Inter (texto), Space Grotesk (títulos) e Kalam (anotações), auto-alojadas
supabase/esquema.sql esquema completo da base de dados
Identidade visual
#141210 com cobre #C8733A; claro em pedra #F4F1EC com cobre escuro #A4561F. Tudo em tokens no base.css.<wop-icone nome="…">).carregador()) e vapor ao publicar (vaporar()). O cursor-panela só aparece em zonas com data-cursor-panela, com rato. Tudo se desliga com «reduzir movimento».Princípios
innerHTML com dados do utilizador: os modelos html\…`` do lit-html escapam tudo.onclick no HTML: eventos ligados nos módulos (@click=${…}).<dialog> próprio (confirmar(), pedirSenha()), nunca confirm()/prompt().clamp(), auto-fit/minmax, container queries; a raiz cresce em ecrãs ≥1800px (TV).animation-timeline: view()
para revelar ao rolar — quem não suporta vê a página normal.prefers-reduced-motion.nosniff, RLS em todas as tabelas.Ver supabase/esquema.sql. Chaves estrangeiras com on delete cascade, RLS em todas as tabelas,
regras de negócio em funções (enviar_proposta, responder_proposta, retirar_proposta, abrir_conversa,
marcar_conversa_lida, exportar_os_meus_dados, apagar_a_minha_conta) e gatilhos para as invariantes.
supabase/02_pagamentos_e_imagens.sql acrescenta os pagamentos retidos
(tabela pagamentos, só escrita pela função do servidor), o e-mail PayPal em contas, a fotografia em perfis, a tabela
portfolio e os baldes de imagens avatares e portfolio (cada pessoa só escreve na sua pasta).
Qualquer servidor estático serve, mas os endereços limpos (/painel) precisam de reescrita para painel.html.
O mais simples é npx vercel dev.
https://work-on-pan.vercel.app e, em Redirect URLs,
https://work-on-pan.vercel.app/**. Sem isto os e-mails de confirmação e recuperação apontam para outro site.js/config.js, preencher RESPONSAVEL_DADOS e CONTACTO_PRIVACIDADE.O plano gratuito pausa o projeto ao fim de uma semana sem uso; se o site deixar de carregar dados, reativa-o no painel.
O dinheiro circula assim: o cliente aceita uma proposta pagando-a pelo PayPal → o valor fica retido na conta da
plataforma → quando o cliente confirma a entrega, a função do servidor envia ao freelancer o valor menos 8 %
(PayPal Payouts). Quem fala com o PayPal é só a Edge Function supabase/functions/pagamentos;
as chaves nunca vão para o browser.
Ordem certa (antes de juntar este ramo ao main):
supabase/02_pagamentos_e_imagens.sql e depois supabase/03_comissao_8.sql (cada um uma vez).PAYPAL_CLIENT_ID, PAYPAL_SECRET,
PAYPAL_AMBIENTE = sandbox e SITE_URL = https://work-on-pan.vercel.app.pagamentos,
cola o conteúdo de supabase/functions/pagamentos/index.ts e publica (com «Verify JWT» ligado).
Com a CLI: supabase functions deploy pagamentos.main.Para passar a dinheiro real: troca as credenciais pelas de Live, PAYPAL_AMBIENTE = live e, em js/config.js,
PAGAMENTOS_MODO = "live". Antes disso, confirma com um contabilista/jurista: reter dinheiro de terceiros num marketplace
na UE pode exigir o produto de marketplaces do PayPal (Commerce Platform) ou licença de instituição de pagamento, e os
registos de pagamento podem ter de ser guardados pelo prazo fiscal.