PlainerOpen Plainer →
PLAINER · FOLDER TEMPLATE

Home project and budget template for Plainer

This folder includes a worked reading corner project, weekly planning notes and a home projects board.

Folder · Home project and budget · By Plainer · Version 1

Use this template

Free, no account needed. Opens Plainer with an example plan and shows what the template adds before you install it. Sign in when you want to keep it.

Personal6 files · 2 folders
Folder structure
  • Personal /
  • Personal / Home /

Includes 4 sample records. They will be copied too.

Personal / Reading corner.plainerDocument
Personal / Weekly notes.plainerDocument
Personal / Weekly reflection.plainerDocument
Personal / Little things to remember.plainerDocument
Personal / Home / Home projects.jsonData

Small jobs, purchases and next decisions around the apartment.

Fields: Name, Stage, Next step.

4 sample records. Add and edit your own after copying.

Fields and opening view
{
  "fields": [
    {
      "key": "title",
      "name": "Name",
      "type": "text",
      "options": [],
      "required": false
    },
    {
      "key": "status",
      "name": "Stage",
      "type": "select",
      "options": [
        "Next",
        "In progress",
        "Done"
      ],
      "required": false
    },
    {
      "key": "next_step",
      "name": "Next step",
      "type": "text",
      "options": [],
      "required": false
    }
  ],
  "presentation": {
    "id": "4664675c-125e-4966-9323-3ff39641cea7",
    "name": "Home projects",
    "source": "4664675c-125e-4966-9323-3ff39641cea7",
    "layout": "board",
    "fields": [
      "title",
      "next_step"
    ],
    "groupBy": "status",
    "descending": false,
    "plannerLayout": "both",
    "bindings": {},
    "code": {
      "html": "",
      "css": "",
      "javascript": ""
    },
    "filters": []
  },
  "format": "records",
  "rootShape": "array",
  "valueRows": false
}
[
  {
    "title": "A reading corner",
    "status": "In progress",
    "next_step": "Measure the shelf footprint with tape."
  },
  {
    "title": "Bike service",
    "status": "Next",
    "next_step": "Call the shop and ask about a drop-off on Tuesday."
  },
  {
    "title": "A better entryway",
    "status": "Next",
    "next_step": "Test a shallow shoe rack before buying hooks."
  },
  {
    "title": "Clear the kitchen shelf",
    "status": "Done",
    "next_step": "Take the spare jars to the refill shop."
  }
]
Personal / Review my week.commandCommand

Runs with the assistant after you sign in. Nothing runs when you add a copy.

Read Weekly notes and Weekly reflection. Compare the remaining work with the hours protected this week. Suggest one thing to finish, one task to move out, and one block worth protecting. Ask before moving tasks.
Referenced files and inputs
{
  "bindings": {},
  "inputs": []
}

What it does

  • Check the space and compare the four costs.
  • Run Reading corner budget and change the lamp price.
  • Keep the next measurement or buying decision on the board.

What you get after installing

Home projects.json
A data file with 3 fields: Name, Stage, Next step. Includes 4 sample records.
Review my week.command
A command file. Runs with the planning assistant when you choose Run.
Reading corner.plainer
An editable document with its full content and heading outline.
Weekly notes.plainer
An editable document with its full content and heading outline.
Weekly reflection.plainer
An editable document with its full content and heading outline.
Little things to remember.plainer
An editable document with its full content and heading outline.
Personal/
A folder that keeps the included files organized.
Home/
A folder that keeps the included files organized.

Installed files are your own copies. Files that use your tasks, projects or goals keep using your existing content. Commands run only when you choose Run.

Who it is for

  • People planning a small room project, purchase or repair.

How to install it

  1. Select Use this template. Plainer opens with an example plan, no account needed.
  2. Review what the template adds, then choose Add my copy. As a guest, your copy is saved in this browser.
  3. Sign in or create a free account to keep it. Your guest plan, with the template, moves into your account. Commands that use the assistant need the account.
Use this template

Free, no account needed. Opens Plainer with an example plan and shows what the template adds before you install it. Sign in when you want to keep it.

