🌲 Forest Focus

Notion
🪙 0

Tasks

📋

Configure Notion in Settings,
then click Refresh

Or add task manually
Pick a task
Your Forest
Complete tasks to grow your forest 🌱

Reports

📈 Productivity & Output
Tasks Completed
Completion Rate
On-Time Rate
Tasks Completed by Day
⏱ Time Allocation
Planned vs Actual (min/day)
Time-of-Day Patterns
📋 Backlog & Workload
Open Tasks (loaded)
Overdue Tasks
Avg Session (min)
Session Log

🌲 Mi Bosque Chileno

0
Trees Planted
0h
Total Focus Time
0
Species Found
0
Day Streak
🌱

Complete tasks to plant your first tree

Species Guide

Each workspace can point to a different Notion database. Leave DB ID blank to use the default above.

Notion's API doesn't allow browser apps to call it directly (CORS). A free Cloudflare Worker acts as a relay — set it up once in ~2 minutes.

  1. Go to workers.cloudflare.com → sign up free → click Create Worker
  2. Delete the default code, paste the script below
  3. Click Deploy → copy the worker URL
  4. Paste that URL into the Proxy URL field on the left
Worker script:
export default { async fetch(request) { if (request.method === 'OPTIONS') { return new Response(null, { headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': '*', 'Access-Control-Allow-Methods': 'GET,POST,PATCH,PUT,DELETE,OPTIONS' }}); } const url = new URL(request.url); const notionUrl = 'https://api.notion.com' + url.pathname + url.search; const res = await fetch(notionUrl, { method: request.method, headers: request.headers, body: ['GET','HEAD'].includes(request.method) ? undefined : request.body, }); const out = new Response(res.body, res); out.headers.set('Access-Control-Allow-Origin', '*'); out.headers.set('Access-Control-Allow-Headers', '*'); return out; } }