Personal journal
Dex Hey. Honestly the mission has been a lot and I've been meaning to keep a log. Can you build a simple journal app? I want to type a new entry, have it saved with the date, and be able to read back old ones. Nothing complicated. Just something to get thoughts out of my head ✍️
What you're building
Commands: new / read / quit
> new
2026-05-24
Had a productive morning. Finished the inventory manager project.
Figured out how JSON serialisation works properly.
[press Enter on an empty line to save]
Entry saved.
> read
--- 2026-05-24 ---
Had a productive morning. Finished the inventory manager project.
Figured out how JSON serialisation works properly.
--- 2026-05-23 ---
...
> quitWhat you'll need
- Files and exceptions — append mode for new entries, reading back the whole file, handling a missing file on first run
- Modules and the standard library —
datetimefor today's date as a string - Strings — formatting the date header, splitting the file content back into entries
- Control flow — the command loop, the multi-line input loop for writing an entry
- Output and input
Hints
Append mode is the key. Opening a file with "a" adds to the end without touching what's there. That's how new entries go in without deleting old ones.
datetime.date.today() gives you the date. Convert it to a string with str() or an f-string to use it as the entry header. The datetime module is in the standard library.
Collect the entry before writing. Let the user type multiple lines, adding each one to a list. When they submit an empty line, join the list and write the whole entry at once.
Going further
Once the core journal works:
- Limit what
readshows. Always printing the entire file gets unwieldy fast. Show only the last three entries by default, with an option to show more. - Search entries. Add a
searchcommand that prints any entry containing a keyword. - Word count per entry. Show how many words each entry contains when displaying it.

