Skip to content
Notion Arena
🧠
📚 Docs & SystemsProNative recipe

PARA Life OS

Projects, Areas, Resources, Archive, wired with relations and a home dashboard.

Version
v2.0.0
Updated
2026-10-03
Plan
Plus

The install plan

Exactly what Notion Arena sends to Notion, in order. Notion's data-source model forces two passes: relations, rollups and the formulas that read them need data_source_ids that only exist once the databases do.

35
requests
10
manual steps
1POST
/v1/pages

Create the “para-life-os” container page under the page you chose

2POST
/v1/databases

Create the “Projects” database with 5 base properties

3GET
/v1/databases/{projects_database_id}

Read back Projects to get its default data source id

4PATCH
/v1/data_sources/{projects_data_source_id}

Add 9 deferred properties to Projects: relations (with resolved data_source_ids), then the rollups and formulas that read them

5POST
/v1/databases

Create the “Areas” database with 5 base properties

6GET
/v1/databases/{areas_database_id}

Read back Areas to get its default data source id

7PATCH
/v1/data_sources/{areas_data_source_id}

Add 5 deferred properties to Areas: relations (with resolved data_source_ids), then the rollups and formulas that read them

8POST
/v1/databases

Create the “Resources” database with 7 base properties

9GET
/v1/databases/{resources_database_id}

Read back Resources to get its default data source id

10PATCH
/v1/data_sources/{resources_data_source_id}

Add 1 deferred properties to Resources: relations (with resolved data_source_ids), then the rollups and formulas that read them

11POST
/v1/databases

Create the “Notes” database with 5 base properties

12GET
/v1/databases/{notes_database_id}

Read back Notes to get its default data source id

13PATCH
/v1/data_sources/{notes_data_source_id}

Add 2 deferred properties to Notes: relations (with resolved data_source_ids), then the rollups and formulas that read them

14POST
/v1/databases

Create the “Tasks” database with 5 base properties

15GET
/v1/databases/{tasks_database_id}

Read back Tasks to get its default data source id

16PATCH
/v1/data_sources/{tasks_data_source_id}

Add 2 deferred properties to Tasks: relations (with resolved data_source_ids), then the rollups and formulas that read them

17POST
/v1/views

Create the “Active” board view on projects

18POST
/v1/views

Create the “Areas” gallery view on areas

19POST
/v1/views

Create the “Today” list view on tasks

20POST
/v1/views

Create the “Inbox” table view on notes

21POST
/v1/views

Create the “Quick capture” form view on notes

22POST
/v1/views

Create the “Library” table view on resources

23POST
/v1/views

Create the “Needs a review” table view on areas

24POST
/v1/pages

Seed 2 rows into Projects so the views are not empty on first open (one request per row; Notion has no bulk insert)

×2
25POST
/v1/pages

Seed 3 rows into Areas so the views are not empty on first open (one request per row; Notion has no bulk insert)

×3
26POST
/v1/pages

Seed 2 rows into Resources so the views are not empty on first open (one request per row; Notion has no bulk insert)

×2
27POST
/v1/pages

Seed 1 rows into Notes so the views are not empty on first open (one request per row; Notion has no bulk insert)

28POST
/v1/pages

Seed 2 rows into Tasks so the views are not empty on first open (one request per row; Notion has no bulk insert)

×2
29POST
/v1/pages

Create the “Home” page

30PATCH
/v1/blocks/{home_page_id}/children

Append 16 blocks of page body

3 steps cannot be scripted: Synced block duplicates across dashboards; Button: “Start my day”; Recurring template: weekly review.

Run it yourselfNotion-Version 2026-03-11
curl -X POST https://notionarena.vercel.app/api/install \
  -H 'content-type: application/json' \
  -d '{
    "component": "para-life-os",
    "mode": "plan"
  }'

# add "token" and "parentPageId" and switch to "mode": "api" to install for real

What gets created

The real property schemas, not a description of them. Every formula below is a Notion Formula 2.0 expression you can paste into a property by hand if you would rather not use the API at all.

🚀

Projects

ref: projects
1× title1× status3× relation1× people1× date1× rich_text2× rollup4× formula
Namen/a
StatusSomeday → Next up → Active → Blocked +2
Area→ areas (two-way)
Ownern/a
Deadlinen/a
Outcomen/a
Tasks→ tasks (two-way)
Notes→ notes (two-way)
Tasks donechecked(Tasks.Done)
Tasks totalcount_values(Tasks.Name)
% completeif(prop("Tasks total") == 0, 0, round(prop("Tasks done") / prop("Tasks total") * 100))
Progressslice("██████████", 0, round(prop("% complete") / 10)) + " " + format(prop("% complete")) + "%"
Days to deadlineif(empty(prop("Deadline")), 0, dateBetween(prop("Deadline"), now(), "days"))
Healthifs(prop("Status") == "Blocked", "🔴 Blocked", prop("Days to deadline") < 0 and prop("Status") != "Done", "🔴 Overdue", prop("Days to deadline") < 7 and prop("% complete") < 70, "🟡 Tight", prop("Status") == "Active", "🟢 On it", true, "⚪")
🧭

Areas

