smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Asterism: Life Balance Index — Personal Wellbeing Assessment
A formal, static self-assessment dashboard. Complete a scientifically-grounded baseline
assessment, then check in ONCE A WEEK with rough measured quantities to track eight life
aspects, see A–F grades and a single Balance Index, level up each birthday, and keep
weekly pledges — no daily
logging ritual. Pure static HTML/JS/CSS — no build step, no backend; all data lives in
your browser's localStorage.README 전문 보기 ↗A formal, static self-assessment dashboard. Complete a scientifically-grounded baseline assessment, then check in ONCE A WEEK with rough measured quantities to track eight life aspects, see A–F grades and a single Balance Index, level up each birthday, and keep weekly pledges — no daily logging ritual. Pure static HTML/JS/CSS — no build step, no backend; all data lives in your browser's localStorage.
Live at asterism.plainpoint.net (formerly lbi.plainpoint.net, which now forwards here) (repo
SEEHIGHxb/LifeBalanceIndex, formerly LifeQuest). Internal storage keys, the export filename prefix, and theLQ1-comparison-code prefix keep the legacylifequest/LQ1names for backward compatibility.
Bilingual: the whole UI switches between English and Thai (ไทย) with the header toggle — surveys, benchmarks, recommendations, goals, and toasts included. Thai text is set in Sarabun.
* and must be answered (no pre-filled defaults),
so each aspect reflects answers you actually gave; the monthly re-assessment and
in-depth assessment are blank-first too:
#/aspect/physical, ...): percentile gauge vs
society, component breakdown (e.g., Physical → Activity / Body / Sleep /
Nutrition), trend chart of weekly snapshots, and a "Measured Weekly" card
naming which review fields feed that aspect — reachable by clicking any
aspect on the OverviewlocalStorage with no network request, no
account, and no change to default-src 'self'. Each source app writes; this
app only reads, and only when switched on at both ends. What arrives
pre-fills the matching weekly-review boxes with a source chip and the window it
covers, for you to confirm or correct — never applied to a score behind your
back, and never overwriting an answer you gave (someone who runs and swims
raises the number themselves). The payload is treated as untrusted input: shape,
version, timestamp and every number are validated, and no string it contains is
ever rendered, so the XSS surface does not exist rather than being escaped. A
run log covering the wrong week, or a ledger older than 35 days, is reported as
stale and never used#/dashboard, #/review, #/aspect/<key>, #/checkin, ...) — browser back/forward work<img>
loses both the CSS custom properties and the self-hosted fonts). You choose
light or dark and how much is legible — shape only, shape plus aspect names,
or everything including scores and grades — and the sheet is candid that
Instagram cannot accept a post directly from a website, so the image goes out
through the system share sheet or a downloadLQ1-... code with others
and paste theirs to lay your eight aspects out beside theirs — a code carries
only a name and the eight aspect scores (no age, no points); no backend, no
accounts. Codes shared before v2.0 still decode. Deliberately not a
leaderboard: no rank, no tier, no ordering by score, and no sample
profiles. Every cell is marked against the population average, which is the
comparison this app is actually about; a friend's column is there to show you
where you differ, not who is aheadES modules require a web server (opening index.html via file:// will not work):
npm start # http-server on http://localhost:8123
# or
python -m http.server 8123
npm test # node --test (requires Node 18+)
Covers the scoring functions, points/leveling, the weekly-review shift math and pledge grading, and localStorage schema migration (including v3 → v4).
CI (.github/workflows/ci.yml) runs the test suite on every push and PR, and
deploys the repo root to GitHub Pages on every green push to main (the
workflow enables Pages automatically on first run). Any other static host
works too — publish the repo root as-is.
When releasing, bump both cache busters together: the ?v=N query on the
entry points in index.html/app.js and CACHE_NAME in sw.js.
Formal / academic look: warm-paper background (#f7f5f0), white cards, muted
borders, navy primary (#24344d) with a restrained burgundy accent (#6d2e3f).
Headings are set in Source Serif 4, body text in Inter, and Thai in
Sarabun; numeric readouts use a monospace stack. Flat surfaces, thin borders,
~4px radii — no gradients, glows, or text-shadows.
| File | Responsibility |
|---|---|
index.html / index.css | Shell and formal design system |
app.js | Coordinator: navigation, toasts, level-up modal, guidance assistant |
state.js | GameStateManager: persistence, migration, scoring, goals, points |
benchmarks.js | Population percentile benchmarks with cited sources |
aspects.js | Per-aspect detail: component breakdowns and trend series |
suggestions.js | Rule-based, profile-aware recommendation engine |
comparison-code.js | Shareable comparison codes (name + aspect scores) for real peer comparison |
i18n.js / th.js | EN/TH localization layer and the Thai dictionary |
sw.js / manifest.webmanifest | PWA: offline service worker and install manifest |
surveys.js | Survey instrument question banks and option scales |
ui.js | Barrel that re-exports the view modules under views/ |
chart.js | The aspects' labels, their order, and the radarPoints geometry the story card uses |
story-card.js | Canvas renderer for the 1080×1920 shareable story card |
tests/ | Node test suite for assessment/scoring logic |