Terminal-based daily journaling application built with Python and Textual framework, with git syncing features.
Find a file
2026-06-06 10:50:04 +02:00
.gitignore init 2026-06-06 10:39:15 +02:00
config.toml.example init 2026-06-06 10:39:15 +02:00
LICENSE Add: readme, license 2026-06-06 10:50:04 +02:00
README.md Add: readme, license 2026-06-06 10:50:04 +02:00
requirements.txt init 2026-06-06 10:39:15 +02:00
turbojournal.py init 2026-06-06 10:39:15 +02:00

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/config file on your disk.

📋 Prerequisites

  • Python 3.11+ (Requires the built-in tomllib module)
  • 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.toml keys, incorrect passwords, or unresolvable remote URLs.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.