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
Notion Connection
Workspaces
Each workspace can point to a different Notion database. Leave DB ID blank to use the default above.
Field Mapping
Proxy Setup (Cloudflare Worker — free)
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.
- Go to workers.cloudflare.com → sign up free → click Create Worker
- Delete the default code, paste the script below
- Click Deploy → copy the worker URL
- 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;
}
}
Danger Zone