smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
One calm system for the day.
A mobile-first PWA that unifies habits, goals, tasks, focus sessions, meditation,
breathwork, calorie and macro logging, flexibility, cognitive practice and adaptive
workouts — coordinated by a single Today screen and a single evening review.
Working title. Renaming is a one-line change in src/lib/app-config.ts.README 전문 보기 ↗One calm system for the day.
A mobile-first PWA that unifies habits, goals, tasks, focus sessions, meditation, breathwork, calorie and macro logging, flexibility, cognitive practice and adaptive workouts — coordinated by a single Today screen and a single evening review.
Working title. Renaming is a one-line change in src/lib/app-config.ts.
Stage 13 of 17 — Safety, privacy, accessibility and trust. There is a real schema: 61 tables, row-level security on every one of them, and an authorization test suite that runs against a real Postgres and actually tries to read another user's data. The app reads the signed-in user's own local day through a repository interface with two interchangeable implementations.
Onboarding asks eight skippable questions and generates a first week from the answers — capped, explained item by item, and saved only once the user has edited it and agreed.
Today and Plan are live. Today holds the morning intention and the dichotomy-of-control prompt, the day's commitments with complete, skip-with-reason, move-to-tomorrow, reorder and quick-add, a minimum-day switch, a focus timer whose state lives on the server, and the evening review. Plan holds goals, tasks across four views, and habits of four kinds.
Mind is live too: five secular meditations, five slow breathing patterns with the safety copy on the screen where the decision is made, and two cognitive drills that report practice at that drill and explicitly nothing else. An optional meditation pack exists and is off — its practices are absent until someone chooses it.
Train is live: a deterministic plan engine that fits the week to the days, equipment, time and pain flags a person gives it (tennis days included), explains every rule it applied, and progresses only when the logged sets say so. Workouts are started, logged set by set with effort and pain, swapped within a movement pattern, and finished. Nine exercises have an original, data-driven SVG mannequin animation — tested for what the movement should look like — and every one of the fifty has a full text instruction.
Flexibility is live in demo mode: a four-week hamstring programme built from the source's structure in ARETE's own words, three sessions a week on days the person chooses, done in any order, with a warm-up gate, a pain exit that is always on screen, and weekly self-reports compared in words. It is used with the source author's permission.
Food is live: meals and snacks logged with numbers or without, quick add, custom foods and recipes, favourites, copy the day before's meal, water, and daily and weekly views. Targets are ranges with their working shown, overridable, and never a budget. Safeguards for under-18s, pregnancy and postpartum, eating-disorder risk and prescribed diets remove what should not be there, and every number can be hidden. Demo foods say their numbers are synthetic. An optional weight trend and an optional ingredient/oil awareness preference are both off by default.
Programmes are live: a 60-day reset whose every number is a range fitted to the person and editable before and during, with pause, travel, sick days, minimum days, weekly check-ins and an optional extension week for the source's days 61–66. The Stoic journal runs through Today's morning and evening questions into a weekly review that sets the week's facts beside the person's reflection. Contrast therapy is an optional, screened pack with a conservative timer that is always one tap from stopping.
Progress is live: date ranges, a plain-language narrative, one chart per module with a text summary and a table, streaks beside rolling consistency, observations that are labelled as such and never causal, and an export of the range. The weekly review proposes next week from open tasks, habits, training and recovery, and adds only what the person ticks. Notifications are quiet by default: per-module switches, quiet hours, a daily cap, bundling, snooze and done, and a practice reminder that is off unless chosen and only ever in the person's own words.
Stage 13 hardened all of it. One module, domain/eligibility.ts, decides what every gated
feature may offer, and the strictest answer wins; Settings → Safety shows each decision and its
reason. Every screen that asks for effort shows how to stop. Settings → Privacy deletes any one
part of the account, and an audit trail records sensitive actions without their content. Every
route is checked with axe, by keyboard, with reduced motion and at 200% text. Release is still
blocked on clinical and dietitian review (docs/SAFETY_MATRIX.md, docs/THREAT_MODEL.md).
See docs/PROJECT_LEDGER.md for where the build stands and what comes next,
docs/DATA_MODEL.md for the schema and the reasoning behind it,
docs/PLAN_ENGINE.md for how answers become a week, and
docs/DESIGN_SYSTEM.md for the visual system.
packageManager; there was no lockfile before this stage)npm install
cp .env.example .env.local # optional: the defaults already work
npm run dev # http://localhost:3000 -> /today
No credentials are needed. The app runs in demo mode by default: a fixed, deterministic account served through the same repository interface real data uses, with writes that work and last until the server restarts. The UI says so; it is never presented as durable.
For live mode you need a Supabase project and three environment variables — see
docs/PROJECT_LEDGER.md §8 for the twenty-minute setup. ARETE refuses to start in live mode
half-configured, and names what is missing, rather than quietly serving demo data as if it
were the account.
| Command | What it does |
|---|---|
npm run dev | Development server |
npm run build | Production build |
npm run start | Serve the production build |
npm run lint | ESLint (flat config, eslint-config-next) |
npm run format / format:check | Prettier |
npm run typecheck | tsc --noEmit, strict |
npm test | Vitest unit, component and database tests |
npm run test:coverage | Vitest with V8 coverage |
npm run e2e | Playwright smoke tests at phone and desktop widths |
npm run e2e:install | Install the Chromium browser Playwright needs |
npm run db:migrate | Apply every migration, in order, from zero |
npm run db:seed | Content; plus the demo account outside production |
npm run db:reset | Both |
npm run verify | Everything CI runs, in order |
The database commands read SUPABASE_DB_URL, the service-role connection string. They
are deployment work and never run on the request path.
src/
app/ Next.js App Router — routes, layouts, loading/error/not-found
components/ UI primitives, icons and navigation. No data fetching, no vendor SDKs
design/ Design tokens and WCAG contrast maths. Pure data; the tests assert it
domain/ Types, local days, recurrence, units, idempotency. No React, no database
auth/ Who is this? Demo identity, or a Supabase session
persistence/ Repository interface, demo adapter, SQL adapter. The only layer SQL touches
supabase/
migrations/ The schema: 37 tables, row-level security on all of them
test/ An auth-schema stand-in, for the tests only. Never applied to a real database
content/ Content packs as validated data, each carrying provenance
analytics/ Typed events and a no-op sink. No free text ever leaves the device
integrations/ External services, each behind an interface. Currently empty by design
lib/ Environment validation and app config
e2e/ Playwright smoke tests
docs/ Source map, product spec, ledger, acceptance checklist
The dependency direction is one-way: app → components → domain, with persistence
and content reached only through their own interfaces. A component never imports a
database client, and the domain layer never imports React.
Every destination is live. The full table, with what each route does, is in
docs/PROJECT_LEDGER.md §4: Today, Plan, Train (with exercises, flexibility and food), Mind,
Progress, Reflect, Programmes (the reset and contrast therapy), onboarding, and Settings
(notifications, your data, privacy, safety and modules). /api/export downloads the signed-in
person's data; /api/health reports build, version and mode, with no secrets.
docs/SOURCE_MAP.md records what may and may not be shipped.No third-party analytics, no ad SDKs, no session replay. Journal text, reviews, food, body
measurements, injuries, health answers and the practice reminder never appear in an analytics
payload — not even by name — enforced by schema tests, not by a convention. Any part of the
account can be deleted on its own, or all of it at once. See docs/PRIVACY.md.