{"slug": "glanceboard", "title": "Glanceboard", "summary": "Google has released Glanceboard, an open-source e-ink display project that uses Gemini 3.6 Flash and Nano Banana to turn Google Calendar data, local weather, and custom family characters into daily illustrated planners. The system runs on a local server or Raspberry Pi, generates art in six styles, and requires no cloud account, with setup via a web dashboard. Glanceboard aims to provide a quiet, screen-free way to start the day, replacing notifications with a picture frame that shows today's schedule.", "body_md": "**Glanceboard is an e-ink display that helps you start your day, built with Gemini**\n\nThis demo showcases how to use Gemini 3.6 Flash and Nano Banana to turn your Google Calendar into art on an e-ink display.\n\nUsing just a computer and an iCal feed, Glanceboard transforms your schedule, local weather, and custom family characters into Nano Banana generated art. Every morning, it reads your calendar and generates a fresh illustration so you know what's happening today, what to pack, and what to wear.\n\nNo screens. No notifications. Just a quiet picture frame that helps you know what's happening today.\n\n**Note:** This demo was entirely vibe coded with Google Antigravity and uses off the shelf hardware.\n\nGlanceboard runs a lightweight local server on your computer (or a Raspberry Pi). Every few hours, it:\n\n- Reads your calendar events via iCal URL (universal standard for calendar data .ics file)\n- Fetches the current weather for your location\n- Builds a creative prompt for your characters\n- Generates an illustrated daily planner image from the above using Nano Banana\n- Dithers the image for 6-colour e-ink and serves it to your display\n\nThe display polls the server for new images — no cloud account needed.\n\n| Part | Description |\n|---|---|\nWaveshare ESP32-S3 PhotoPainter |\n\n**USB-C cable****A computer or Pi****Python 3.9+****Node.js 18+** No soldering. No ribbon cables. Just one display and a server.\n\nUsing a Raspberry Pi as the display?The legacy Pi + separate e-ink HAT setup is still supported — see[Legacy Pi Setup].\n\n**Daily Nano Banana art**— Your calendar events become illustrated daily planners** 6 art styles**— Pen-and-ink, fashion sketch, watercolour, pixel art, comic book, and Japanese sumi-e** Custom characters**— Add people and pets with reference photos for consistency** Drag-and-drop widgets**— Add sports scores, stock tickers, news, daily quotes, email digest, weather, and more to your display layout** Google Calendar**— Connect via iCal URL (any calendar that exports iCal works)** Weather-aware**— Shows weather on the display; characters dress for the actual conditions** Location-aware**— Uses your location to generate regionally accurate scenes (no snow in Sydney!)** Smart countdowns**— AI scans your calendar for birthdays, trips, and holidays to count down to** Gemini-powered event rewriting**— Turns \"9am Tavi Library Bag\" into \"Tavi — remember library bag!\"** E-ink ready**— Floyd-Steinberg dithered for 6-colour Spectra panels** Smart scheduling**— Auto-generates at your chosen times, only when your calendar or weather changes** Custom prompts**— Edit the image generation prompt template** Email digest**— Optional Gmail integration shows unread email summaries ([setup required](/google-gemini/glanceboard/blob/main/EMAIL_SETUP.md))**Fully local**— Runs on your own machine, no cloud account required\n\n```\ngit clone https://github.com/google-gemini/glanceboard.git\ncd glanceboard\n\n# Install server dependencies\ncd server\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\ncd ..\n\n# Install and build the web dashboard\ncd web\nnpm install\nnpm run build   # automatically creates src/config.js from template on first run\ncd ..\ncd server\nsource venv/bin/activate\npython3 -m uvicorn app:app --host 0.0.0.0 --port 8000\n```\n\nOpen [http://localhost:8000](http://localhost:8000) — the Glanceboard dashboard will guide you through setup:\n\n**API key**— Enter your Google AI Studio key (see[API key setup](#api-key-setup)below)** Calendar**— Paste your iCal URL** Location**— Set your timezone and location for weather** Art style**— Choose from 6 styles** Characters**— Add your family members and pets\n\nSee [Display setup guide](#display-setup-guide) below to flash and connect your PhotoPainter.\n\nWant to keep it running 24/7?See[Self-Hosting Guide]for systemd service setup, Raspberry Pi instructions, and running Glanceboard as a permanent home server.\n\nGlanceboard works with a range of AI image generation models:\n\n| Model | Provider | Notes |\n|---|---|---|\nNano Banana Pro |\nGemini API | Recommended. Best quality, text rendering, and character consistency. |\nNano Banana 2 |\nGemini API | Balances speed with quality |\n\nGlanceboard also uses **Gemini Flash 3.6** for intelligence:\n\n- Rewriting calendar events into friendly language\n- Generating weather-accurate scene descriptions\n- Scanning calendars for important upcoming events\n\nGlanceboard requires a **Gemini API key** to generate images.\n\n- Go to\n[aistudio.google.com/apikey](https://aistudio.google.com/apikey) - Click\n**Create API Key**→ select your Google Cloud project (or create one) - Copy the key (starts with\n`AIza...`\n\n) - Paste it into the Glanceboard dashboard during onboarding\n\nThat's it.The key is stored locally in your`server/data/config.json`\n\nfile and used server-side to call the Gemini API.\n\n- Connect your PhotoPainter to your computer via USB-C\n- Open the\n[Glanceboard Web Flasher](https://raphdixon.github.io/glanceboard-firmware/)in**Chrome or Edge** - Click\n**Install Glanceboard Firmware** and select your device - Wait for the flash to complete (~2 minutes)\n- Unplug and replug the USB-C cable to reboot\n\n- After rebooting, the display shows a setup screen with the WiFi name\n`Glanceboard-XXXX`\n\n- On your phone or computer, connect to the\n`Glanceboard-XXXX`\n\nWiFi network (no password) - A setup page will open automatically (or go to\n`http://192.168.4.1`\n\n) - Enter your\n**WiFi network name** and**password**(leave password blank for open networks) - Paste the\n**Display Image URL** from your Glanceboard dashboard (found in**Settings → E-Ink Display Setup → 📋 Copy URL**) — it looks like`http://YOUR_SERVER_IP:8000/images/latest_display.bmp`\n\n- Choose a\n**poll interval**(how often the display refreshes) - Click\n**Save & Connect**\n\nThe device will restart, connect to your WiFi, and begin polling for images. The display will update within ~60 seconds.\n\nTip:You can reconfigure the device later by accessing its IP address from any browser on the same network. The IP is shown on the display after setup.\n\nUsing a Raspberry Pi as the display?The legacy Pi + separate e-ink HAT setup is still supported — see[Legacy Pi Setup].\n\n```\nLocal Server (FastAPI on Python 3.11+)\n──────────────────────────────────────────────────────\n  server/app.py\n  ├── /api/config        GET/POST — settings\n  ├── /api/generate      POST — trigger image generation\n  ├── /api/status        GET — generation status\n  ├── /api/preview       GET — preview the prompt\n  ├── /images/*          static — generated display images\n  └── /*                 static — built Vite SPA dashboard\n\n  data/config.json       local config (API key, calendar, etc.)\n  data/images/           generated display images\n\n  Scheduler (APScheduler)\n  └── runs every 15 min, generates at user-chosen hours\n      only when calendar/weather has changed\n\n  Web Dashboard (Vite SPA)\n  ├── Onboarding wizard\n  ├── Settings panel\n  ├── Drag-and-drop widget layout editor\n  ├── Character manager\n  └── Live display preview\n──────────────────────────────────────────────────────\n         │                              │\n         ▼                              ▼\n  ESP32-S3 PhotoPainter         AI Provider\n  polls /images/latest_*        Gemini API\n  updates e-ink display         (Gemini Flash / Pro)\n\n  Gemini Flash 3.6\n  • Rewrites calendar events in friendly text\n  • Generates weather-accurate scene prompts\n  • Scans calendar for important countdowns\nglanceboard/\n├── server/                     # Local Python server (FastAPI)\n│   ├── app.py                  # All backend logic + API endpoints\n│   ├── requirements.txt        # Python dependencies\n│   ├── requirements-email.txt  # Optional email widget dependencies\n│   └── data/                   # Runtime data (gitignored)\n│       ├── config.json          # Your settings (gitignored)\n│       ├── config.example.json  # Template config\n│       ├── gmail_credentials.json # Gmail OAuth credentials (gitignored, optional)\n│       ├── gmail_token.json     # Gmail OAuth token (gitignored, optional)\n│       └── images/              # Generated display images (gitignored)\n├── web/                        # Frontend (Vite SPA)\n│   ├── index.html              # Dashboard + landing page\n│   └── src/\n│       ├── main.js             # App logic\n│       ├── style.css           # Styles\n│       ├── config.js           # Firebase config (gitignored, only for hosted version)\n│       └── config.example.js   # Template config\n├── functions/                  # Cloud Functions (for hosted version)\n│   ├── main.py                 # Backend logic (Firebase variant)\n│   └── requirements.txt        # Python dependencies\n├── firmware/                   # ESP32-S3 PhotoPainter docs\n│   └── README.md               # SD card & firmware setup\n├── pi/                         # Legacy Raspberry Pi scripts\n│   ├── LEGACY_PI_SETUP.md      # Pi setup guide\n│   ├── install.sh              # One-line installer\n│   └── display_update.py       # Display update script\n├── firestore.rules             # Firestore security rules (hosted version)\n├── storage.rules               # Storage security rules (hosted version)\n├── firebase.json               # Firebase config (hosted version)\n├── SELF_HOSTING.md             # Guide to running on your own server 24/7\n├── FIREBASE_DEPLOY.md          # Firebase deployment guide (hosted version)\n├── EMAIL_SETUP.md              # Optional email widget setup guide\n└── LICENSE                     # Apache 2.0 License\n```\n\nGlanceboard can optionally show a summary of your unread Gmail on the display. This requires setting up your own Google Cloud OAuth credentials — see ** EMAIL_SETUP.md** for step-by-step instructions.\n\nThe email widget:\n\n- Only reads subject lines and sender names (not email bodies)\n- Summarises them via Gemini into a short digest\n- Runs entirely on your own machine — no data leaves your server\n- Is completely optional — everything else works without it\n\nContributions are welcome! Please see [CONTRIBUTING.md](/google-gemini/glanceboard/blob/main/CONTRIBUTING.md) for details on how to contribute and the Contributor License Agreement (CLA) process.\n\nCopyright 2026 Google LLC\n\nAll software is licensed under the Apache License, Version 2.0 (Apache 2.0); you may not use this file except in compliance with the Apache 2.0 license. You may obtain a copy of the Apache 2.0 license at: [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)\n\nAll other materials are licensed under the Creative Commons Attribution 4.0 International License (CC-BY). You may obtain a copy of the CC-BY license at: [https://creativecommons.org/licenses/by/4.0/legalcode](https://creativecommons.org/licenses/by/4.0/legalcode)\n\nUnless required by applicable law or agreed to in writing, all software and materials distributed here under the Apache 2.0 or CC-BY licenses are distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the licenses for the specific language governing permissions and limitations under those licenses.\n\nThis is not an official Google product.\n\nBuilt with ❤️ by [Raph Dixon](https://raph.plus) using [Antigravity](https://antigravity.google/) and [Gemini Flash 3.6](https://ai.google.dev/gemini-api/docs/models/gemini-3.6-flash).", "url": "https://wpnews.pro/news/glanceboard", "canonical_source": "https://github.com/google-gemini/glanceboard", "published_at": "2026-07-31 20:27:50+00:00", "updated_at": "2026-07-31 20:52:41.062054+00:00", "lang": "en", "topics": ["generative-ai", "ai-products", "ai-tools", "artificial-intelligence"], "entities": ["Google", "Gemini 3.6 Flash", "Nano Banana", "Google Antigravity", "Waveshare ESP32-S3 PhotoPainter", "Google Calendar", "Google AI Studio"], "alternates": {"html": "https://wpnews.pro/news/glanceboard", "markdown": "https://wpnews.pro/news/glanceboard.md", "text": "https://wpnews.pro/news/glanceboard.txt", "jsonld": "https://wpnews.pro/news/glanceboard.jsonld"}}