A personal status page that displays your current priorities and workload. Features a dynamic "mood" indicator based on task count and weighted risk/urgency/importance, plus a Flowkeeper widget for maintaining flow-state through everyday task completion.
- Public View: Shows generalized task categories without exposing private task names
- Private Edit Mode: Password-protected editing with full task details
- Dynamic Mood: Visual stress indicator (Calm → Busy → Very Busy → Under Pressure)
- Load Meter: Segmented bar showing individual task contributions
- Flowkeeper: Minimal task widget with a flow-state meter (see below)
- Cursor & Anthropic Usage: Live animated token and line-of-code counters
- Cyberpunk Aesthetic: Neon colors, 3D perspective background, smooth animations
- Mobile Optimized: Responsive design with lighter-weight graphics for mobile
-
Install dependencies:
npm install
-
Create a
.env.localfile:EDIT_PASSWORD=your_secret_password CURSOR_API_KEY=your_cursor_api_key # optional ANTHROPIC_ADMIN_KEY=sk-ant-admin01-... # optional -
Run the development server:
npm run dev
- Deploy to Vercel
- Add environment variables in Vercel dashboard:
EDIT_PASSWORD— password for edit modeCURSOR_API_KEY— Cursor Teams API key (for usage stats)ANTHROPIC_ADMIN_KEY— Anthropic Admin API key (for usage stats)BLOB_READ_WRITE_TOKEN— auto-added when connecting a Vercel Blob store
- Create a Vercel Blob store and connect it to your project
- Local: JSON files in
data/(priorities.json,tags.json,flowkeeper.json,flow-completions.json,cursor-usage.json) - Production: Vercel Blob storage for persistence
Tasks are weighted by their Risk, Urgency, and Importance (1-3 scale each):
- Weight multipliers: Low = 0.5, Medium = 1.5, High = 3.0
- Weight = risk_weight + urgency_weight + importance_weight
- Total load determines mood: < 15 = Calm, < 35 = Busy, ≥ 35 = Under Pressure
Flowkeeper is a separate, minimal widget for tracking everyday tasks that maintain your flow-state. Unlike priorities, Flowkeeper tasks are simple (just a label and difficulty) and do not contribute to the attention meter.
How flow-state works:
Completing a task grants a percentage of flow for a duration based on difficulty:
| Difficulty | Flow granted | Duration | Example tasks |
|---|---|---|---|
| Easy (1) | 33% | 4 hours | Go for a run, do the dishes |
| Medium (2) | 43% | 8 hours | Mow the lawn, clean garage |
| Hard (3) | 53% | 12 hours | Pull the weeds, deep clean |
- Flow stacks from multiple completions up to 100%
- As completions expire, flow decays automatically
- Two medium tasks (86%) or one hard + one easy (86%) nearly max the meter
- The flow meter is displayed as a translucent blue bar above the attention meter
Authentication is required to add, edit, complete, or delete Flowkeeper tasks.
- Private task labels are never sent to unauthenticated users
- Public view only shows generalized tags (e.g., "Programming - New Features")
- Flowkeeper task labels are publicly visible (they are intended to be simple everyday tasks)
- Authentication uses Bearer token in Authorization header
- Next.js (App Router)
- React
- Tailwind CSS v4
- Vercel Blob (production storage)
MIT