safeeyes
간단하고 아름다운 휴식 알림으로 눈 피로 보호
아직 감지된 업데이트가 없습니다. 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.