Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kairos — 매일, 나를 벼리는 한 수

License: PolyForm Noncommercial 1.0.0

License note: free for noncommercial use; commercial use requires a separate license from the author. See License.

A daily "one move" (한 수) reflection PWA. Each day surfaces a single piece of classical wisdom — a question or a short vignette — paired with one of five reframing lenses (accept · challenge · fact · distance · meaning). Entry cost is ~60 seconds: one tap, plus an optional one-line note. Strength accumulates; deficits are never displayed.

Kairos home screen — today's one move

Design principles: no deficit surface, tomorrow is unknown (date-deterministic rotation), novelty comes from the world (classics, not pure self-reflection), and free-text notes stay on-device only — they are never sent to the server.

About

Kairos is a daily reflection app for people in mid-career and midlife who want a steady, unsentimental practice rather than a mood tracker. It reframes self-improvement as sharpening (벼리기) instead of fixing deficits: each day is a single decisive "move" (한 수) drawn from classical and Stoic/Eastern thought, and your strength accumulates over time instead of a weakness dashboard counting down.

  • Who it's for — adults wanting a low-friction (~60s/day), non-clinical daily habit.
  • What's different — no deficit surface; the next card is unknown (date-deterministic rotation); novelty comes from the world (classics) rather than endless self-reflection; and private notes never leave the device.
  • What it's not — not therapy, not medical advice, and not a streak-shaming productivity tracker.

Topics

pwa · react · vite · typescript · tailwindcss · express · sqlite · jwt · offline-first · indexeddb · daily-app · mindfulness · stoicism · self-improvement · korean · privacy-friendly

Tech stack

  • Frontend (web/) — Vite + React + TypeScript + Tailwind, installable PWA (offline-first via service worker + IndexedDB).
  • Backend (server/) — Express + better-sqlite3 + JWT. Anonymous device_id → JWT; the server stamps reaction dates in KST and stores only a per-day dimension/kind count (never note text).
  • Optional Kakao subscription (OAuth "send-to-me" daily nudge) — disabled unless you configure keys.

Privacy by design

  • Anonymous device identity only — no account, no name, no email, no phone.
  • Free-text notes live in IndexedDB and are never transmitted.
  • The SQLite database is created with 0600/0700 permissions and is gitignored.

Local development

Requires Node.js 18+.

# 1) API (terminal A)
cd server
cp .env.example .env          # then edit: set JWT_SECRET (openssl rand -hex 32)
npm install
npm run dev                   # http://localhost:4110

# 2) Web (terminal B)
cd web
cp .env.example .env          # optional overrides
npm install
npm run dev                   # http://localhost:5176  (proxies /api → :4110)

Build the web app for production with cd web && npm run build (outputs web/dist/).

Configuration

All secrets and environment-specific values come from .env files (see each .env.example). Nothing is hardcoded — set BASE_URL / ALLOWED_ORIGIN to your own host when deploying, and VITE_SITE_URL if you want share links to use a fixed canonical origin.

License

Licensed under the PolyForm Noncommercial License 1.0.0 — see LICENSE.

  • Noncommercial use is free: you may use, modify, and share the software for any noncommercial purpose (personal, research, evaluation, charitable, etc.).
  • 🔒 Commercial use requires a separate license from the author. If you want to use Kairos (or a derivative) for a commercial purpose, please open a GitHub issue to arrange a commercial license first.

© 2026 Kairos.

About

Kairos — a daily 'one move' (한 수) reflection PWA: classical wisdom + reframing lenses, offline-first. Vite/React PWA + Express/SQLite/JWT API. PolyForm Noncommercial.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages