I use text files.
One text file per day, named `yyyy-MM-dd.yml`.
YAML! Shudder! But it's the best way I found to enter Markdown with some metadata at the top.
Each day file has multiple Yaml documents, with ids like `yyyy-MM-dd/number`. I use [ ] for todos and turn them into [x] when they are done. This way, searching/grepping for `[ ]` gives me a list of stuff not done yet. I sometimes have a list of things to do in my day. I move the `[ ]`s to the next day at the end of the current day (or start of the next).
I use Visual Studio Code snippets to enter the metadata.
Example:
---
id: 2023-10-13/1
links:
tags:
project:
text: |
This text field is **Markdown**, not **YAML**.
- first note
- [ ] todo 1
- second note
The `links` item points to other notes by id (it's an array).The idea of having ids with daily counters is from https://www.soenkeahrens.de/en/takesmartnotes.
[edits: formatting the yaml, mention 'how to take smart notes' book, mention that the `text` is Markdown]