Assess your wellbeing across eight life aspects against cited benchmarks. Local-first, no account.
Translation pending
HealthJavaScript · CSSGitHub @SEEHIGHxbOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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.Read the full 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 |