Desktop work log tracker with hourly task prompts, optional screenshots, and Supabase sync. Built as a simple, single-file Python app.
- Check-in / check-out with daily session tracking
- Hourly task popups (with snooze and auto-submit)
- Screenshot capture (toggleable) and admin preview
- Local SQLite storage + Supabase sync
- Admin/user roles with member management
- System tray minimize (pystray)
- Windows 10/11
- Python 3.9+ (3.10+ recommended)
- Create and activate a virtual environment:
python -m venv .venv .venv\Scripts\activate - Install dependencies:
pip install -r requirements.txt - Configure Supabase in
.env:You can copySUPABASE_URL=https://<your-project>.supabase.co SUPABASE_KEY=<your-anon-or-service-key>.env.exampleto.env. - Run the app:
python worklog_app.py
Create these tables in your Supabase project (column names must match exactly):
- work_sessions
- session_id (text, primary key)
- user (text)
- check_in_time (text)
- check_out_time (text, nullable)
- synced (int)
- hourly_entries
- id (int, primary key)
- session_id (text)
- hour_slot (text)
- task_title (text)
- task_desc (text)
- synced (int)
- screenshots
- id (int, primary key)
- session_id (text)
- capture_time (text)
- file_name (text)
- image_data (bytea)
- synced (int)
- users
- id (int, primary key)
- username (text, unique)
- password (bytea)
- role (text)
- created_at (text)
- synced (int)
- Log in.
- Default users (change these after first login):
- admin / admin123
- user / user123
- Default users (change these after first login):
- Click Check In to start the day.
- Fill the hourly popup when it appears.
- Use Break / End Break as needed.
- Click Check Out to end the day.
- Use Sync to push entries to Supabase and clear local synced data.
Open the Settings tab to adjust screenshot interval, break window, popup padding, and toggle screenshots. Settings are saved to settings.json.
- Local DB:
worklog.db(SQLite) in the app folder - Logs:
worklog.log(rotating)
See EXE_BUILD.md for PyInstaller steps (uses the included WorkLogApp.spec).