A visual-first progress tracking app that connects goals, tasks, and personal lists (movies, restaurants, etc.) into an interactive node-and-connection “cloud” view. Built with Flutter for cross-platform mobile support.
Most progress trackers treat goals as flat lists. Progress Cloud treats them as connected systems.
- A yearly goal can connect to monthly or weekly goals
- Tasks don’t need strict parent/child relationships
- Lists (movies, restaurants, books, etc.) can link directly to goals
- Everything is visualized as nodes with vector connections
Examples:
"Watch 1 movie per month" → connected to a Movies List → individual movie items
"Run every day" → track miles run daily → view total monthly/yearly mileage → goal: "100 miles/month"
- Non-hierarchical goal relationships
- Visual graph-based progress tracking
- Flexible timeframes (daily, weekly, monthly, yearly)
- Lists as actionable progress inputs
- One-off tasks OR chained goals
-
Flutter
-
Custom rendering using:
CustomPainter- Gesture detection
- Zoom / pan canvas
-
State management (TBD):
- Riverpod / Bloc / Provider
-
Local-first (SQLite / Drift)
-
Optional cloud sync later:
- Firebase
- Supabase
- Custom REST API
- One-off tasks
- Chained goals (Year → Month → Week → Day)
- Goals don't require strict correlation (e.g. yearly = 365 days, weekly = 5 days)
- Metrics tracking: Attach measurable values to progress
- Distance (miles, kilometers)
- Time (minutes, hours)
- Count (reps, pages, etc.)
- Custom units
- Metric aggregation: View totals across timeframes
- Daily entries roll up to weekly/monthly/yearly totals
- Set goals based on aggregate metrics (e.g. "100 miles this month")
-
Custom lists:
- Movies to watch
- Restaurants to try
- Books to read
- Anything user-defined
-
List items can:
- Stand alone
- Be linked to tasks or goals
-
Nodes represent:
- Tasks
- Goals
- Lists
- List items
-
Lines represent relationships
-
Interactive graph:
- Tap to inspect
- Drag to reposition
- Zoom / pan canvas
Task
- id
- title
- description
- timeframe (daily / weekly / monthly / yearly)
- progress tracking rules
- metricType (distance / time / count / custom / none)
- metricUnit (miles / km / minutes / hours / reps / etc.)
- metricTarget (optional goal value)
Goal
- id
- name
- optional timeframe
- optional completion logic
- metricType (optional)
- metricTarget (e.g. "run 500 miles this year")
List
- id
- name
- type (movies, restaurants, custom)
ListItem
- id
- listId
- title
- optional metadata (rating, location, etc.)
Connection
- fromNodeId
- toNodeId
- relationshipType
Flow 1: List-based Progress
- User creates a Movies list
- Adds movies they want to watch
- Creates a task: "Watch 1 movie per month"
- Links the task to the Movies list
- Marks movies as watched → task progress updates
- Views everything in the cloud visualization
Flow 2: Metric-based Progress
- User creates a task: "Run daily"
- Sets metric type to distance with unit miles
- Each day, logs run with mileage (e.g. 3.2 miles)
- Creates a monthly goal: "Run 100 miles"
- Links goal to the daily task
- Views daily entries, monthly total (85/100 miles), yearly total (450 miles)
- Infinite canvas
- Force-directed or manual node layout
- Curved or straight vector lines
- Color-coded node types
- Subtle animations for interactions
Early architecture & concept phase
Planned next steps:
- Flutter project scaffolding
- Core data models
- Basic list + task CRUD
- Initial static cloud visualization
- Interactive node selection
- Progress analytics
- Smart suggestions (e.g. “You’re close to completing this goal”)
- Templates for common goals
- AI-assisted goal breakdown
- Sharing / collaboration
- Cloud sync & multi-device support
This project is currently a learning + exploration project. Contributions, ideas, and feedback are welcome once the core structure is in place.
TBD