smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
App web (PWA) de emagrecimento com plano alimentar, treinos, metas diárias, progresso e sistema de níveis. Sem build, sem npm: é HTML, CSS e JavaScript puro. Basta subir os arquivos e funciona. Ligar o banco de dados (fazer uma única vez) O app já vem apontado para o seu projeto do Supabase. Falta só criar a tabela: 1. Entre no painel do Supabase 2. Menu lateral → SQL Editor → New query 3. Abra o arquivo schema.sql deste repositório, copie tudo e cole lá 4. Clique em Run Pronto. A partir daí o login e a sincronização na nuvem funcionam.README 전문 보기 ↗
App web (PWA) de emagrecimento com plano alimentar, treinos, metas diárias, progresso e sistema de níveis. Sem build, sem npm: é HTML, CSS e JavaScript puro. Basta subir os arquivos e funciona.
O app já vem apontado para o seu projeto do Supabase. Falta só criar a tabela:
schema.sql deste repositório, copie tudo e cole láPronto. A partir daí o login e a sincronização na nuvem funcionam.
Importante sobre a chave: a chave que está em
config.jsé a chave publishable (pública) — ela foi feita para ficar visível no site. Quem protege os dados são as políticas RLS criadas peloschema.sql: cada pessoa só enxerga e só altera a própria linha. Nunca coloque emconfig.jsa senha do banco nem a chaveservice_role.
Por padrão o Supabase exige confirmação de e-mail no cadastro. Para testar mais rápido, você pode desligar isso em Authentication → Providers → Email → desmarcar Confirm email. Em produção, o recomendado é deixar ligado.
O app cobra por assinatura (mensal/trimestral/anual) e usa a Ticto como meio de pagamento. Duas peças cuidam disso:
Controle de pagamento: o schema.sql (rode de novo se já tinha rodado
antes — ele não duplica nada) criou as tabelas assinaturas,
ticto_webhook_logs e respostas_quiz. Uma function separada recebe o
aviso da Ticto a cada compra/renovação/cancelamento e atualiza
assinaturas — o app só libera as telas internas se achar uma linha ativa
pro e-mail de quem logou. Veja o passo a passo completo em
supabase/functions/ticto-webhook/README.md.
Ponte quiz → cadastro: quando a pessoa termina o quiz e escolhe um
plano, as respostas vão tanto pro localStorage (funciona se ela continuar
no mesmo navegador) quanto pro Supabase com um token de uso único, que
viaja na URL (?quiz=TOKEN) — assim o cadastro chega pré-preenchido mesmo
se ela pagar num navegador diferente do que abriu o quiz (comum em quem
entra pelo navegador interno do Instagram, por exemplo).
Links de checkout: cole os 3 links de produto da Ticto em config.js
(CHECKOUT_URL_MENSAL/TRIMESTRAL/ANUAL) e no topo de quiz.html,
quiz/escuro.html e quiz/claro.html — são arquivos sem import entre si,
então o valor não se propaga sozinho.
Igual ao quiz: conecte este repositório na Vercel e publique. Cada git push
republica sozinho. Não há passo de build.
Depois de publicado, quem abrir no celular pode tocar em "Adicionar à tela de início" e o app abre em tela cheia, como um aplicativo.
| Arquivo | O que faz |
|---|---|
config.js | Nome do app e chaves do Supabase. É o único arquivo de configuração. |
js/data.js | Todo o conteúdo: cardápios, planos de treino, biblioteca de exercícios e níveis. É aqui que você edita alimentos e exercícios. |
js/store.js | Cálculos e dados: meta calórica, pontos, níveis, streak, resumos. |
js/backend.js | Login e sincronização com o Supabase. |
js/screens.js | As telas do app. |
js/onboarding.js | Login, criação de conta e o cadastro de 3 passos. |
js/app.js | Navegação entre telas e as ações (marcar refeição, água, treino...). |
css/app.css | Todo o visual. As cores ficam nas variáveis no topo do arquivo. |
schema.sql | O SQL que cria as tabelas e as regras de segurança no Supabase. |
supabase/functions/ticto-webhook/ | Function que recebe o aviso de pagamento da Ticto e libera a assinatura. |
Trocar alimentos de um cardápio: abra js/data.js, procure
PLANOS_ALIMENTARES e edite a refeição desejada. Cada alimento tem nome,
gramas, medida caseira, calorias, proteína e a opção de troca.
As gramagens dos cardápios são reescaladas automaticamente para a meta de calorias de cada pessoa — os valores no arquivo são a base de referência.
Trocar exercícios de um treino: no mesmo arquivo, em PLANOS_TREINO.
Existem quatro planos: feminino_academia, feminino_casa,
masculino_academia e masculino_casa.
Mudar as cores: no topo de css/app.css, nas variáveis --verde,
--verde-esc etc.
Mudar o nome do app: em config.js (APP_NOME), no <title> do
index.html e no manifest.json.
Pontos por ação: alimento marcado +3, refeição completa +10, meta de água +20, meta de sono +20, treino concluído +40, pesagem registrada +15.
| Nível | Nome | Pontos |
|---|---|---|
| 1 | Decidido | 0 |
| 2 | Comprometido | 300 |
| 3 | Consistente | 900 |
| 4 | Imparável | 2.200 |
| 5 | Transformado | 4.500 |
Para ajustar, edite NIVEIS e PONTOS em js/data.js.
Se o Supabase estiver fora do ar ou as chaves não estiverem preenchidas, o app continua funcionando 100% no aparelho, salvando no navegador. A pessoa também pode escolher "Continuar sem conta" na tela de entrada.
Material educativo de apoio. Não substitui acompanhamento médico ou nutricional. Resultados variam de pessoa para pessoa.
Existem quatro páginas de quiz, todas em arquivo único (HTML + CSS + JS, sem build). Todas terminam na mesma tela de planos e usam as mesmas imagens da raiz.
| Arquivo | Público | Oferta apresentada |
|---|---|---|
quiz/escuro.html | geral (tema escuro) | app Focus Fit |
quiz/claro.html | geral (tema claro) | app Focus Fit |
quiz/caneta.html | quem usa canetinha | Método Destrave Metabólico, dentro do app |
quiz/natural.html | quem não usa canetinha | Protocolo GLP-1 Natural, dentro do app |
quiz/caneta.htmlAbertura com "o quanto você está aproveitando da sua canetinha", depois canetinha, tempo de uso, dose e objetivo. Vem a quebra que tira a culpa, as perguntas de dor (quilos eliminados, incômodo principal, flacidez, sintomas), a quebra do custo escondido com o dado dos 82%, e as perguntas de rotina que fecham o diagnóstico. O diagnóstico mostra o índice de aproveitamento e quais das 5 travas metabólicas estão fechadas. Depois vêm as metas, a mini-VSL e os planos.
quiz/natural.htmlAbertura igual à do quiz GLP-1 que já estava no ar. As perguntas seguem objetivo → situação e problema → tentativas anteriores e frustrações → rotina detalhada → metas, com quebra de tira a culpa depois da pergunta de fome e quebra de "você não está sozinha" depois da frustração. O diagnóstico mostra o Índice de GLP-1 Natural e as 5 travas.
Nos dois, a tela vsl roda antes da projeção e hoje mostra um placeholder de player
(.video-box) com o resumo do argumento em texto. Ao gravar o vídeo com a Kelly, troque o
bloco <div class="video-box"> pelo embed do player. Os roteiros completos das duas VSLs
estão em Site_Kelly\VSL\ (fora deste repositório).
num, e a barra de progresso é num/TOTAL_Q: renumere ao inserir ou
remover.pctAte('<id>') para a barra, e os gatilhos ficam no
FLOW.push dentro do QUESTIONS.forEach.PESOS_INDICE lê o índice da opção escolhida (<id>_i). Se você reordenar as
alternativas de uma pergunta, ajuste o array de pesos ou a pontuação sai errada em
silêncio.TRAVAS_CAN (caneta) e TRAVAS_NAT (natural): cada
linha é [nome, id da pergunta, função que diz se está liberada].