ref: areas
1× title1× rich_text1× people1× select1× date3× relation1× rollup1× formula
Namen/a
Standardn/a
Ownern/a
Review cadenceWeekly · Monthly · Quarterly
Last reviewedn/a
Projects→ projects
Notes→ notes (two-way)
Resources→ resources (two-way)
Active projectscount(Projects.Status)
Review dueifs(prop("Review cadence") == "Weekly", dateBetween(now(), prop("Last reviewed"), "days") > 7, prop("Review cadence") == "Monthly", dateBetween(now(), prop("Last reviewed"), "days") > 31, true, dateBetween(now(), prop("Last reviewed"), "days") > 92)
📚

Resources

ref: resources
1× title2× select1× url1× multi_select1× relation1× checkbox1× rich_text
Namen/a
TypeArticle · Book · Tool · Course +2
Linkn/a
TopicDesign · Engineering · Writing · Business +1
Area→ areas
Rating★ · ★★ · ★★★ · ★★★★
Read / usedn/a
Summaryn/a
🗒️

Notes

ref: notes
1× title1× created_time1× select2× relation1× multi_select1× checkbox
Namen/a
Capturedn/a
KindFleeting · Literature · Permanent · Meeting
Project→ projects
Area→ areas
Tagsidea · question · quote · decision
Process thisn/a
✅

Tasks

ref: tasks
1× title1× checkbox1× date2× select1× relation1× formula
Namen/a
Donen/a
Duen/a
Effort2m · 15m · 1h · Half day
Project→ projects
WhereToday · This week · Later
Stateifs(prop("Done"), "✅", empty(prop("Due")), "⚪", prop("Due") < now(), "🔴", dateBetween(prop("Due"), now(), "days") == 0, "🟠", true, "🟢")

Views

Created through POST /v1/views, which shipped in March 2026 and is the reason provisioning a workspace from code finally works end to end.

Activeboard

on projects

filter: {"property":"Status","status":{"equals":"Active"}}…

Areasgallery

on areas

Todaylist

on tasks

filter: {"and":[{"property":"Done","checkbox":{"equals":false}},{"proper…

Inboxtable

on notes

filter: {"property":"Process this","checkbox":{"equals":true}}…

Quick captureform

on notes

Librarytable

on resources

Needs a reviewtable

on areas

filter: {"property":"Review due","checkbox":{"equals":true}}…

Documentation pages

Appended with real block types (headings, toggles, callouts, to-dos, column lists) in chunks of 100, the Append block children limit.

🏠Home16 blocks
🔁 synced block
🏠 Home

One entry point. Everything else is a linked view.

Today

· linked view of Tasks → Today

Active

· linked view of Projects → Active

🔁This header is a synced block. Create it once, then duplicate it onto every dashboard page so navigation is consistent and editable from one place. The API can create the original; the duplicates are an app-side step.

Today

Linked view: Tasks, filtered to Where = Today and Done is unchecked.

Active projects

Linked view: Projects, Status = Active, sorted by Days to deadline.

Capture
🔖 https://www.notion.so/

Weekly review
1.Empty the Notes inbox. Every fleeting note becomes permanent, gets a project, or is deleted.
1.Walk every Active project. Is it still active? Move it to Someday or Done without guilt.
1.Check Areas with Review due. Update Last reviewed only if you actually looked.
1.Pick three tasks for Today, and only three.
Archive is a status, not a place. Everything you have ever written stays searchable.

The parts the API cannot do

Every recipe ships with its manual steps written out, because pretending the API covers everything is how people end up with a half-built workspace. These are real Notion limitations, quoted from the API reference.

Synced block duplicates across dashboards

The API can append an original synced_block, but the duplicate instances that reference it must be created in the app.

  1. 1Build the header once on Home, inside a synced block.
  2. 2On every other dashboard page: type /synced and choose “Paste from elsewhere”, then pick the Home header.
  3. 3Editing any instance edits all of them. That is the whole point.

Button: “Start my day”

Button properties are response-only in the Notion API: the schema is returned on read, but the API ignores button settings on write and cannot create a button or configure its actions.

  1. 1On Home: /button.
  2. 2Action 1: Add page to → Notes, Kind = Fleeting, Process this = checked (a blank capture line).
  3. 3Action 2: Open page → Home, so the Today view refreshes into focus.
  4. 4Action 3 (optional): show a confirmation with today's date.

Recurring template: weekly review

Recurring database templates (daily/weekly/monthly) are configured in the app on the template's ••• menu; the API can create pages from a template but cannot schedule recurrence.

  1. 1Create a “Reviews” database with Date and a body containing the four numbered steps above.
  2. 2Template ••• → Repeat → Every Sunday at 17:00.
  3. 3Inside the body, add linked views: Notes inbox, Projects active, Areas needs a review.

About this component

Tiago Forte's PARA method as a real Notion system rather than four empty pages. Notes and Tasks relate into Projects and Areas, Resources hold reference material, and Archive is a filtered view rather than a fourth silo. Ships with the home dashboard page.

What it does

  • Archive is a status, not a place, so history stays searchable
  • Weekly review template prompts a project-by-project sweep
  • Synced block header reused across every dashboard page
  • Notes database supports a quick-capture form view for mobile

Where people put it

↳Knowledge workers consolidating five apps into one
↳Students managing courses, papers and admin
↳Consultants juggling client projects and personal ones

Pairs well with

All in Docs & Systems
📖
New

Reading Progress Tracker

Track pages read in one book, with progress saved on this device.

DocsFreeWidgetv1.0.0
🧠
New

Spaced Repetition Deck

A due-card queue with simple local review intervals.

DocsFreeWidgetv1.0.0
🧠
New

Flashcards

A focused question-and-answer deck with active-recall progress.

DocsFreeWidgetv1.0.0