smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
스누스와 니코틴 파우치를 점진적으로 줄이고 일일 허용량을 기록·탭 하나로 로그하며 갈망 시 지원을 받습니다
Reduce snus and nicotine pouches gradually with a calm, private app. Track your daily allowance, log use in one tap, and get support when cravings hit.
건강TypeScript · AstroGitHub @JarlLyng온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
A calm, private iPhone app for reducing snus and nicotine pouches gradually. Built with Expo & React Native.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Wean Nicotine is a mobile app that helps people gradually reduce and eventually stop using snus (nicotine pouches) through a calm, supportive, and non‑judgmental approach.
Instead of quitting cold turkey, Wean focuses on tapering — reducing usage step by step, at your own pace.
If you need to understand the repository quickly:
• Start with docs/README.md for the documentation map.
• Read docs/ARCHITECTURE.md for the canonical architecture and domain summary.
• Use code as source of truth for exact behavior.
Quitting snus doesn’t have to be all or nothing.README 전문 보기 ↗Reduce snus at your pace
Wean Nicotine is for people who would rather cut down on snus and nicotine pouches a little at a time than stop overnight. You pick a pace, and your daily allowance steps down each week, in whole pouches. One tap logs a pouch or a craving you let pass, and a day over the limit is simply logged, with no streak to break and nothing to make up. Progress counts the pouches you've avoided and, if you add a price, the money saved. Your log stays on your iPhone, with no account, until you export it yourself.
The developer half: what's in the app, how to build and run it, how it is put together, how to contribute, and the license.
There are no accounts, no cloud sync, no streak counter and no medical advice, by design. Anonymous crash reports go to Sentry, as the privacy policy says. What's next is tracked in GitHub Issues, and CHANGELOG.md has the history.
Prerequisites: Node 22 (.nvmrc), and Xcode for a development build.
npm install
npx expo start
Notifications need a development build, not Expo Go:
npx expo run:ios
npm run check runs lint, the type check and the tests, as CI does.
Sentry is optional. For development, copy .env.example to .env and set EXPO_PUBLIC_SENTRY_DSN; events are only logged to the console in development. Builds take the DSN from EAS environment variables, never from .env:
eas env:create --name EXPO_PUBLIC_SENTRY_DSN --value "https://[email protected]/xxx" --environment production --visibility plaintext
docs/SENTRY.md covers the setup and how to check it. No secrets are stored in the repo.
Releasing (iOS, bundle ID com.iamjarl.taper):
Raise ios.buildNumber in app.config.js above the last upload, and version for a new release.
Build in the cloud and upload to App Store Connect:
eas build --profile production --platform ios --auto-submit
Add --local and leave out --auto-submit to build on your Mac instead, then upload the IPA with Transporter. eas is the globally installed eas-cli (npm install -g eas-cli); npx eas does not work in this repo.
Tag the release commit (git tag -a vX.Y.Z -m "…") and push the tag. The Release workflow publishes the GitHub Release from that version's section of CHANGELOG.md.
The App Store screenshots are made as appstore/README.md describes.
Expo SDK 55 on React Native's New Architecture, Expo Router, SQLite through expo-sqlite for everything the app stores, local notifications, and Sentry for crash reports. There is no backend. The app is iPhone only; the web target only renders the UI for design previews.
app/
(onboarding)/ # welcome, baseline, pace, price, triggers
(tabs)/
home.tsx # Today
progress.tsx # Progress
tools/ # breathing, urge surfing, reflection, journal, savings
settings/ # settings, edit plan, notifications, start over
components/ # UI, with reusable primitives in ui/
hooks/ # useHomeData, useAppInitialize, keep-awake
lib/ # the domain logic
db*.ts # SQLite and its migrations
taper-plan.ts # the taper maths
progress.ts # progress and milestones
export-csv.ts # Export Data
notifications.ts # local reminders
design.ts, theme.ts # IAMJARL design tokens
appstore/ # App Store screenshots and how they're made
website/ # the Astro site at weannicotine.iamjarl.com
docs/ # architecture, decisions, store metadata
scripts/ # maintainer tools
Start with docs/README.md for the map of the docs and docs/ARCHITECTURE.md for the architecture. docs/decisions/storage.md explains why everything lives in SQLite on the phone. The code is the source of truth for exact behaviour.
Issues and pull requests are welcome; CONTRIBUTING.md has the details, and SECURITY.md says how to report a vulnerability.
MIT © 2026 IAMJARL.