Flux
active2025A cross-platform sobriety tracker for any number of vices — streaks, mood-tagged check-ins, and tiered badges without giving up your data.
No server, no account. Everything lives in AsyncStorage via a StorageService singleton, and Redux Toolkit thunks bridge the async I/O to reducers. Off-days let you log a relapse without resetting your main streak, and badges unlock at milestone day counts.


Your Progress, Two Ways
The calendar shows a month at a glance — color dots per habit, off days, and per-habit completion bars. The stats tab zooms out to streak history, mood distribution, and badge progress — same data, two lenses.




How It Works
There is no backend. All state lives in AsyncStorage, wrapped by a StorageService singleton with namespaced keys. Redux Toolkit thunks (loadVicesFromStorage, addOffDays, removeCheckIn) handle the async read/write boundary; reducers stay synchronous and persist on each mutation. The data model includes off-days so a relapse is captured without losing streak history, and badge logic runs against the full check-in history on every change.