- Python 100%
| .gitignore | ||
| config.toml.example | ||
| LICENSE | ||
| README.md | ||
| requirements.txt | ||
| turbojournal.py | ||
TurboJournal 🚀
TurboJournal is terminal-based daily journaling application built with Python and the Textual framework. It provides a clean, distraction-free writing environment directly in your terminal, while automatically organizing your entries and syncing them securely with a remote Git repository (like Forgejo, Gitea, GitHub, or GitLab).
✨ Features
- Terminal User Interface (TUI): A simple, responsive split-pane layout featuring a directory browser and a text editor.
- Automated Organization: Automatically generates nested folder structures for your daily logs (
YYYY / MM / DD.txt). - Built-in Git Synchronization:
- Automatically clones the remote repository on the first run.
- Automatically commits changes every time you save an entry.
- Check sync status, push, and pull directly from the UI.
- Secure Credential Handling: For HTTPS remotes, TurboJournal dynamically injects your username and password into memory during Git operations and scrubs them afterward, ensuring your plain-text password is never saved to the
.git/configfile on your disk.
📋 Prerequisites
- Python 3.11+ (Requires the built-in
tomllibmodule) - Git installed on your system and accessible in your system's PATH.
- Textual library (
pip install textual)
🛠️ Installation & Setup
1. Clone the repository:
git clone https://git.turbotux.xyz/michanical/TurboJournal.git
cd TurboJournal
2. Install dependencies:
pip install textual
3. Configure your Git Remote:
TurboJournal uses a config.toml file to manage Git synchronization. Create a file named config.toml in the root directory of the application:
# config.toml
[git]
server = "https://git.yourdomain.com/username/dailylog.git"
username = "your_username"
password = "your_password_or_access_token"
4. Run the app:
python turbojournal.py
🚀 Usage
Navigating the UI
- Sidebar (Left): Browse your existing journal entries. Use your mouse or arrow keys to select a file.
- Editor (Right): Read and write your journal entries.
- Bottom Bar: Quick action buttons for interacting with the file system and Git.
Keyboard Shortcuts
Ctrl + N: Create or open today's entry.Ctrl + S: Save the current file (and automatically commit changes to local Git).Q: Quit the application.
Git Sync Operations (Bottom Buttons)
- Save Changes: Writes the file to disk and runs
git commit. - Check Entries: Fetches the remote repository and checks if your local entries are Up-to-date, Behind, Ahead, or Diverged.
- Push Changes: Pushes your local commits to the remote repository securely.
- Pull Latest: Pulls the latest entries from your remote repository and refreshes the directory tree.
📂 File Structure
Once initialized, TurboJournal maintains the following structure:
TurboJournal/
├── turbojournal.py # Main application script
├── config.toml # Your configuration and git credentials
├── turbojournal.log # Debugging and error logs
└── dailylog/ # The synced Git repository
└── 2026/ # Year
└── 10/ # Month (Zero-padded)
└── 31.txt # Daily entry
🐛 Troubleshooting & Logging
If the Git synchronization fails, TurboJournal logs detailed error messages to turbojournal.log located in the root directory.
- The logger securely redacts password from all error outputs to maintain security!
- Common issues include: missing
config.tomlkeys, incorrect passwords, or unresolvable remote URLs.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.