Technical Reference
API documentation, data structures, and technical setup instructions for Your Radar.
Overview
The Dashboard is a personal venture management dashboard. It tracks multiple projects (ventures), their priorities, tasks, and status across two main pages:
- Dashboard (
/) — Venture cards, task management, priority panel - Revenue (
/dashboard.html) — Real-time financial data from Stripe, YouTube, Square, Ticket Tailor - This Guide (
/guide.html) — Documentation and reference
All Dashboard state (ventures, tasks, rules, layout) is stored in localStorage under the key vcc_state. Use Export/Import to back up or transfer data.
Ventures
A venture is any project, product, channel, or business entity you track. Each venture has:
| Field | Description |
|---|---|
| Name | Display name |
| Type | Employment, YouTube, Software, Event, Commerce, IP, Playground |
| Status | Active, Maintenance, Growth, Dormant, Seasonal, Backlog, Pitch |
| Priority Level | Baseline priority: Critical, High, Medium, Low |
| Risk Level | None, Low, Medium, High |
| Attention Rule | Must Not Break, Maintain Only, Opportunistic, Optional, Paused Safely |
| Value Line | Brief revenue/value description shown on cards |
| Description | Full description (shown in card details) |
| Tasks | Up to 10 prioritized tasks (see Tasks section) |
| Escalation Rules | Rules that dynamically elevate priority (see below) |
| Tags | Categorization labels for filtering |
| Event Dates | Key dates for event-relative task scheduling |
| Card Style | Color, gradient, texture customization |
| Key Data | Live metrics shown on the card (YouTube subs, Stripe revenue, etc.) |
Click the + button (bottom-right) to add a venture, or click the pencil icon on any card to edit.
Priority System
The priority system determines how ventures and their tasks are sorted and displayed. It has three layers: baseline priority, escalation rules, and per-todo overrides.
Priority Levels
There are four levels, from most to least urgent:
- Critical — Immediate action required, failure has major consequences
- High — Important and time-sensitive, needs attention soon
- Medium — Should be addressed but not urgent
- Low — Nice to have, do when there's bandwidth
Each venture has a baseline priority set manually in the editor. This is the default when no escalation rules are active.
Escalation Rules
Escalation rules dynamically raise a venture's effective priority based on real-time conditions. The baseline priority is never changed — escalation is computed on the fly at render time.
Rule Type: YouTube Upload Gap
Escalates when a YouTube channel hasn't uploaded a new video within a configurable number of days.
| Setting | Description |
|---|---|
| Channel | Which YouTube channel to monitor (matches window._revenueData.youtube[key]) |
| Thresholds | List of { days, escalateTo } pairs. E.g., after 7 days → High, after 14 days → Critical |
Example: A YouTube channel venture has a default rule — if no video is uploaded in 7 days, escalate to High. After 14 days, escalate to Critical.
lastUploadDate for the channel. This is fetched via the YouTube Data API search.list endpoint in services/youtube.js.
Rule Type: Event Proximity
Escalates as an event date (from the venture's Event Dates list) approaches. Uses the next upcoming event.
| Setting | Description |
|---|---|
| Thresholds | List of { daysBeforeEvent, escalateTo } pairs. Checked from largest to smallest. |
Example: An event venture uses event proximity to ramp up priority as the show date approaches:
Rule Type: Calendar Date Range
Escalates during a specific date range. Useful for seasonal obligations.
| Setting | Description |
|---|---|
| Start Date | When the rule becomes active |
| End Date | When the rule deactivates |
| Escalate To | Priority level during the active window |
| Label | Optional description shown as the escalation reason (e.g., "Tax season") |
Example: Set a rule from Feb 1 to Apr 15 that escalates to Critical with label "Tax season". During that window, the venture and its tasks will be treated as Critical priority.
Managing Escalation Rules
- Open the venture editor (click the pencil icon on a card)
- Expand the "Priority Escalation Rules" collapsible section
- Click "+ Add escalation rule" to create a new rule
- Choose a rule type, configure its parameters and thresholds
- Use the Enabled checkbox to toggle rules on/off without deleting them
- Click × to delete a rule
- Save the venture — rules are persisted with the venture data
Per-Todo Priority Overrides
Individual tasks can override their venture's effective priority. In the venture editor, each task row has a dropdown:
- Auto (default) — inherits the venture's effective priority (baseline + escalation rules)
- Critical / High / Medium / Low — forces this task to that specific priority level, regardless of the venture
This is useful when one specific task is more urgent than the venture as a whole. For example, a Low-priority venture might have one Critical task like "Renew domain before expiration".
How Effective Priority Is Computed
When the dashboard renders, each venture's effective priority is calculated:
The effective priority determines:
- Sort order of venture cards in priority view
- Sort order of tasks in the right-side priorities panel
- The priority badge shown on each venture card (shows
↑when escalated) - Which priority group a task appears under in the panel
Tasks & Recurrence
Each venture can have up to 10 tasks (called "priorities" in the UI). Tasks appear in the right-side panel, sorted by effective priority.
Task Fields
| Field | Description |
|---|---|
| Text | Task description (max 80 chars) |
| Priority Override | Auto (inherit) or Critical/High/Medium/Low |
| Recurrence | One-off, Recurring (interval), or Before Event |
Recurrence Types
One-off
Standard task. When completed, you choose a reset timer (Never, 1 week, 2 weeks, 1 month) or it stays checked off permanently.
Recurring (Interval)
Automatically resets after a set interval: Weekly (7d), Biweekly (14d), or Monthly (30d). When you check it off, it schedules an auto-reset for the interval period.
Before Event
Tied to the venture's event dates. You specify how many days before the event the task is due. The task auto-resets for each new event cycle.
Example: "Lock venue" is due 90 days before an event. After the event passes, it resets for the next event date.
Event Dates
Ventures can have a list of event dates with labels (e.g., "Spring Show - May 16"). These dates are used by:
- Before Event tasks — calculates due dates relative to the next upcoming event
- Event Proximity escalation rules — raises priority as the event approaches
- Key Data display — shows countdown on venture cards
The system always uses the next upcoming event date (any event within the past day or in the future, sorted soonest first).
Card Display & Key Data
Venture cards can show live data chips pulled from external APIs. The Key Data editor in the venture modal lets you drag chips between three zones:
- Above fold — always visible on the card
- Below fold — visible when card details are expanded
- Available pool — not shown on the card
Available Key Data Types
| Chip | Source | Shows |
|---|---|---|
| Value Line | Manual | Revenue/value description text |
| Next Steps | Tasks | First 3 task texts |
| Description | Manual | Full venture description |
| Note | Manual | Custom card note text |
| YouTube Subs | YouTube API | Subscriber count |
| YouTube Views | YouTube API | Total view count |
| Stripe Revenue | Stripe API | MRR |
| Stripe Subs | Stripe API | Active subscriber count |
| Event Dates | Event dates list | Next event countdown |
| Last Event Recap | Ticket Tailor | Revenue from last event |
| Vendor Booths Left | Ticket Tailor | Available vendor slots |
| Tickets | Ticket Tailor | Ticket sales data |
Card Styling
Each card can be customized with:
- Color — tint color for the card border and background
- Style — solid fill or gradient
- Gradient angle — direction of the gradient (0°–315°)
- Second color — optional end color for gradients
- Texture — subtle pattern overlay (dots, grid, lines, noise, topo, wave)
Revenue
The Revenue page (/dashboard.html) aggregates financial data from multiple sources:
| Source | Data | API Endpoint |
|---|---|---|
| Stripe | MRR, active subs, available balance per account | /api/stripe |
| YouTube | Estimated revenue, views, watch time (requires OAuth) | /api/youtube-revenue |
| Square | Monthly revenue, transaction count | /api/square |
| Ticket Tailor | Event ticket sales, vendor table revenue | /api/tickettailor |
| Cash Payments | Manual cash payment records per event | /api/cash-payments |
Features: date range filtering (MTD, 30d, 90d, YTD, custom), privacy mode to blur dollar amounts.
Data & Storage
Client-Side (localStorage)
All Dashboard state is stored in localStorage under key vcc_state:
Export / Import
Use the Export button to download the full state as JSON. Use Import to restore from a backup. This is the only way to transfer data between browsers or recover from a localStorage clear.
Server-Side
The Express server (server.js) serves static files and provides API endpoints. External data is fetched server-side and cached. Service modules live in services/:
youtube.js— YouTube Data API (public stats + lastUploadDate) and Analytics API (revenue via OAuth)stripe.js— Stripe subscription and balance datasquare.js— Square payment datatickettailor.js— Ticket Tailor event datacashpayments.js— Cash payment tracking (file-based)collector.js— Aggregates all data into a single response
Architecture
Key Functions (dashboard.html)
| Function | Purpose |
|---|---|
getEffectivePriority(venture) | Computes effective priority from baseline + escalation rules |
evaluateEscalationRule(venture, rule) | Evaluates a single escalation rule against current conditions |
sortVentures(arr) | Sorts ventures by effective priority, then attention rule, then name |
renderPrioritiesPanel() | Renders the right-side task list grouped by effective priority |
renderPriorityView(main, ventures) | Renders the card grid sorted by effective priority |
createCard(v) | Creates a venture card DOM element with badges, key data, and details |
openModal(id) | Opens the venture editor modal (add/edit ventures, rules, tasks) |
normPri(p) | Normalizes a task to object form with all fields including priorityOverride |
getNextEventDate(v) | Returns the next upcoming event timestamp for a venture |
checkResets() | Auto-resets completed recurring/event-relative tasks when due |
loadState() / saveState() | Loads from / saves to localStorage with migrations |