GymCoach
근력 트레이닝 기록 및 개인 AI 코치
Selftend는 무료·비공개 정신건강 도구 모음으로, 언제든 원하는 속도로 사용할 수 있으며 오픈소스·광고·구독이 없습니다
Selftend is a set of free, private mental health tools: everyday tools for right now, yours to pick from at whatever pace suits you. Open source, no ads, no subscriptions.
건강TypeScript · PLpgSQLGitHub @Selftend온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Selftend is a set of free, private mental health tools: everyday tools for right now, and a CBT programme - cognitive behavioural therapy - to work through when you want one. Web, iOS and Android. No ads, no subscriptions.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Free, open-source mental health tools for web, iOS, and Android.
Selftend is a set of free, private mental health tools: everyday tools for right now, yours to pick from at whatever pace suits you. Nothing is compulsory, nothing asks for an account, and it has no ads, subscriptions, or paywalls.README 전문 보기 ↗Free, open-source mental health tools for web, iOS, and Android.
Selftend is a set of free, private mental health tools: everyday tools for right now, yours to pick from at whatever pace suits you. Nothing is compulsory, nothing asks for an account, and it has no ads, subscriptions, or paywalls.
Alongside those everyday tools the repository builds three evidence-based modules - a Gillihan-based CBT toolkit (thought records, exposure, worry, anger, beliefs, recovery planning), an ACT module, and a DBT module for when feelings run high (a coping plan, dated skill records, a guided muscle-relaxation session and a four-phase programme, with learn pages on the approach).
⚠️ The three modules are in beta. They render labelled beta on Android and web, and are hidden entirely on iOS production builds (
modulesAreVisible,src/lib/module-visibility.ts). Because they are beta they are deliberately not named in copy that says what Selftend is - see docs/positioning.md § 3. They are described here because this file tells a contributor what the repository builds, which is a different job from a store listing.
Your entries are encrypted in the database at the field level; a leaked database backup exposes only ciphertext, not your content. See .github/SECURITY.md for the full security posture.
Selftend is a set of mental health tools you run yourself - not therapy, diagnosis, or crisis support. If things feel heavy, see selftend.org/crisis.
No setup needed - the app ships in English and Bulgarian on all three platforms:
Requires Node 22.13.0+.
git clone https://github.com/Selftend/selftend.git
cd selftend
npm install
Create one environment file:
cp .env.example .env
Use .env for hosted Supabase values. For local Supabase development, use:
cp .env.local.example .env.local
npx supabase start
npx supabase start is only needed this once, to boot the local stack and print the anon key for .env.local (requires Docker). After that, the local-Supabase start scripts boot Docker Desktop (Windows/macOS) and the stack automatically whenever they are down.
In dev mode .env.local overrides .env (Expo's metro transform merges every .env* file over process.env). The default start scripts load .env.local. The start:prod* scripts load .env and temporarily hide .env.local so the dev-client actually hits the hosted Supabase - see docs/android-development.md for the gory details.
npm run web # browser at http://localhost:8081
npm run start # Android device, local Supabase (boots Docker + local stack if down)
npm run start:prod # Android device, hosted Supabase (hides .env.local for the run)
npm run start:emulator # Android emulator, local Supabase (boots Docker + local stack if down)
npm run start:prod:emulator # Android emulator, hosted Supabase
npm run ios # iOS simulator
npm run typecheck
npm run lint
npm run test
npm run verify # lint + format:check + typecheck + test:coverage + ratchet
npm run format
npm run test:coverage # run tests + write coverage report to coverage/ (report only; does not enforce the floor)
npm run coverage:ratchet # fail if lines/statements/functions/branches drop below coverage/baseline.json
npm run coverage:ratchet:update # lock in a new coverage floor after intentionally raising coverage
After running npm run coverage:ratchet:update, commit the updated coverage/baseline.json to keep the floor in sync.
| Topic | Guide |
|---|---|
| Contributing | .github/CONTRIBUTING.md |
| Branching & releases | docs/releasing.md |
| Security | .github/SECURITY.md |
| Code of Conduct | .github/CODE_OF_CONDUCT.md |
| Docs index | docs/README.md |
| Android setup | docs/android-development.md |
| Architecture | docs/architecture.md |
| Stack | docs/stack.md |
| Privacy data model | docs/data-privacy-model.md |
| Supabase setup | supabase/README.md |
Selftend is translated on Hosted Weblate. The app currently ships in English and Bulgarian; translation files live in src/i18n/locales/. To help translate, pick a language on the Weblate project page - no development setup needed.
Code is licensed under AGPL-3.0-only. The Selftend name, logo, and branding are not licensed for reuse. See LICENSE and .github/THIRD_PARTY_NOTICES.md.