DEV Community

Fayaz Bin Salam
Fayaz Bin Salam

Posted on

I built LET — a local-first habit and life-events tracker in React Native

I've been building side projects for years. most of them live on github, quietly collecting dust. LET is one i actually use daily.

LET (Life Events Tracker) is a React Native + Expo app for tracking habits, mood, and life events — entirely offline, no account required, no data leaves your device.

the problem with most habit trackers

they want your data. subscriptions, cloud sync, accounts. i wanted something simpler: log what happened today, see patterns over time, own the data. so i built it.

the stack

piece why
React Native + Expo iOS, Android, and web from one codebase
NativeWind TailwindCSS for RN — familiar syntax
Zustand minimal state, no boilerplate
expo-sqlite + Drizzle ORM type-safe local SQL, migrations run on device
Expo Router file-based navigation like Next.js
Custom SVG charts hand-rolled paths, no heavy chart lib

what it does

four main modes: daily habit tracking (with custom event colors), mood logging, life milestone recording, and a pattern view that surfaces weekly trends from those custom SVG charts.

data export/import is JSON, dark/light mode is fully supported, and swipe navigation works throughout.

the part worth talking about

this whole app was built through vibe-coding — describing features in natural language, iterating with AI, spending mental energy on product decisions instead of boilerplate.

it is not a toy. the codebase has proper navigation with expo-router, accessible UI atoms via rn-primitives, and a schema-first SQLite setup with Drizzle that runs migrations at startup. just built through a different workflow.

links

LET on GitHub

https://github.com/p32929/let

live web demo: https://p32929.github.io/let/

would love honest takes on what is missing or clunky. stars and forks appreciated if it is useful.

open to building with sharp teams and solo founders — dms and email open.

Top comments (0)