safeeyes
Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗MVP fitness premium em português do Brasil, inspirado em Apple Health/Fitness e iOS widgets. O app calcula BMR, TDEE, IMC, percentual de gordura estimado, metas de macros, sugestões de dieta, acompanhamento semanal e insights contextuais do ShapeOS Coach.
npm install
npm run prisma:generate
npm run dev
Abra http://localhost:3000.
Para Supabase, copie as strings em Project Settings > Database. Use a connection string Postgres, não a API key do projeto:
npm run prisma:generate
npm run prisma:seed
Para criar as tabelas no banco:
npx prisma migrate deploy
npm run prisma:seed
A abertura é montada uma vez no layout raiz (src/app/layout.tsx), sem alterar
as páginas existentes. O conteúdo permanece renderizado/carregando por trás.
src/components/brand/shapeos-intro.tsx: ciclo de vida, anéis e voo do símbolo.src/components/brand/shapeos-intro.module.css: anéis em 3D e tempos da abertura.src/components/brand/shapeos-intro.config.ts: asset, tempos e bootstrap inicial.public/shapeos-mark.png: o símbolo, o mesmo da barra do topo.Anéis em órbita (DS-27 no vault): os quatro anéis de Hoje chegam girando em profundidade, se assentam de frente e fecham em volta do símbolo. A cerca de 1,3 s o símbolo voa até o logo da barra, enquanto os anéis recuam e a página abre. Tudo é CSS e Web Animations e começa na primeira pintura.
Para testar, abra /?intro=replay. Para ignorar, use /?intro=off.
Para desativar globalmente, defina NEXT_PUBLIC_SHAPEOS_INTRO=false em
.env.local e reinicie o servidor (refaça o build em produção).
O parâmetro de replay respeita a desativação global e prefers-reduced-motion.
A chave shapeos:intro:seen em sessionStorage evita repetição, inclusive em
navegações que recarregam a página. Se storage não estiver disponível, a página
continua funcionando; a persistência entre reloads depende do navegador.
Escape, Tab ou um toque/clique encerram a intro. Movimento reduzido pula a sequência. Sem JavaScript, o site aparece diretamente. Falha da imagem libera o site, com espera máxima de 1 s para seu carregamento após a hidratação; um timeout independente de 4,5 s também libera a tela se a hidratação falhar. Não foram adicionadas dependências. A animação usa CSS; os timers JavaScript controlam apenas início, encerramento e contingências.
/ landing page/onboarding cadastro inicial e seleção de modo guiado/avançado/dashboard tela Hoje com briefing, macros, refeições e Coach/calculadoras BMR, TDEE, IMC, gordura estimada e meta calórica/alimentos estrutura TACO e amostra de alimentos/dieta montador de dieta, trocas, fixos, bloqueios e compras/diario consumo real vs meta/acompanhamento check-in semanal e ajuste automático/coach engine de insights/receitas receitas com macros por porçãoprisma/schema.prisma: schema completo do MVPprisma/seed.ts: seed com mais de 30 alimentos brasileiros comunssrc/lib/nutrition: funções puras para cálculos, macros, nutrientes e ajustessrc/lib/coach: triggers, insights, briefing diário e consistency scoresrc/lib/validations.ts: schemas Zodsrc/components: UI reutilizável em estilo iOS/glassA tabela food foi modelada para compatibilidade com TACO 4a edição:
idnamecategorykcal_per_100gprotein_per_100gcarbs_per_100gfat_per_100gfiber_per_100gsodium_per_100gsourcecreated_atO arquivo Excel da TACO pode ser convertido futuramente para CSV e importado mapeando cada coluna nutricional para os campos por 100g.
npm test
npm run lint
npm run build
Cobertura inicial:
O ShapeOS não diagnostica doenças, não prescreve dieta clínica e não promete resultados. Usuários com diabetes, doença renal, gestação, transtornos alimentares, doença cardíaca ou uso de medicamentos devem procurar médico ou nutricionista.