A small local desktop dashboard optimized for a 7" screen. It shows:
- Local and UTC time; human-friendly date
- Five latest emails (combined across connected Google accounts)
- Today and tomorrow agenda (combined across accounts)
- Next meeting countdown
- Local weather (Jerusalem by default) and tomorrow forecast
- Three latest Google News (Israel) headlines
Quick start
- Install Python 3.10+.
- Create a virtualenv and install deps:
pip install -r requirements.txt. - Copy example config and env, then edit as needed:
cp config.example.json config.json(optional — or use the in‑app Settings page)cp .env.example .env(optional — forWAQI_TOKEN, host/port)
- Place your Google OAuth Desktop client in the repo root named like
client_secret_*.json.- The file is git‑ignored to avoid accidental commits.
- Run the app:
python app.pythen openhttp://127.0.0.1:5000. - Connect your Google account(s): visit
http://127.0.0.1:5000/auth/google. Repeat to add a second account. Tokens are written undertokens/(git‑ignored).
Notes
- Weather uses Open‑Meteo (no API key). Location defaults to Jerusalem; adjust
DEFAULT_LAT/LONinapp.pyif needed. - News uses Google News RSS for Israel (English). Adjust the
feed_urlin/api/newsif desired. - Gmail date parsing is best-effort for relative times; Google APIs return RFC/ISO timestamps.
- The UI auto-refreshes: time every 15s; email/agenda every 60s; weather every 5m; news every 10m.
Sanitization and safety
- No personal emails are in defaults.
personalandbusinessdefault to empty. - Example camera URLs use documentation addresses (
192.0.2.0/24). Replace with your own local IPs. - Secrets and local data are excluded from version control via
.gitignore:config.json,client_secret_*.json,.env, andtokens/are ignored.- Only
config.example.jsonand.env.exampleare included.
Layout
- CSS grid arranges four cards: clock, next-meeting+weather, emails, agenda+news. Designed to fit 800×480/1024×600.
Troubleshooting
- If Google auth libraries aren’t installed, install deps via
pip install -r requirements.txt. - If Google OAuth fails, confirm the OAuth client type is “Desktop app”. The local flow opens a browser and stores tokens under
tokens/. - To reset accounts, delete files under
tokens/and re‑auth.
