Most side projects don't die from bad writing. They die on a Thursday evening when you open a blank page, realise nothing is ready, and decide to skip a week. Then another.
A content calendar is the unglamorous fix. Not a colour-coded spreadsheet you update once and abandon, but a small system that holds an idea from the moment it arrives until the moment it goes out, and tells you what to do next each time you sit down. Notion suits this well because one database can be a board, a calendar and a filtered list at the same time. Same rows, different questions.
Here's how to build it, using a fortnightly newsletter with a blog mirror as the worked example. The shape works for a podcast or a YouTube channel too; you just rename a property or two.
Start with one database, not three
The temptation is to keep a list of ideas on one page and the publishing schedule on another. That creates a copy-paste job and a dead end for anything that doesn't make the cut. Keep everything in one database — call it Content — and let views do the sorting.
Add these properties and stop:
- Name — the working title. Make it specific enough that you remember why you wanted to write it.
- Status — a Select property, covered below.
- Format — Select: Newsletter, Blog, Note. Useful once you publish in more than one place.
- Publish date — Date.
- Draft due — Date.
- Target words — Number. 600 is a fine target for a newsletter.
- Notes — Text, for links, quotes and half-sentences you don't want to lose.
That's it. Every extra property is a field you'll have to fill in at 11pm, and the ones you skip are the ones that make the system useless.
Design a status pipeline that mirrors real work
Statuses aren't decoration. Each one should represent a different action, and if two mean the same thing you should merge them. A pipeline that works for most solo publishing:
- Idea — captured, not evaluated.
- Researching — collecting examples, checking facts, asking someone.
- Drafting — writing badly on purpose, without editing.
- Editing — cutting, tightening, reading aloud.
- Scheduled — finished, dated, sitting in the queue.
- Published — live, with the URL pasted into Notes.
- Parked — not now, but not deleted.
Create a Board view grouped by Status and pin it to the top of the page. Dragging a card from Drafting to Editing should feel like a small relief. If it feels like admin, you have too many columns.
Give every row two dates, not one
A publish date alone tells you the deadline and nothing about when to start. Add a draft due date and the row starts working for you. If you publish on a Tuesday, a draft due the Friday before gives you a weekend of distance and Monday for edits.
Two views make those dates visible. A Calendar view set to Publish date shows your cadence at a glance, which is how you spot the fortnight where you've accidentally planned three things. A Table view called This week filters to rows where Publish date is within the next seven days or Draft due is on or before today, and Status is not Published. That's the only list you need open on a Friday.
If you want a nudge, add a Formula property: dateBetween(prop("Publish date"), now(), "days"). Sort by it and anything creeping towards zero will sit at the top of the page.
Build the review view
Editing is where side projects quietly stall, because it's the least fun part and no external deadline is pushing you. Give it a dedicated view so it becomes a task with a beginning and an end.
Create a Table view called Review. Filter Status to Editing or Scheduled. Sort by Publish date, oldest first. Group by Format if you publish in more than one place. Then work down it once a week, and for each row:
- Read the opening sentence and ask whether it promises something specific. If not, rewrite it or cut it.
- Check the piece ends with one clear action: a reply, a click, a thing to try.
- Cut roughly a tenth of the words. Almost every draft survives it.
- Set the publish date before you close the row. A finished draft without a date becomes a parked draft.
Half an hour on a Monday, with a cup of tea, will keep a fortnightly newsletter alive for years.
Keep the top of the funnel fed
An empty Idea column is the real risk. The fix isn't a monthly brainstorming session; it's capturing small things as they happen. Keep a linked view filtered to Status = Idea, sorted by created time descending, and add to it from your phone whenever something irritates, amuses or confuses you.
Reliable sources of ideas, roughly in the order they tend to pay off:
- Questions people ask you twice.
- Replies to previous issues. A good reply is often a whole piece.
- Things you got wrong, and what changed your mind.
- Process notes: how you did something, including the boring logistics.
Don't polish ideas at this stage. A three-word title and a one-line note are enough to keep the row alive and remind you later what you meant.
Use a template to remove the blank page
Create a template inside the database that applies the moment a row becomes a draft. Set Status to Drafting, Format to Newsletter, Target words to 600, and prefill the page with headings: Hook, Point, Example, One Action. It takes ten minutes to build and saves you the same ten minutes every week, plus the low-level dread of starting from nothing.
Resist adding more. A template with fourteen sections is a form, and forms don't get filled in after a long day at work.
Run it for three issues before you change anything
The first version should feel slightly too small. Five rows, two views, one twenty-minute review slot on a Friday. Run it for three issues, then look at what annoyed you: a missing property, a status you never used, a view you never opened. Fix that one thing and leave the rest alone.
Consistency beats sophistication here. A plain database you actually open each week will out-publish an elaborate one you admire from a distance. Open the board, move one card forward, delete one idea that no longer interests you, and close the tab.
Photo: PicsByMila / Pixabay



