A beautiful, minimal single-page journaling application that helps you document your life and rediscover what you wrote in the past.
- Clean, distraction-free interface for writing daily entries
- Automatic date tracking
- Write and save entries that persist in browser storage
- Similar Entry Suggestions: As you write, Journey automatically finds and displays past entries with similar content
- Real-time keyword matching with debounced search
- Helps you recall related memories and track recurring themes
- GitHub-style contribution calendar showing your journaling activity
- Multi-year navigation with year tabs
- Activity levels based on word count (1-100+ words)
- Click any day to view the full entry
- Hover tooltips with entry previews
View past entries from:
- Yesterday
- Last Week (1-7 days)
- Last Month (1-30 days)
- Last Year (1-365 days)
- Export: Download your entire journal as a Markdown file
- Import: Load journal entries from Markdown or text files
- Directory Auto-Load: Select a directory to automatically scan and load journal files
- Supports nested folder structures
- File type filtering (Markdown, Text, JSON)
- Selective file loading with remember preferences
- Auto-scan on directory selection
- All entries stored in browser localStorage
- Separate storage for manually entered and directory-loaded entries
- Automatic merging of entries from multiple sources
- Pure Vanilla JavaScript - No frameworks or dependencies
- HTML5 - Semantic markup with modern APIs
- CSS3 - Custom styling with CSS Grid and Flexbox
- File System Access API - For directory selection and file loading
- localStorage API - For data persistence
- A modern web browser (Chrome 86+, Edge 86+, or equivalent)
- For directory auto-load feature: Browser with File System Access API support
- Clone the repository:
git clone https://github.com/yourusername/journey.git
cd journey- Open index.html in your web browser:
# On macOS
open index.html
# On Linux
xdg-open index.html
# On Windows
start index.htmlOr simply drag and drop index.html into your browser.
- The current date is displayed at the top
- Type your thoughts in the text area
- Click "Save Entry" to store your entry
- Click "Clear" to reset the text area
- Use the time filter buttons (Yesterday, Last Week, Last Month, Last Year) to view past entries
- Click on any day in the activity calendar to view that specific entry
- As you type, similar past entries appear automatically below the text area
Single File Import:
- Click "Import Journal"
- Select a Markdown (.md) or text (.txt) file
- Supported formats:
- Markdown with date headers:
# YYYY-MM-DD - Plain text with date lines:
YYYY-MM-DD,YYYYMMDD, orYYYY/MM/DD
- Markdown with date headers:
Directory Auto-Load:
- Click "Select Directory"
- Choose a folder containing your journal files
- Click "Scan for Files" to discover all journal files
- Select which files to load (or use Select All)
- Click "Load Selected Files"
- Enable "Auto-scan on directory selection" for automatic loading on future visits
- Click "Export as Markdown"
- A file named
journal-export-YYYY-MM-DD.mdwill be downloaded - Format includes date headers and all entries in chronological order
journey/
├── index.html # Main HTML structure
├── styles.css # Styling and layout
├── script.js # Application logic
├── README.md # This file
└── test-files/ # Sample journal files for testing
├── 2024-09-20.md
├── 2024-09-21.txt
└── subdirectory/
└── 2024-09-22.md
Journey uses browser localStorage with the following keys:
journey.journalEntries- Manually entered journal entriesjourney.directorySettings- Directory selection preferencesjourney.selectedFiles_{directoryName}- Remember which files were loaded
| Feature | Chrome | Edge | Firefox | Safari |
|---|---|---|---|---|
| Core journaling | ✅ All | ✅ All | ✅ All | ✅ All |
| Directory picker | ✅ 86+ | ✅ 86+ | ❌ | ❌ |
| localStorage | ✅ All | ✅ All | ✅ All | ✅ All |
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
This project is open source and available under the MIT License.
All data is stored locally in your browser. No data is transmitted to external servers. Your journal entries remain completely private on your device.