✅ Introduction

The Scimax Journal is a powerful date-based note-taking system that helps you maintain a daily journal, track your work, and build a personal knowledge base over time. Inspired by org-journal and bullet journaling, it provides a structured yet flexible way to capture thoughts, tasks, and logs throughout your day.

✅ Key Features

  • Automatic date-based organization with hierarchical directory structure

  • Multiple customizable templates for different journaling styles

  • Built-in calendar view for visualizing and navigating entries

  • Quick navigation between entries with keyboard shortcuts

  • Full-text search across all journal entries

  • Statistics tracking including writing streaks and word counts

  • Quick capture for timestamped log entries

  • Status bar integration showing current entry details

  • Tree view for browsing entries by year, month, and day

✅ Philosophy

The journal system is designed around the principle of friction-free capture. With a single keyboard shortcut (`Cmd-S-J'), you can open today's journal entry and start writing. The system handles all organization automatically, storing files in a sensible directory structure that mirrors the calendar.

✅ Getting Started

✅ Opening Your First Journal Entry

The quickest way to start journaling is to press Cmd-Shift-j. This will:

  1. Create today's journal entry if it doesn't exist

  2. Apply your default template

  3. Open the file in the editor

Your first entry might look like this:

#+TITLE: 2026-01-14 - Tuesday
#+DATE: 2026-01-14

,* Tasks
- [ ]

,* Notes

,* Log

✅ Directory Structure

By default, journal entries are stored in ~/scimax-journal with the following structure:

~/scimax-journal/
├── 2026/
│   ├── 01/
│   │   ├── 14/
│   │   │   └── 2026-01-14.org
│   │   ├── 15/
│   │   │   └── 2026-01-15.org
│   │   └── 16/
│   │       └── 2026-01-16.org
│   └── 02/
│       └── 01/
│           └── 2026-02-01.org
└── .scimax/
    └── templates/
        ├── custom.org
        └── meeting.org

Each entry is stored in a path like YYYY/MM/DD/YYYY-MM-DD.org, making it easy to browse chronologically while keeping the directory structure manageable.

✅ Configuration

Configure the journal system through VS Code settings (File > Preferences > Settings or Cmd/C-,):

✅ scimax.journal.directory

Directory where journal files are stored. If empty, defaults to ~/scimax-journal.

{
  "scimax.journal.directory": "~/Documents/journal"
}

You can also use absolute paths or paths starting with ~ for your home directory.

✅ scimax.journal.format

Choose between org-mode or Markdown format for journal entries.

{
  "scimax.journal.format": "org"  // or "markdown"
}

Default: org

✅ scimax.journal.template

The default template to use when creating new entries.

{
  "scimax.journal.template": "default"
}

Available built-in templates: default, minimal, research, meeting, standup

✅ scimax.journal.dateFormat

Date format for file names (currently only YYYY-MM-DD is supported).

{
  "scimax.journal.dateFormat": "YYYY-MM-DD"
}

Default: YYYY-MM-DD

✅ scimax.journal.autoTimestamp

Automatically add timestamps when using the quick log feature.

{
  "scimax.journal.autoTimestamp": true
}

Default: true

✅ scimax.journal.weekStartsOn

First day of the week for calendar and week views.

{
  "scimax.journal.weekStartsOn": "monday"  // or "sunday"
}

Default: monday

✅ Journal Templates

Templates define the structure of new journal entries. Scimax provides several built-in templates and supports custom templates.

✅ Built-in Templates

✅ default

A balanced template suitable for general daily journaling with tasks, notes, and a timestamped log.

#+TITLE: {{date}} - {{weekday}}
#+DATE: {{date}}

,* Tasks
- [ ]

,* Notes

,* Log

✅ minimal

A minimal template with just a notes section, ideal for free-form journaling.

#+TITLE: {{date}}
#+DATE: {{date}}

,* Notes

✅ research

Designed for research work, with sections for goals, experiments, results, and references.

#+TITLE: Research Log - {{date}}
#+DATE: {{date}}
#+AUTHOR: {{author}}

,* Goals for Today
- [ ]

,* Experiments

,* Results

,* Next Steps

,* References

✅ meeting

Structured template for meeting notes with attendees, agenda, and action items.

#+TITLE: Meeting Notes - {{date}}
#+DATE: {{date}}

,* Attendees
-

,* Agenda
1.

,* Discussion

,* Action Items
- [ ]

,* Next Meeting

✅ standup

Daily standup format with yesterday, today, and blockers.

#+TITLE: Standup - {{date}}
#+DATE: {{date}}

,* Yesterday
-

,* Today
-

,* Blockers
-

✅ Template Variables

Templates support the following variables that are automatically substituted:

VariableDescriptionExample
{{date}}ISO date (YYYY-MM-DD)2026-01-14
{{year}}Four-digit year2026
{{month}}Two-digit month01
{{day}}Two-digit day14
{{weekday}}Day of week nameTuesday
{{monthName}}Full month nameJanuary
{{timestamp}}ISO timestamp2026-01-14T10:30Z
{{author}}Currently returns empty, reserved for future use

✅ Creating Custom Templates

Custom templates are stored in /.scimaxtemplates. Create a new template by:

  1. Create the templates directory if it doesn't exist:

  2. Create a template file with the same extension as your journal format (.org or .md):

  3. Edit the template file with your desired structure:

  4. Use the template when creating a new entry:

✅ Markdown Templates

If you configure the journal format as Markdown, the built-in templates use Markdown syntax:

# {{date}} - {{weekday}}

## Tasks
- [ ]

## Notes

## Log

Custom Markdown templates work the same way, but use the .md extension.

✅ Creating Journal Entries

✅ Today's Entry

Press C-S-J or run the command Scimax: Open Today's Journal. [[cmd:scimax.journal.new]]

This is the fastest way to start journaling. If today's entry doesn't exist, it will be created using your default template.

✅ New Entry for Any Date

To create an entry for a different date:

  1. Run command: Scimax: New Journal Entry

  2. Select a template

  3. Enter a date in YYYY-MM-DD format (or leave empty for today)

If an entry already exists for that date, you'll be asked if you want to open it instead.

Example workflow for creating a meeting note:

  1. C-S-P → Scimax: New Journal Entry

  2. Select meeting template

  3. Press Enter to use today's date

  4. Entry is created and opened

✅ Using Different Templates

You can create multiple entries for the same date using different templates by:

  1. Running Scimax: New Journal Entry multiple times

  2. Selecting different templates each time

However, only one file per date is stored. To use multiple templates in one day, either:

  • Merge content manually

  • Use a comprehensive custom template

  • Create separate files outside the journal system

✅ Navigating Journal Entries

✅ Keyboard Navigation

When viewing a journal entry:

  • C-Cmd-[ - Go to previous entry

  • C-Cmd-] - Go to next entry

These shortcuts only work when the current file is a journal entry (filename matches YYYY-MM-DD.org or .md).

✅ Go to Specific Date

Run Scimax: Go to Journal Date to see a list of all your entries: [[cmd:scimax.journal.goto]]

> Scimax: Go to Journal Date

  📅 2026-01-14    Tue
  📅 2026-01-13    Mon
  📅 2026-01-12    Sun
  📅 2026-01-10    Fri
  ...

Use arrow keys or type to filter, then press Enter to open.

✅ Calendar View

The calendar view provides a visual way to navigate entries:

✅ Accessing the Calendar

✅ Calendar Features

The calendar shows:

  • Current month with clickable days

  • Days with entries are highlighted with a blue dot

  • Today is marked with a border

  • Past days without entries are dimmed

Calendar controls:

  • Click any day to open/create entry

  • ← → buttons - Navigate months

  • Today's Journal button - Jump to today

  • Month picker - Click month name to show month selector

  • Year navigation - Click year buttons to jump years

✅ Quick Actions in Calendar

At the bottom of the calendar view:

  • This Week - Show this week's entries

  • Search - Search journal entries

  • Stats - Show journal statistics

✅ Week View

To see all entries for the current week:

Run Scimax: This Week's Entries [[cmd:scimax.journal.weekView]]

This shows a quick-pick list with:

  • Each day of the current week that has an entry

  • Word count for each entry

  • Task completion statistics

This week: 5 entries

📅 Tue 2026-01-14    450 words    3/5 tasks completed
📅 Mon 2026-01-13    320 words    5/5 tasks completed
📅 Sun 2026-01-12    280 words
...

✅ Searching Journal Entries

✅ Search Tips

  • Searches are case-insensitive

  • Partial word matching is supported

  • Search scans the entire content including headings and metadata

  • Results are limited to preserve performance

✅ Quick Capture and Logging

✅ Quick Log Entry

The quick log feature lets you capture a timestamped note without opening a file: [[cmd:scimax.journal.quickLog]]

  1. Run Scimax: Quick Log Entry or create a custom keybinding

  2. Type your note

  3. Press Enter

The note is automatically appended to today's journal under the * Log section with a timestamp:

,* Log
- [14:30] Started work on documentation
- [15:45] Meeting with team about project timeline
- [16:20] Fixed bug in parser module

This is perfect for:

  • Quick status updates

  • Tracking interruptions

  • Logging time-sensitive information

  • Building a timeline of your day

✅ Insert Timestamp

When editing a journal entry, run Scimax: Insert Timestamp to insert a timestamp at the cursor:

Org format:

[2026-01-14 10:30]

Markdown format:

2026-01-14 10:30

Useful for:

  • Manual time tracking

  • Marking when you started/finished tasks

  • Adding temporal context to notes

✅ Journal Statistics

✅ Viewing Statistics

Run Scimax: Show Journal Statistics to see: [[cmd:scimax.journal.stats]]

Total entries: 45 | Total words: 32,450 | Current streak: 7 days | Longest streak: 12 days

✅ Statistics Tracked

✅ Entry Count

Total number of journal entries you've written.

✅ Total Words

Combined word count across all entries. Only counts actual words, not markup.

✅ Current Streak

Number of consecutive days you've written an entry (including today or ending yesterday).

✅ Longest Streak

Your best streak of consecutive journaling days.

✅ Streak Calculation

A streak is maintained if you create entries on consecutive days:

  • Writing today extends your streak

  • Missing today but having written yesterday keeps the streak at yesterday's count

  • Missing two days in a row breaks the streak

The streak counter helps build a journaling habit through positive reinforcement.

✅ Status Bar Integration

The status bar (bottom of window) shows journal information:

When viewing a journal entry:

📓 Tue 01/14 | 450 words | 3/5 tasks

When viewing other files:

📓 Journal | 7 day streak

Click the status bar item to quickly open today's journal.

Hover over it to see:

  • Total entries

  • Total words

  • Quick link to today's entry

✅ Integration with Other Features

✅ Agenda Integration

Journal entries are automatically indexed by the Scimax database if your journal directory is included in the search scope.

This means journal entries with TODO items, scheduled items, and deadlines will appear in:

  • Scimax: Show Agenda - Daily agenda view

  • Scimax: Show TODO Items - All TODO items

  • Scimax: Show Upcoming Deadlines - Deadline tracking

The journal directory is automatically included in both the agenda and database indexing by default (via scimax.agenda.includeJournal and scimax.db.includeJournal).

To reindex journal entries, run Scimax: Reindex Files.

✅ Cross-Referencing

Use org-mode links to cross-reference between journal entries:

,* Follow-up from yesterday

See [[file:2026/01/13/2026-01-13.org::*Meeting Notes][yesterday's meeting notes]] for context.

Or use relative paths:

[[file:../13/2026-01-13.org][Previous entry]]

✅ Embedding Code Blocks

Journal entries support full Babel functionality. Execute code blocks directly in your journal:

,* Analysis for Today

,#+begin_src python
import pandas as pd
data = pd.read_csv('daily_metrics.csv')
print(data.describe())
,#+end_src

Press C- (s- on Mac) to execute blocks.

See Source Blocks documentation for details.

✅ Citations and References

Use org-ref features to add citations to journal entries:

,* Reading Notes

Read interesting paper about neural networks cite:lecun2015deep.
The architecture described in cite:he2016deep could be useful for our project.

,* References
bibliography:~/references.bib

Press C-c ] to insert citations.

See References documentation for details.

✅ Commands Reference

✅ All Journal Commands

CommandKeybindingDescription
Scimax: Open Today's JournalC-S-JOpen or create today's entry
Scimax: New Journal Entry-Create entry with template selection
Scimax: Previous Journal EntryCmd-[Navigate to previous entry
Scimax: Next Journal EntryCmd-]Navigate to next entry
Scimax: Go to Journal Date-Quick-pick list of all entries
Scimax: Search Journal-Search entries with date range
Scimax: Show Journal Calendar-Open calendar view
Scimax: This Week's Entries-Show current week entries
Scimax: Quick Log Entry-Add timestamped log to today
Scimax: Insert Timestamp-Insert timestamp at cursor
Scimax: Show Journal Statistics-Display statistics popup
Scimax: Refresh Journal View-Refresh tree view
Scimax: Open Journal Directory-Open journal folder in file manager

✅ Command Palette

Access all commands via Command Palette (C-S-P):

  1. Press C-S-P

  2. Type "journal"

  3. Select command from filtered list

✅ Keyboard Shortcuts

✅ Default Keybindings

{
  "command": "scimax.journal.today",
  "key": "ctrl+shift+j",
  "mac": "cmd+shift+j"
}

{
  "command": "scimax.journal.prev",
  "key": "alt+[",
  "when": "resourceFilename =~ /^\\d{4}-\\d{2}-\\d{2}\\.(org|md)$/"
}

{
  "command": "scimax.journal.next",
  "key": "alt+]",
  "when": "resourceFilename =~ /^\\d{4}-\\d{2}-\\d{2}\\.(org|md)$/"
}

✅ Custom Keybindings

Add custom keybindings in keybindings.json (File > Preferences > Keyboard Shortcuts, then click the icon in the top right):

{
  "key": "ctrl+alt+l",
  "command": "scimax.journal.quickLog"
}

{
  "key": "ctrl+alt+t",
  "command": "scimax.journal.insertTimestamp"
}

{
  "key": "ctrl+alt+c",
  "command": "scimax.journal.calendar"
}

✅ Tips and Best Practices

✅ Daily Journaling Workflow

  1. Morning: Open today's journal (C-S-J), review yesterday's entry (M-[), plan today's tasks

  2. Throughout the day: Use quick log (Scimax: Quick Log Entry) to capture notes

  3. Evening: Review entry, mark tasks complete, add reflections

  4. Weekly: Use This Week's Entries to review the week

✅ Building the Habit

  • Set a reminder to journal at the same time each day

  • Start small - even a single sentence counts

  • Watch your streak grow for motivation

  • Use the minimal template if the default feels overwhelming

  • Pin the Journal tree view for easy access

✅ Organizing Information

  • Use consistent heading structures for easier searching

  • Tag entries with hashtags: #projectname #meeting #idea

  • Link related entries together

  • Use the Log section for quick captures, Notes for longer form

  • Create custom templates for recurring entry types

✅ Performance Tips

  • The journal system caches entries for 30 seconds, so browsing is fast

  • Large journals (1000+ entries) may take a moment to load the tree view

  • Search is optimized but searching "all entries" on large journals may be slow

  • Statistics are cached for 1 minute and updated asynchronously

✅ Backup and Sync

Since journal entries are plain text files in a standard directory structure:

  • Easy to backup with any file backup system

  • Can sync via Dropbox, iCloud, or git

  • Simple to migrate or export

  • Future-proof format (plain text)

Example git setup for version control:

cd ~/scimax-journal
git init
echo ".scimax/cache" > .gitignore
git add .
git commit -m "Initial journal"

Then periodically:

cd ~/scimax-journal
git add .
git commit -m "Journal updates $(date +%Y-%m-%d)"
git push

✅ Privacy and Security

Journal entries are stored as plain text on your local filesystem. For sensitive information:

  • Encrypt your journal directory using OS-level encryption

  • Use a private git repository if syncing

  • Consider using org-crypt for encrypting specific entries

  • Be mindful of what you commit to version control

✅ Troubleshooting

✅ Journal Directory Not Found

If you see errors about missing directory:

  1. Check scimax.journal.directory setting

  2. Ensure the parent directory exists

  3. Restart VS Code

  4. The directory will be created automatically on first use

✅ Templates Not Working

If custom templates aren't appearing:

  1. Verify template location: /.scimaxtemplates

  2. Check file extension matches format (.org for org-mode, .md for Markdown)

  3. Run Scimax: Refresh Journal View

  4. Restart VS Code

✅ Navigation Shortcuts Not Working

M-[ and M-] only work when:

  • Current file is a journal entry

  • Filename matches YYYY-MM-DD.org or YYYY-MM-DD.md

  • File is inside the configured journal directory

✅ Statistics Not Updating

Statistics are cached for performance:

  • Refresh calendar view to force update

  • Statistics update automatically after 1 minute

  • Saving a journal file triggers update

✅ Calendar Not Showing Entries

If the calendar appears empty:

  1. Check that entries exist in the correct directory structure

  2. Run Scimax: Refresh Journal View

  3. Verify file naming matches YYYY-MM-DD.org or .md

  4. Check for file system permissions issues

✅ Advanced Usage

✅ Scripting and Automation

Since journal entries are plain text files in a predictable structure, you can script operations:

✅ Auto-generate Weekly Summary

#!/usr/bin/env python3
import os
from datetime import datetime, timedelta
import glob

journal_dir = os.path.expanduser("~/scimax-journal")
today = datetime.now()
week_start = today - timedelta(days=today.weekday())

# Collect this week's entries
entries = []
for i in range(7):
    day = week_start + timedelta(days=i)
    path = os.path.join(
        journal_dir,
        f"{day.year}/{day.month:02d}/{day.day:02d}",
        f"{day.year}-{day.month:02d}-{day.day:02d}.org"
    )
    if os.path.exists(path):
        with open(path) as f:
            entries.append((day, f.read()))

# Generate summary
print(f"# Week of {week_start.strftime('%Y-%m-%d')}\n")
for day, content in entries:
    print(f"## {day.strftime('%A %Y-%m-%d')}\n")
    # Extract tasks or headings
    tasks = [line for line in content.split('\n') if line.strip().startswith('- [')]
    if tasks:
        print('\n'.join(tasks))
    print()

✅ Export to PDF

#!/bin/bash
# Export recent journal entries to PDF

cd ~/scimax-journal

# Find entries from last 30 days
find . -name "*.org" -mtime -30 | while read file; do
    pandoc "$file" -o "${file%.org}.pdf"
done

✅ Custom Template Variables

Currently, template variables are fixed, but you can post-process entries:

# Add custom metadata after creation
sed -i '3i#+TAGS: daily' ~/scimax-journal/2026/01/14/2026-01-14.org

✅ Integration with External Tools

✅ Obsidian Daily Notes

To use the same directory structure with Obsidian:

  1. Set Obsidian's daily notes folder to your journal directory

  2. Use the same date format (YYYY-MM-DD)

  3. Adjust template format as needed

✅ Emacs org-journal

The directory structure is compatible with some org-journal configurations:

(setq org-journal-dir "~/scimax-journal"
      org-journal-file-format "%Y-%m-%d.org"
      org-journal-file-type 'daily)

✅ Future Enhancements

Potential future features under consideration:

  • Weekly and monthly journal entries (not just daily)

  • Journal entry templates based on day of week

  • Automatic tagging based on content

  • Integration with time tracking

  • Habit tracking visualizations

  • Export entire journal to single file

  • Import from other journal systems

  • Template preview before creation

  • AI-powered journal prompts and summaries

✅ See Also

Navigation