One Big Text File (obtf)

Learning from Ellane W, I started journaling inside a "one big text file".

Context

My note-taking system is text based, predominantly Markdown files, structure using the PARA system:

  • Projects -> ./project.*.md
  • Area -> ./area.*.md
  • Reference -> ./reference.*.md
  • Archive -> ./arch.*.md
  • Journal -> ./journal.*.md

Project - Most large chunks of work go into a project, if it's not big enough for a project, it usually goes in the other bins. Recently I added yearly sub-scoping project.2025.*.md. eg project.2025.portfolio-svelte.md, project.2025.kafka-pipeline.md, etc. This helps with yearly reviews, when I can easily ls project.2025* to get all the in progress / complete projects in a year.

Archive - When I no longer need a note, it goes into archives. Over time the aim is to summarise the archives and discard the notes. Holding onto notes seems redundant. They should be distilled into "thoughts" or "timelines" for each topic, reflecting your current take on each topic.

Area - Meant to keep track of various parts of life. eg area.personal.md, area.work.md, area.sport.md etc. Vastly under-used at the minute within my system.

References - Used to store links and useful ideas on specific topics. In my case it's full of reference scoped by tech eg. reference.docker.md, reference.sql.md, reference.nextjs.md. Again vastly under-used at the minute.

Journal - Stores daily, quarterly, yearly notes, and this is where most of the note-taking happens. The ideal workflow is: jot down notes within a journal.*.md note and at the end of day, review, summarise, and update area.*.md or resource.*.md. In reality it's just a dumping ground.

All the notes are stored within a cloud-hosted git repo.

The problem

In 2025 I wrote ~200 notes, most of which are scoped under journal.daily.*.md leaves. My lax approach to reviewing the notes, means that whenever I'm ready to review the journal entries, I end up with dozens of files to peruse and summarise into a weekly / quarterly superset.

Moving files into archive.* is not easy unless you automate it with the script below.

Solution

Instead of ~200 leaves of journal.daily.*.md files have one yearly-scoped journal file journal.2025.md

Within the file in order to add some keywords and ease search retrieval I implemented a key - very heavily inspired by Ellane W. suggestions.

T. Task
X. Task done
N. Note
P. Project
R. Reference

The entries in the file are all collected under a day heading # 03-03-2025, Monday, and new calendar entries are placed at the top of the file.

Observations

The "obtf" is handy for reviews already, making it dead-easy to see past days note with a simple scroll vs opening various files.

Search and retrieval is great with grep too, and using one big text file means that I use less fzf scripts or grep -nr "term" ..

The new journal opens in vim via terminal alias ,journal, and this allows me wicked fast scribbles.