Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Encontra quem faça. Faz o que sabes. Projetos e freelancers em português.
Translation pending
BusinessJavaScript · CSSGitHub @anthonny13330OnlineOwner 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
versão de recomeço de site
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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).Read the full 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.