# Journaler

Journaler is a "cross-platform" desktop application designed to encourage regular journaling by providing automated reminders and a clean writing environment.
## Overview
Journaler helps you build a consistent journaling habit by periodically reminding you to record your thoughts throughout the day. It runs silently in the system tray and pops up at customizable intervals, making it perfect for:
- **Daily reflection and mindfulness practice**
- **Tracking your thoughts and activities**
- **Building a journaling habit**
- **Capturing ideas before they fade**

## Features
- **Automated Reminders**: Customizable popup intervals to remind you to journal
- **System Tray Integration**: Runs silently in the background
- **Scratch Pad**: Quick notes area for temporary thoughts
- **Journal History**: Browse through past entries
- **Full-Text Search**: Find entries containing specific words or phrases
- **Dark/Light Theme**: Automatically follows your system theme
- **Notification Sounds**: Audio cues when it's time to journal
- **Single Instance**: Only one copy of the app runs at a time
## Usage
### Getting Started
1. **First Launch**: When you first launch Journaler, it will start in the system tray
2. **Writing Entries**: The app will automatically pop up at set intervals (default: 20 minutes)
3. **Manual Access**: Click the system tray icon to show the app manually
4. **"Multiple" instances**: Running another instance will make the existing instance show itself
5. **Saving entries**: Entries are saved automatically when the popup is closed either manually or by hitting the escape key
### Main Interface
1. **Current Entry**: Write your thoughts for the current moment
2. **Previous Entry**: View what you wrote last time
3. **Scratch Pad**: Space for quick notes that persist between sessions
4. **Navigation**: Browse through your past entries
5. **Search**: Find specific content in your journal history (May also be invoked by CTRL-F)

### Settings
You can adjust:
- **Popup Interval**: Change how frequently Journaler reminds you
- **Notification Sound**: Select your preferred audio reminder
- **Volume**: Adjust the sound level of reminders
## Data privacy
All your journal entries are stored securely on your local machine:
- **Windows**: `C:\Users\YourUsername\.journaler\`
No network requests are made, no data sent or received, your data is yours alone.
Data is stored in an SQLite database with a very simple schema that can be fucked with easily.
## Development
This application is built with Flutter. If you want to build from source:
1. Install Flutter (version 3.7.2 or higher)
2. Clone the repository
3. Run `flutter pub get` to install dependencies
4. Use `flutter run` to run the application in debug mode
## Known issues
I don't know whether or not the sound customization works.
In theory only 2 sound files are bundled with the app so, in theory, you may only choose between those two.
But I don't know how flutter handles assets, currently I am not very motivated to figure this out.
Scrolling through long notes is difficult since we're intercepting the scroll event and using it to scroll through notes themselves.
This, again, is not really an issue for me so I'm not very motivated to fix it.
Showing and focusing the window is really annoying for "gamers" and generally whoever is doing anything at the time.
But I have no better ideas.
If we show the window without focusing it, it will still be on top and, if not focused, will be even more annoying because to close it you have to click on it (to focus it) and THEN close it.
If we only play the sound as a reminder we could miss it or simply get used to the sound and learn to ignore it.
I have no ideas for a better solution.