Yourentiredayononescreen

A single-user dashboard that syncs your calendar, tracks habits, runs timers, and talks to AI. Self-hosted on Vercel and Supabase.

lifeos.vercel.app
Google Cal+ Add Block
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
12 AM
09:15
Morning routine
07:00 - 08:00
Team standup
Deep work
09:00 - 12:00
Lunch
12:30 - 13:30
Client call
14:00 - 15:00
Review PRs
15:30 - 16:30

Today's Briefing

Dismiss
Calendar (4)
  • 08:30 - Team standup
  • 14:00 - Client call
  • +2 more
Habits
2 pending (60% done)
To-Dos (3)
  • Deploy v1.0 changes
  • Update API docs
  • +1 more
Overdue Goals
  • Ship landing page

Ask AI

Ask about your habits, goals, or schedule...
Send
0modules
0AI models
0hdaily cycle
0user

10 modules, one screen

Everything you need for your day, nothing you don't.

Google Cal+ Add Block
6 AM
7 AM
8 AM
9 AM
10 AM
11 AM
12 PM
1 PM
2 PM
3 PM
4 PM
5 PM
6 PM
7 PM
8 PM
9 PM
10 PM
11 PM
12 AM
09:15
Morning routine
07:00 - 08:00
Team standup
Deep work
09:00 - 12:00
Lunch
12:30 - 13:30
Client call
14:00 - 15:00
Review PRs
15:30 - 16:30

Daily Timeline

Drag-drop schedule blocks with two-way Google Calendar sync.

April 2026

Today
M
T
W
T
F
S
S
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4

Mini Calendar

Monthly calendar view with event indicators and timeline navigation.

Ask AI

Ask about your habits, goals, or schedule...
Send

Ask AI

Chat with 5 selectable AI models that can act on your dashboard.

Focus Timer

25:00
Today's focus75 min (3 sessions)

Pomodoro

Focus timer with push notifications and session logging.

Today's Briefing

Dismiss
Calendar (4)
  • 08:30 - Team standup
  • 14:00 - Client call
  • +2 more
Habits
2 pending (60% done)
To-Dos (3)
  • Deploy v1.0 changes
  • Update API docs
  • +1 more
Overdue Goals
  • Ship landing page

Morning Briefing

Auto-generated daily summary of habits, goals, todos, and events.

Goals

+ Add
Ship landing page v1
Due Apr 11
Review pull requests
Completed (1)
Read for 30 minutes

Goals

Track daily, weekly, monthly, and long-term goals with completion state.

Habits

+ Add
Read 30 minD
12days|100% this week|85% this month
ExerciseD
5days|71% this week|65% this month
MeditateD
3days|57% this week|40% this month
Weekly reviewW
8weeks|100% this week|100% this month

Habits

Daily and weekly habit tracking with streaks and completion rates.

Today's To-Dos

2/5
+ Add
Deploy v1.0 changes
Update API docs
Review Supabase migrations
Test PWA install flow
Check server logs

Todos

Recurring tasks, timeline scheduling, and Apple Reminders import.

Quick Links

+ Link
NNotionGGitHubLLinearFFigmaMGmail

Quick Links

Pinned URLs with favicons and XSS-hardened validation.

Weekly Review

7-day performance summary with habit rates, focus hours, and streaks.

Built for daily use

A closer look at the modules you will use every day.

Daily Timeline

A vertical timeline from 5am to midnight where you drag custom blocks to plan your day. Google Calendar events appear inline with clickable Join Meeting buttons. Syncs bidirectionally: create, update, or delete a block and the change propagates to GCal and back.

  • Two-way Google Calendar sync with 30-day bulk fetch on load
  • Auto-extend sync range when navigating to future or past days
  • Drag-and-drop custom blocks with meeting link field
  • Compact all-day event rendering above the hourly grid

Ask AI

An OpenRouter-powered chat panel with a model selector offering Gemini 2.5 Flash, MiniMax M1, DeepSeek V3, Qwen 2.5 72B, and Claude Haiku. The AI is timezone-aware and can execute action blocks to create todos, timeline blocks, goals, toggle habits, and complete todos directly from the conversation.

  • 5 selectable models via OpenRouter (Gemini, MiniMax, DeepSeek, Qwen, Claude Haiku)
  • Action blocks that create todos, timeline blocks, and goals from chat
  • Toggle habits and complete todos via conversational commands
  • Local timezone awareness for scheduling and date references

Pomodoro

A configurable Pomodoro timer with 15, 25, 45, and 60-minute presets. Uses the Web Audio API for completion beeps and sends push notifications when a session ends. Every completed session is logged to the database with timestamps, and a daily summary shows total focus minutes and session count.

  • Customizable durations: 15, 25, 45, or 60 minutes
  • Web Audio API beep on session completion
  • Push notifications when timer finishes (even if tab is backgrounded)
  • Session logging to database with timestamps

Habits

Track habits on a daily or weekly frequency. Each habit shows a streak counter with emoji tiers that increase as your streak grows. Weekly and monthly completion rates are calculated automatically and displayed per habit.

  • Daily and weekly frequency options
  • Streak counter with tiered emoji indicators
  • Weekly completion rate calculated per habit
  • Monthly completion rate calculated per habit

What powers it

Production stack, no vendor lock-in, fully self-hostable.

Next.js

App framework

App router with server components, API routes for calendar sync and AI chat, and static generation for public pages.

TypeScript

Type safety

Strict mode across the entire codebase with typed API responses, database rows, and component props.

Supabase

Database and auth

Postgres with Row Level Security, 9 versioned migrations, and a service-role key for server-side calendar sync.

Google Calendar API

Two-way calendar sync

OAuth 2.0 with CSRF state parameter, 30-day bulk fetch on load, and bidirectional create/update/delete sync.

LifeOS

OpenRouter

AI model gateway

Routes chat requests to 5 selectable models (Gemini 2.5 Flash, MiniMax M1, DeepSeek V3, Qwen 2.5 72B, Claude Haiku) with action-block execution.

Tailwind CSS

Styling

Utility-first CSS with dark mode support, consistent design tokens, and zero custom CSS files.

Vercel

Hosting and deploy

Zero-config deployment with automatic preview branches, edge functions for API routes, and global CDN.

PWA / Service Worker

Mobile experience

Add-to-Home-Screen install banner, push notifications for Pomodoro timers, and offline-ready caching.

Security defaults

Single-user does not mean single-effort security. Every layer is locked down.

HMAC-SHA256 session tokens

Sessions are signed with HMAC-SHA256 and stored in HttpOnly cookies with expiration. No JWTs, no localStorage tokens.

Timing-safe password comparison

Password verification uses constant-time comparison to prevent timing attacks from leaking valid credentials.

Brute-force rate limiting

Login is limited to 5 attempts per IP address with a 15-minute lockout window. Lockout state is tracked server-side.

OAuth CSRF protection

Google OAuth flow uses a random state parameter stored in an HttpOnly Secure cookie, validated on callback to prevent cross-site request forgery.

Row Level Security lockdown

Supabase RLS policies restrict all table access to the authenticated user. The google_oauth_tokens table gives zero access to the anon key.

Fail-closed in production

If SESSION_SECRET is missing at boot, the app refuses to start. No fallback to insecure defaults.

WCAG accessibility compliance

No viewport zoom restrictions (WCAG 1.4.4), proper theme-color meta tags, and semantic HTML throughout the PWA.

XSS prevention

Quick Links validates all URLs server-side and blocks javascript: schemes. User input is sanitized before rendering.

Frequently asked questions