尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 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 |