Sesh Log is a modern, privacy-focused tracker for life routines (sleep, mood, hydration, physical activity) and legacy substance sessions (weed, cigarettes, vapes, liquor). The app is now lean by design with a simplified UI/UX.
- Legacy: Weed, Cigarettes, Vapes, Liquor.
- Life: Sleep, Mood, Hydration, Physical Activity.
-
Quick stats and insights for the features above.
-
Deep Statistics (
/weed/stats,/cigs/stats,/vapes/stats,/liquor/stats): a per-category statistics page with its own range picker (30d / 90d / 1y / all time / custom), covering:- Trends — period-over-period comparison, an OLS trend line on daily totals (slope per week with R²), a 7-day rolling average, and use/clean streaks.
- Consistency — standard deviation, coefficient of variation with a plain-English band, quartiles, and heavy sessions flagged as Tukey outliers against your own baseline.
- Timing & context — day-of-week and hour-of-day distributions, gaps between sessions, weekend vs weekday, and social vs solo dose comparison.
- All statistics — the full descriptive table (mean, median, mode, std dev, variance, CV, quartiles, IQR, percentiles, skew) reported both per session and per day.
Every statistic is computed over two populations: per session (typical dose size) and per day (daily load, counting days with no sessions as zero). Statistics below a minimum sample size render as
—rather than as misleading noise. -
Nicotine Load (
/nicotine): combines cigarettes and vaping into a single figure, because the two are measured in different units (cigarettes vs puffs) and consumption often moves between them. When that happens each series alone looks flat or noisy while the total moves, so only the combined figure shows the real trend.- The puffs-per-cigarette exchange rate is estimated from your own data — the rate that makes weekly combined load most stable — and is adjustable with a slider, with the fitted value always shown for comparison.
- Reports weekly load split by source, a 4-week average, the trend, and the correlation between the two categories (negative ⇒ they substitute for each other).
- The page states the coefficient of variation for the combined series against each series alone, so you can judge how well the single-scale model actually fits.
- Add notes, ratings, and participant count to each session.
- Edit or delete any session with a user-friendly interface.
- All quantities are unit-aware and normalized for accurate stats.
- Supabase Auth: Secure email/password authentication.
- Data Isolation: Each user can only access their own data.
- Session Persistence: Stay logged in across browser sessions.
- RLS Policies: Database row-level security ensures privacy.
- Responsive Design: Works beautifully on mobile and desktop.
- Dark/Light/System Theme: Toggle between themes instantly.
- Accessible: Built with accessibility in mind.
- Shadcn-UI & Tailwind CSS: Clean, modern, and customizable.
- Landing Page: Welcome screen with app branding and a "Get Started" button.
- Authentication: Sign up or log in with email/password. (Email verification supported.)
- Category Selection: Choose what you want to track: Weed, Cigarettes, Vapes, or Liquor.
- Dashboard: For each category, log new sessions, view stats, and explore insights.
- Session Management: Edit, delete, and filter your sessions. All changes are instantly reflected in your analytics.
- Analytics: Visualize your habits with charts, key metrics, and period-based insights.
- Vite (build tool)
- TypeScript
- React
- shadcn-ui (component library)
- Tailwind CSS
- Supabase (authentication & database)
- React Query (data fetching/caching)
- date-fns (date utilities)
- Recharts (data visualization)
- Clone the repository:
git clone <YOUR_GIT_URL> cd session-scribe-log
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open in your browser: Visit http://localhost:5173 (or as shown in your terminal)
- Deploy on Vercel, Netlify, or your preferred platform.
- Configure your Supabase credentials in the environment as needed.
- Supabase is used for authentication and as a Postgres database.
- Row Level Security (RLS) is enabled for all tables.
- All CRUD operations are authenticated and scoped to the current user.
- See
/supabase/migrations/for schema and policy details.
Pull requests and issues are welcome! Please open an issue to discuss your ideas or report bugs.
Note: This project is actively maintained and regularly updated with new features and improvements.
MIT
src/app/providers/AppProviders.tsx: Central providers (React Query, Theme, Auth, Tooltips, Toasters)src/app/layouts/RootLayout.tsx: App shell withTopNavbar,BottomNavbar, andOutletsrc/app/router.tsx: Router with lazy-loaded routes andProtectedRoutesrc/features/daily/*/components/*Form.tsx: Daily tracker forms (sleep, mood, hydration, activity)src/pages/*: Pages remain; imports updated to use feature forms
Notes:
- Font import moved to
src/main.tsx(@fontsource/inter) to avoid CSS import ordering issues index.cssreorganized; Tailwind layers are loaded after the font import via TS entryTopNavbarandBottomNavbarprovide a consistent shell; bottom nav shows on mobile only
- Unified spacing, shadows, and rounded radii across pages
- Fixed dynamic Tailwind class in
AppDashboardto avoid invalid class generation - Improved bottom nav active state with a subtle indicator dot
- Leaned the app: removed Nutrition, Work Focus, Pain, and Supplements features and routes