Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.