Public template contents
{
  "collections": [
    {
      "id": "4664675c-125e-4966-9323-3ff39641cea7",
      "name": "Home projects",
      "description": "Small jobs, purchases and next decisions around the apartment.",
      "fields": [
        {
          "key": "title",
          "name": "Name",
          "type": "text",
          "options": [],
          "required": false
        },
        {
          "key": "status",
          "name": "Stage",
          "type": "select",
          "options": [
            "Next",
            "In progress",
            "Done"
          ],
          "required": false
        },
        {
          "key": "next_step",
          "name": "Next step",
          "type": "text",
          "options": [],
          "required": false
        }
      ],
      "format": "records",
      "rootShape": "array",
      "valueRows": false,
      "presentation": {
        "id": "4664675c-125e-4966-9323-3ff39641cea7",
        "name": "Home projects",
        "source": "4664675c-125e-4966-9323-3ff39641cea7",
        "layout": "board",
        "fields": [
          "title",
          "next_step"
        ],
        "groupBy": "status",
        "descending": false,
        "plannerLayout": "both",
        "bindings": {},
        "code": {
          "html": "",
          "css": "",
          "javascript": ""
        },
        "filters": []
      }
    }
  ],
  "records": [
    {
      "id": "8f682d20-a003-4811-bb64-13a011659385",
      "collectionId": "4664675c-125e-4966-9323-3ff39641cea7",
      "values": {
        "title": "A reading corner",
        "status": "In progress",
        "next_step": "Measure the shelf footprint with tape."
      },
      "createdAt": "2026-11-15T17:07:04.125Z",
      "updatedAt": "2026-11-15T17:07:04.125Z"
    },
    {
      "id": "8da87092-7fb8-49bd-bbf1-c15216035fb6",
      "collectionId": "4664675c-125e-4966-9323-3ff39641cea7",
      "values": {
        "title": "Bike service",
        "status": "Next",
        "next_step": "Call the shop and ask about a drop-off on Tuesday."
      },
      "createdAt": "2026-11-15T17:07:04.125Z",
      "updatedAt": "2026-11-15T17:07:04.125Z"
    },
    {
      "id": "fb3485b0-a436-4467-97ff-8cc293a8e930",
      "collectionId": "4664675c-125e-4966-9323-3ff39641cea7",
      "values": {
        "title": "A better entryway",
        "status": "Next",
        "next_step": "Test a shallow shoe rack before buying hooks."
      },
      "createdAt": "2026-11-15T17:07:04.125Z",
      "updatedAt": "2026-11-15T17:07:04.125Z"
    },
    {
      "id": "d908644c-b4d8-41c8-99d0-9ff4ddc6d6a5",
      "collectionId": "4664675c-125e-4966-9323-3ff39641cea7",
      "values": {
        "title": "Clear the kitchen shelf",
        "status": "Done",
        "next_step": "Take the spare jars to the refill shop."
      },
      "createdAt": "2026-11-15T17:07:04.125Z",
      "updatedAt": "2026-11-15T17:07:04.125Z"
    }
  ],
  "views": [],
  "commands": [
    {
      "id": "a4cb1df2-b933-4cff-a9df-46dbf69559a4",
      "name": "Review my week",
      "description": "",
      "inputs": [],
      "mode": "assistant",
      "code": "",
      "bindings": {},
      "prompt": "Read Weekly notes and Weekly reflection. Compare the remaining work with the hours protected this week. Suggest one thing to finish, one task to move out, and one block worth protecting. Ask before moving tasks.",
      "steps": []
    }
  ],
  "documents": [
    {
      "id": "865ab881-14a1-4cf3-a3d3-15ba3db34a3e",
      "name": "Reading corner",
      "format": "md",
      "content": "# A reading corner for $250\n\nFit a lamp, a low shelf and a seat cushion into the 110 cm alcove beside the living room window. Keep the total under **$250 including delivery and a 15% contingency**. Reuse the chair and check that the route to the window stays clear.\n\n## Decide before buying\n\n- [x] Measure the alcove at floor and shoulder height. Narrowest width is 110 cm.\n- [ ] Tape out a shelf no wider than 90 cm and no deeper than 30 cm.\n- [ ] Test the lamp position using a light we already own. Check glare from the chair after dark.\n- [ ] Compare the shelf’s assembly and mounting requirements with the wall and tools on hand.\n\n### What success looks like\n\nYou can reach a book and switch on the lamp while seated. The shade keeps direct light out of your eyes. The cushion fits the existing chair and the shelf leaves room to get to the window latch. Tape the proposed furniture outlines on the floor and walk through the space once.\n\n## Reading corner budget\n\nThe first estimate leaves **$23.45** once the reserve is included. Try a lamp at **$60** in the calculator and see what remains before committing.\n\n```margin-view\n{\"name\":\"Reading corner budget\",\"html\":\"<style>\\n  :root{color-scheme:light dark}\\n  body{\\n    margin:0;background:var(--paper);color:var(--ink);\\n    --paper:#f9f8f3;--surface:#fff;--ink:#222923;--muted:#575e56;\\n    --line:#d8dbd1;--field:#7e857a;--accent:#305b47;--on-accent:#fff;\\n    --tint:#e9f2e9;--track:#d3ded2;--warning:#952d20;--warning-bg:#fae7df;\\n  }\\n  body:has(.budget){--paper:#fcf8ef;--accent:#784927;--tint:#f6ead8;--track:#e5d6c2}\\n  body:has(.itinerary){--paper:#f1f6f8;--accent:#25546a;--tint:#e0eff4;--track:#cddde4}\\n  body:has(.launch){--paper:#f8f6fc;--accent:#574076;--tint:#ede7f6;--track:#ded5ea}\\n  main{max-width:45rem;margin:0 auto;padding:clamp(14px,4vw,28px);font-size:14px;line-height:1.45}\\n  header{margin-bottom:14px}\\n  h1{font-size:clamp(21px,4.5vw,31px);letter-spacing:-.04em;line-height:1.12;margin:0;font-weight:660}\\n  header p{margin:5px 0 0;color:var(--muted)}\\n  form,p,ol,ul,dl,dd{margin:0}\\n  button,input{font:inherit;min-height:44px}\\n  button{\\n    min-width:44px;border:1px solid var(--field);border-radius:9px;padding:6px 11px;\\n    color:var(--ink);background:var(--surface);cursor:pointer;font-weight:600\\n  }\\n  button:hover{background:var(--tint)}\\n  button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}\\n  :is(button,input):focus-visible{outline:2px solid var(--accent);outline-offset:2px}\\n  progress{display:block;width:100%;height:8px;border:0;border-radius:20px;overflow:hidden;appearance:none;background:var(--track);accent-color:var(--accent)}\\n  progress::-webkit-progress-bar{background:var(--track)}\\n  progress::-webkit-progress-value{background:var(--accent);border-radius:20px}\\n  progress::-moz-progress-bar{background:var(--accent);border-radius:20px}\\n  .summary{padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:var(--tint)}\\n  .summary[data-state=over]{background:var(--warning-bg)}\\n  .summary[data-state=over] :is(output,progress){--accent:var(--warning)}\\n  .summary-line{display:flex;align-items:baseline;justify-content:space-between;gap:5px 12px;flex-wrap:wrap;margin-bottom:8px}\\n  .summary-line>span{font-size:13px;font-weight:620}\\n  .summary-line output{font-size:clamp(21px,4vw,28px);font-weight:690;line-height:1.1;color:var(--accent);letter-spacing:-.045em;font-variant-numeric:tabular-nums}\\n  .summary-status{margin-top:7px;color:var(--muted);font-size:13px}\\n  .fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin-top:12px}\\n  label{display:grid;align-content:start;gap:3px;min-width:0;font-size:13px;font-weight:580}\\n  input{\\n    width:100%;min-width:0;border:1px solid var(--field);border-radius:8px;padding:0 8px;\\n    background:var(--surface);color:var(--ink);font-size:16px;font-variant-numeric:tabular-nums\\n  }\\n  .budget .fields{grid-template-columns:repeat(auto-fit,minmax(min(100%,115px),1fr))}\\n  .budget .breakdown{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:12px;color:var(--muted)}\\n  .breakdown dd{display:inline;color:var(--ink);font-variant-numeric:tabular-nums}\\n  .breakdown dt{display:inline}\\n  .itinerary-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:\\\"days rain\\\" \\\"summary summary\\\";align-items:center;gap:6px 10px;margin-bottom:7px}\\n  .days{grid-area:days;display:flex;flex-wrap:wrap;gap:6px}\\n  #rain{grid-area:rain}\\n  #day-summary{grid-area:summary;margin:0}\\n  .day-summary{font-size:13px;color:var(--muted)}\\n  @media(max-width:400px){.itinerary-controls{grid-template-areas:\\\"days days\\\" \\\"summary rain\\\"}}\\n  @media(max-width:350px){\\n    .budget .breakdown{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}\\n    .budget .breakdown dd{display:block}\\n  }\\n  .budget{padding-bottom:12px}\\n  .budget header{margin-bottom:11px}\\n  .budget .summary{padding-block:9px}\\n  .budget .fields{gap:6px 12px;margin-top:8px}\\n  .timeline,.launch-items{list-style:none;padding:0}\\n  .timeline li{\\n    display:grid;grid-template-columns:7ch 1fr;gap:5px;border-top:1px solid var(--line);padding:8px 3px;\\n    overflow-wrap:anywhere\\n  }\\n  time{color:var(--accent);font-weight:680;font-variant-numeric:tabular-nums}\\n  .launch .summary-line{align-items:center}\\n  .launch-items{margin-top:9px}\\n  #empty:not(:empty){margin-top:10px}\\n  .launch-items li{display:flex;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}\\n  .task-state{\\n    min-width:53px;flex:none;border-radius:5px;padding:2px 5px;text-align:center;\\n    font-size:12px;font-weight:600;color:var(--muted);background:var(--surface);border:1px solid var(--line)\\n  }\\n  .task-state[data-done=true]{color:var(--accent);background:var(--tint)}\\n  @media(prefers-color-scheme:dark){\\n    body{\\n      --paper:#1b211d;--surface:#252d27;--ink:#f1f4ed;--muted:#bcc6bb;--line:#405044;--field:#879888;\\n      --accent:#acd8bc;--on-accent:#14251b;--tint:#263b2e;--track:#45594b;\\n      --warning:#ffbdab;--warning-bg:#402a24;\\n    }\\n    body:has(.budget){--paper:#241d17;--surface:#312920;--accent:#f1c092;--tint:#3b2d20;--track:#5b4736}\\n    body:has(.itinerary){--paper:#19232a;--surface:#222e37;--accent:#acd9ef;--tint:#253945;--track:#435a68}\\n    body:has(.launch){--paper:#231e2e;--surface:#30283c;--accent:#ddc4f6;--tint:#392d49;--track:#544161}\\n  }\\n</style>\\n  <main class=\\\"budget\\\">\\n    <header><h1>Reading corner budget</h1><p>Compare your estimates with a $250 cap.</p></header>\\n    <div class=\\\"summary\\\" id=\\\"summary\\\">\\n      <div class=\\\"summary-line\\\"><span>Estimated total</span><output aria-label=\\\"Estimated total\\\" id=\\\"total\\\"></output></div>\\n      <progress aria-label=\\\"Share of budget used\\\" max=\\\"25000\\\"></progress>\\n      <p class=\\\"summary-status\\\" id=\\\"budget-status\\\" role=\\\"status\\\"></p>\\n    </div>\\n    <form>\\n      <div class=\\\"fields\\\">\\n        <label>Lamp ($)<input type=\\\"number\\\" min=\\\"0\\\" max=\\\"99999\\\" step=\\\".01\\\" value=\\\"48\\\" required></label>\\n        <label>Shelf ($)<input type=\\\"number\\\" min=\\\"0\\\" max=\\\"99999\\\" step=\\\".01\\\" value=\\\"96\\\" required></label>\\n        <label>Cushion ($)<input type=\\\"number\\\" min=\\\"0\\\" max=\\\"99999\\\" step=\\\".01\\\" value=\\\"35\\\" required></label>\\n        <label>Delivery ($)<input type=\\\"number\\\" min=\\\"0\\\" max=\\\"99999\\\" step=\\\".01\\\" value=\\\"18\\\" required></label>\\n      </div>\\n    </form>\\n    <dl class=\\\"breakdown\\\">\\n      <div><dt>Items and delivery</dt> <dd id=\\\"base\\\"></dd></div>\\n      <div><dt>15% contingency</dt> <dd id=\\\"reserve\\\"></dd></div>\\n    </dl>\\n  </main>\\n  <script>\\n    const money = new Intl.NumberFormat('en-US', {style:'currency', currency:'USD'});\\n    const dollars = cents => money.format(cents / 100);\\n    const form = document.querySelector('form');\\n    const fields = [...form.querySelectorAll('input')];\\n    const total = document.querySelector('#total');\\n    const base = document.querySelector('#base');\\n    const reserve = document.querySelector('#reserve');\\n    const status = document.querySelector('#budget-status');\\n    const progress = document.querySelector('progress');\\n    const summary = document.querySelector('#summary');\\n    function render() {\\n      if (!form.checkValidity()) {\\n        total.value = base.textContent = reserve.textContent = '…';\\n        status.textContent = 'Enter amounts from $0 to $99,999, with up to two decimal places.';\\n        progress.value = 0;\\n        summary.dataset.state = 'empty';\\n        return;\\n      }\\n      const subtotal = fields.reduce((sum, field) => sum + Math.round(field.valueAsNumber * 100), 0);\\n      const contingency = Math.round(subtotal * 15 / 100);\\n      const estimated = subtotal + contingency;\\n      const open = progress.max - estimated;\\n      base.textContent = dollars(subtotal);\\n      reserve.textContent = dollars(contingency);\\n      total.value = dollars(estimated);\\n      status.textContent = open === 0 ? 'At the $250 cap' : dollars(Math.abs(open)) + (open < 0 ? ' over budget' : ' under budget');\\n      summary.dataset.state = open < 0 ? 'over' : 'ok';\\n      progress.value = Math.min(progress.max, estimated);\\n    }\\n    form.addEventListener('input', render);\\n    form.addEventListener('submit', event => event.preventDefault());\\n    render();\\n  </script>\"}\n```\n\n## Estimates to compare\n\n| Item | Estimate | Check before paying |\n| --- | ---: | --- |\n| Lamp | $48 | Reach and glare |\n| Shelf | $96 | Fits the taped area |\n| Cushion | $35 | Fits the seat |\n| Delivery | $18 | Combined delivery |\n| **Subtotal** | **$197** | |\n| 15% contingency | $29.55 | |\n| **Total** | **$226.55** | **$23.45 left** |\n\n### If prices change\n\nKeep the shelf and lamp within the taped dimensions first. Reuse a cushion if the shelf costs more. Compare pickup with delivery before spending the reserve.\n\n## Put it together\n\n| When | Who | Next action |\n| --- | --- | --- |\n| Saturday | Maya | Measure the chair and tape the shelf footprint |\n| Saturday evening | Sam | Test lamp placement with the room lights off |\n| Sunday | Maya | Update the cost estimate and make the purchase decision |\n\nAfter assembly, read for twenty minutes. Move the lamp if the page casts a shadow and note what you would change before buying another item.\n",
      "updatedAt": "2026-11-15T17:07:04.125Z",
      "native": true
    },
    {
      "id": "5cf2704f-bc54-415c-b7ca-13edcfaed1b9",
      "name": "Weekly notes",
      "format": "md",
      "content": "# A week with room to breathe\n\n**Maya’s weekly plan.** The Fieldnotes draft goes to Rowan on Wednesday. The shelf footprint gets checked before anything is ordered. Friday has a two-hour revision block and one hour left open.\n\n## Three useful outcomes\n\n- [ ] Give Rowan a full first draft and two questions by Wednesday at 11:00.\n- [ ] Book the bike service by Thursday and put the appointment on the calendar.\n- [ ] Check the shelf footprint and choose a lamp under $60 by Sunday.\n\n## The week at a glance\n\n| Day | Protected | Planned |\n| --- | ---: | ---: |\n| Mon | 2 h | 1.5 h |\n| Tue | 3 h | 2 h |\n| Wed | 3 h | 2 h |\n| Thu | 3 h | 2.5 h |\n| Fri | 3 h | 2 h |\n\n**14 hours protected. 10 hours planned.** The four open hours cover feedback, follow-up, or work that takes longer than expected. Pick one task for each block. Keep the bike call and errands in short gaps.\n\n## Weekly capacity\n\nChange the protected or planned hours below when a new commitment comes in. If the plan fills the buffer, move a task out before adding another.\n\n```margin-view\n{\"name\":\"Weekly capacity\",\"html\":\"<style>\\n  :root{color-scheme:light dark}\\n  body{\\n    margin:0;background:var(--paper);color:var(--ink);\\n    --paper:#f9f8f3;--surface:#fff;--ink:#222923;--muted:#575e56;\\n    --line:#d8dbd1;--field:#7e857a;--accent:#305b47;--on-accent:#fff;\\n    --tint:#e9f2e9;--track:#d3ded2;--warning:#952d20;--warning-bg:#fae7df;\\n  }\\n  body:has(.budget){--paper:#fcf8ef;--accent:#784927;--tint:#f6ead8;--track:#e5d6c2}\\n  body:has(.itinerary){--paper:#f1f6f8;--accent:#25546a;--tint:#e0eff4;--track:#cddde4}\\n  body:has(.launch){--paper:#f8f6fc;--accent:#574076;--tint:#ede7f6;--track:#ded5ea}\\n  main{max-width:45rem;margin:0 auto;padding:clamp(14px,4vw,28px);font-size:14px;line-height:1.45}\\n  header{margin-bottom:14px}\\n  h1{font-size:clamp(21px,4.5vw,31px);letter-spacing:-.04em;line-height:1.12;margin:0;font-weight:660}\\n  header p{margin:5px 0 0;color:var(--muted)}\\n  form,p,ol,ul,dl,dd{margin:0}\\n  button,input{font:inherit;min-height:44px}\\n  button{\\n    min-width:44px;border:1px solid var(--field);border-radius:9px;padding:6px 11px;\\n    color:var(--ink);background:var(--surface);cursor:pointer;font-weight:600\\n  }\\n  button:hover{background:var(--tint)}\\n  button[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}\\n  :is(button,input):focus-visible{outline:2px solid var(--accent);outline-offset:2px}\\n  progress{display:block;width:100%;height:8px;border:0;border-radius:20px;overflow:hidden;appearance:none;background:var(--track);accent-color:var(--accent)}\\n  progress::-webkit-progress-bar{background:var(--track)}\\n  progress::-webkit-progress-value{background:var(--accent);border-radius:20px}\\n  progress::-moz-progress-bar{background:var(--accent);border-radius:20px}\\n  .summary{padding:12px 14px;border:1px solid var(--line);border-radius:13px;background:var(--tint)}\\n  .summary[data-state=over]{background:var(--warning-bg)}\\n  .summary[data-state=over] :is(output,progress){--accent:var(--warning)}\\n  .summary-line{display:flex;align-items:baseline;justify-content:space-between;gap:5px 12px;flex-wrap:wrap;margin-bottom:8px}\\n  .summary-line>span{font-size:13px;font-weight:620}\\n  .summary-line output{font-size:clamp(21px,4vw,28px);font-weight:690;line-height:1.1;color:var(--accent);letter-spacing:-.045em;font-variant-numeric:tabular-nums}\\n  .summary-status{margin-top:7px;color:var(--muted);font-size:13px}\\n  .fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin-top:12px}\\n  label{display:grid;align-content:start;gap:3px;min-width:0;font-size:13px;font-weight:580}\\n  input{\\n    width:100%;min-width:0;border:1px solid var(--field);border-radius:8px;padding:0 8px;\\n    background:var(--surface);color:var(--ink);font-size:16px;font-variant-numeric:tabular-nums\\n  }\\n  .budget .fields{grid-template-columns:repeat(auto-fit,minmax(min(100%,115px),1fr))}\\n  .budget .breakdown{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:12px;color:var(--muted)}\\n  .breakdown dd{display:inline;color:var(--ink);font-variant-numeric:tabular-nums}\\n  .breakdown dt{display:inline}\\n  .itinerary-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:\\\"days rain\\\" \\\"summary summary\\\";align-items:center;gap:6px 10px;margin-bottom:7px}\\n  .days{grid-area:days;display:flex;flex-wrap:wrap;gap:6px}\\n  #rain{grid-area:rain}\\n  #day-summary{grid-area:summary;margin:0}\\n  .day-summary{font-size:13px;color:var(--muted)}\\n  @media(max-width:400px){.itinerary-controls{grid-template-areas:\\\"days days\\\" \\\"summary rain\\\"}}\\n  @media(max-width:350px){\\n    .budget .breakdown{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}\\n    .budget .breakdown dd{display:block}\\n  }\\n  .budget{padding-bottom:12px}\\n  .budget header{margin-bottom:11px}\\n  .budget .summary{padding-block:9px}\\n  .budget .fields{gap:6px 12px;margin-top:8px}\\n  .timeline,.launch-items{list-style:none;padding:0}\\n  .timeline li{\\n    display:grid;grid-template-columns:7ch 1fr;gap:5px;border-top:1px solid var(--line);padding:8px 3px;\\n    overflow-wrap:anywhere\\n  }\\n  time{color:var(--accent);font-weight:680;font-variant-numeric:tabular-nums}\\n  .launch .summary-line{align-items:center}\\n  .launch-items{margin-top:9px}\\n  #empty:not(:empty){margin-top:10px}\\n  .launch-items li{display:flex;align-items:baseline;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}\\n  .task-state{\\n    min-width:53px;flex:none;border-radius:5px;padding:2px 5px;text-align:center;\\n    font-size:12px;font-weight:600;color:var(--muted);background:var(--surface);border:1px solid var(--line)\\n  }\\n  .task-state[data-done=true]{color:var(--accent);background:var(--tint)}\\n  @media(prefers-color-scheme:dark){\\n    body{\\n      --paper:#1b211d;--surface:#252d27;--ink:#f1f4ed;--muted:#bcc6bb;--line:#405044;--field:#879888;\\n      --accent:#acd8bc;--on-accent:#14251b;--tint:#263b2e;--track:#45594b;\\n      --warning:#ffbdab;--warning-bg:#402a24;\\n    }\\n    body:has(.budget){--paper:#241d17;--surface:#312920;--accent:#f1c092;--tint:#3b2d20;--track:#5b4736}\\n    body:has(.itinerary){--paper:#19232a;--surface:#222e37;--accent:#acd9ef;--tint:#253945;--track:#435a68}\\n    body:has(.launch){--paper:#231e2e;--surface:#30283c;--accent:#ddc4f6;--tint:#392d49;--track:#544161}\\n  }\\n</style>\\n  <main class=\\\"capacity\\\">\\n    <header><h1>Weekly capacity</h1><p>Fit your priorities into time you can protect.</p></header>\\n    <div class=\\\"summary\\\" id=\\\"summary\\\">\\n      <div class=\\\"summary-line\\\"><span>Room in your week</span><output aria-label=\\\"Remaining hours\\\" id=\\\"remaining\\\"></output></div>\\n      <progress aria-label=\\\"Share of protected time planned\\\" max=\\\"100\\\"></progress>\\n      <p class=\\\"summary-status\\\" id=\\\"capacity-status\\\" role=\\\"status\\\"></p>\\n    </div>\\n    <form class=\\\"fields\\\">\\n      <label>Protected hours<input id=\\\"protected\\\" type=\\\"number\\\" min=\\\"0\\\" max=\\\"168\\\" step=\\\"0.25\\\" value=\\\"14\\\" required></label>\\n      <label>Planned work<input id=\\\"planned\\\" type=\\\"number\\\" min=\\\"0\\\" max=\\\"168\\\" step=\\\"0.25\\\" value=\\\"10\\\" required></label>\\n    </form>\\n  </main>\\n  <script>\\n    const form = document.querySelector('form');\\n    const available = document.querySelector('#protected');\\n    const planned = document.querySelector('#planned');\\n    const remaining = document.querySelector('#remaining');\\n    const status = document.querySelector('#capacity-status');\\n    const progress = document.querySelector('progress');\\n    const summary = document.querySelector('#summary');\\n    function hours(value) {\\n      return value + (value === 1 ? ' hour' : ' hours');\\n    }\\n    function render() {\\n      if (!form.checkValidity()) {\\n        remaining.value = '…';\\n        status.textContent = 'Enter hours from 0 to 168 in quarter-hour steps.';\\n        progress.value = 0;\\n        summary.dataset.state = 'empty';\\n        return;\\n      }\\n      const open = available.valueAsNumber - planned.valueAsNumber;\\n      const total = available.valueAsNumber;\\n      progress.value = total ? Math.min(100, (planned.valueAsNumber / total) * 100) : planned.valueAsNumber ? 100 : 0;\\n      summary.dataset.state = open < 0 ? 'over' : 'ok';\\n      remaining.value = open < 0 ? hours(-open) + ' over' : hours(open);\\n      status.textContent = open < 0\\n        ? 'Move or shorten some work before committing.'\\n        : open === 0\\n          ? 'You have no buffer for work that runs long.'\\n          : 'Keep some of this time for work that runs long.';\\n    }\\n    form.addEventListener('input', render);\\n    form.addEventListener('submit', event => event.preventDefault());\\n    render();\\n  </script>\"}\n```\n\n## Today\n\n### 09:00 · First draft\n\nPut the proposed homepage structure on the first page. Use the last fifteen minutes to mark two decisions for Rowan. Read back the first paragraph before sending.\n\n### 11:30 · Short admin block\n\nCall the bike shop with the model and preferred days ready. Put the booking in the calendar if someone picks up. Otherwise, make a task for Thursday at lunch.\n\n## At Wednesday’s review\n\nAsk Rowan where visitors look first for shop hours and which notebook photo should lead. Confirm who will make the edits and when a second look is needed. Shift another task if the revision needs more than the Friday block.\n\n## Friday reset\n\nRecord what shipped and which block got interrupted. Carry over each unfinished task with its owner and next action. Leave Sunday morning free to measure the chair and take a walk.\n",
      "updatedAt": "2026-11-15T17:07:04.125Z",
      "native": true
    },
    {
      "id": "81c12f15-b574-4b4b-aebd-b7243c4380dc",
      "name": "Weekly reflection",
      "format": "md",
      "content": "# Weekly reflection\n\n**Result.** Rowan approved the Fieldnotes homepage structure on Wednesday and chose a different notebook photo. Maya revised the draft on Friday.\n\n## What to keep\n\n- Write the hardest paragraph in the first protected block.\n- Send two specific questions with a draft so the review has a clear purpose.\n\n## Where the plan slipped\n\nThe bike shop missed the Monday call. Maya booked Thursday at lunch once she moved the call to a time the shop could answer. Next week, schedule calls during opening hours.\n\n## Carry into next week\n\n| Item | Next action | When |\n| --- | --- | --- |\n| Draft | Send Rowan the revised first page | Monday morning |\n| Reading corner | Compare the shelf mount with the wall studs | Tuesday evening |\n\n**One change to try.** Leave the first half hour of Wednesday open after the review to record the decision while it’s fresh.\n",
      "updatedAt": "2026-11-15T17:07:04.125Z",
      "native": true
    },
    {
      "id": "2a51e93a-2c2b-4259-8ae0-0e9321f29939",
      "name": "Little things to remember",
      "format": "md",
      "content": "# Little things to remember\n\nCapture things here when they’re too small for a project. Clear anything actionable at the next weekly reset.\n\n## To do\n\n- [ ] Call the bike shop on Thursday at lunch. Ask about a brake and gear check.\n- [ ] Check if the living room lamp uses a spare bulb we already have.\n\n## To keep\n\n- Borrow *The Creative Act* from the design shelf at the neighborhood library.\n- Walk the path between the market and the river before 09:00, while it’s quiet.\n\n### For someone else\n\nSend Sam the shelf measurements once the alcove is taped out. Include one photo from the chair.\n",
      "updatedAt": "2026-11-15T17:07:04.125Z",
      "native": true
    }
  ],
  "folders": [
    {
      "id": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "name": "Personal",
      "parentId": null
    },
    {
      "id": "b5331c43-ff6b-4cff-b991-2472168482de",
      "name": "Home",
      "parentId": "af3c1d4d-efad-452a-a312-9f5470f3e374"
    }
  ],
  "fileAppearance": {
    "data:4664675c-125e-4966-9323-3ff39641cea7": {
      "categories": [],
      "folderId": "b5331c43-ff6b-4cff-b991-2472168482de",
      "pinned": false,
      "color": "default"
    },
    "commands:a4cb1df2-b933-4cff-a9df-46dbf69559a4": {
      "categories": [],
      "folderId": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "pinned": false,
      "color": "default"
    },
    "document:865ab881-14a1-4cf3-a3d3-15ba3db34a3e": {
      "categories": [],
      "folderId": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "pinned": true,
      "color": "sage"
    },
    "document:5cf2704f-bc54-415c-b7ca-13edcfaed1b9": {
      "categories": [],
      "folderId": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "pinned": false,
      "color": "default"
    },
    "document:81c12f15-b574-4b4b-aebd-b7243c4380dc": {
      "categories": [],
      "folderId": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "pinned": false,
      "color": "default"
    },
    "document:2a51e93a-2c2b-4259-8ae0-0e9321f29939": {
      "categories": [],
      "folderId": "af3c1d4d-efad-452a-a312-9f5470f3e374",
      "pinned": false,
      "color": "default"
    }
  },
  "attachments": [],
  "rootFolderId": "af3c1d4d-efad-452a-a312-9f5470f3e374"
}

More templates

See all 22 templates