Free F1 race calendar for your E-Ink display! Use the public instance at f1.inkycloud.click — no setup required.
The easiest way to display the F1 calendar on your E-Ink device is to use our free public instance:
For zivyobraz.eu Users
- Register at zivyobraz.eu and add your ePaper device
- In device settings, select "URL" as content source
- Enter the calendar URL:
https://f1.inkycloud.click/calendar.bmp?lang=cs - Done! Your E-Ink display will show the next F1 race 🏁
| Parameter | Options | Example |
|---|---|---|
lang |
cs, de, en, es, fr, it, ja, nl, pl, pt-BR, sk, tr, zh-CN |
?lang=sk |
tz |
Any IANA timezone | ?tz=America/New_York |
year |
Season year | ?year=2026 |
round |
Race round number | ?year=2026&round=5 |
race_key |
Specific race key from /api/races/{year} (requires year) |
?year=2026&race_key=2026-round-5-monaco-2026-05-24 |
display |
1bit, bwr, bwry, spectra6 |
?display=bwry |
weather |
true, false |
?weather=false |
weather_type |
race_day, race, current, off |
?weather=true&weather_type=current |
Examples:
https://f1.inkycloud.click/calendar.bmp?lang=cs
https://f1.inkycloud.click/calendar.bmp?lang=en&tz=America/New_York
https://f1.inkycloud.click/calendar.bmp?lang=en&year=2026&round=5
https://f1.inkycloud.click/calendar.bmp?lang=en&year=2026&race_key=2026-round-5-monaco-2026-05-24
https://f1.inkycloud.click/calendar.bmp?lang=en&display=bwr
https://f1.inkycloud.click/calendar.bmp?lang=en&display=bwry
https://f1.inkycloud.click/calendar.bmp?lang=en&display=spectra6
https://f1.inkycloud.click/calendar.bmp?lang=en&weather=true&weather_type=current
https://f1.inkycloud.click/teams.bmp?lang=ja&display=spectra6
https://f1.inkycloud.click/sk/configure/calendar
LaskaKit 7.5" E-Ink display showing F1 race calendar in Czech
SVERIO PaperBoard 7.5" GDEM075F52 four-color 800×480 ePaper (black/white/yellow/red)
- 800x480 BMP output —
1bitmonochrome,bwrB/W/R,bwryB/W/R/Y, andspectra66-color mode for both calendar and teams screens - Teams & Drivers screen — Dedicated
teams.bmprender for the default or selected season with constructor lineup, driver photos, and championship points - Localized UI and assets — Routing, configure pages, previews, docs, and pregenerated BMPs support
cs,de,en,es,fr,it,ja,nl,pl,pt-BR,sk,tr, andzh-CN - Hourly regeneration + startup warmup — Calendar and teams assets are regenerated on startup and every hour, with version metadata refreshed hourly and teams render assets warmed on boot
- Any Timezone — Convert race times to your local timezone
- Race Status States — Upcoming countdown,
IN PROGRESS/PROBÍHÁ,COMPLETED/DOKONČEN, and cancelled race handling - Optional Weather Overlay — Current, race-day forecast, and historical race-time weather on the calendar screen
- Historical Results — Previous year's podium for each circuit
- Track Info — Circuit map, length, laps, and first GP year
- Display-Specific Track Art —
1bit,bwr,bwry, andspectra6now prefer per-display source artwork before falling back to generic circuit assets - Interactive configure flow — Localized
/configure/calendarand/configure/teamspages with pregenerated previews, direct BMP URLs, weather/display switching, and season leaders sidebar - SEO-friendly public pages — Canonical URLs, hreflang alternates,
robots.txt, and a localizedsitemap.xmlwithout synthetic dailylastmodchurn - Session Schedule — FP1, FP2, FP3, Qualifying, Sprint, Race times
Planned features for future releases:
- 1-BIT monochrome — Initial calendar output introduced in
v1.0.0 - Spectra 6 —
display=spectra6added inv1.2.0 - B/W/R —
display=bwradded inv1.2.9 - B/W/R/Y —
display=bwryadded inv1.2.13for the calendar screen and extended to the teams screen inv1.2.15
- Championship standings — Driver and constructor standings view
- Teams & Drivers screen — Full team grid with driver photos and points
- Custom layouts — Multiple layout options to choose from
- Additional display sizes — Beyond 800x480 (e.g. 4.2", 5.83", 12.48")
- More languages — Additional community/localized translations beyond the current 13 supported locales
- Extended weather integration — Richer race weekend weather and extra weekend details
- Dark mode variant — Inverted colors for different display preferences
Compatible with zivyobraz.eu — a service for managing ePaper displays with ESP32. See documentation.
#include <HTTPClient.h>
HTTPClient http;
http.begin("https://f1.inkycloud.click/calendar.bmp?lang=cs");
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
// Display on E-Ink
display.drawBitmap(http.getStream());
}The public instance at f1.inkycloud.click provides these endpoints:
| Endpoint | Description |
|---|---|
GET /calendar.bmp |
Calendar BMP with lang, year, round, race_key, display, weather, and tz params |
GET /teams.bmp |
Teams & drivers grid as BMP image (lang, year, display) |
GET / |
Landing page with screen type selection |
GET /configure/{screen} |
Interactive localized preview/config page (calendar/teams) |
GET /stats |
Public usage statistics dashboard |
GET /privacy |
Privacy policy page |
GET /changelog |
Public changelog page |
GET /preview/{screen}.png |
Pre-generated localized homepage preview PNG |
GET /preview/configure/{screen}.png |
Pre-generated localized configure preview PNG |
GET /api |
JSON API documentation |
GET /api/docs |
Alias for /api |
GET /api/docs/html |
Interactive HTML API docs |
GET /api/races/{year} |
All races for a season (JSON) |
GET /api/race/{year}/{round} |
Specific race details (JSON) |
GET /api/teams/{year} |
Teams and drivers for a season (JSON) |
GET /api/standings/leader |
Current championship leader (JSON) |
GET /api/standings/leader/{year} |
Championship leader for a specific season (JSON) |
GET /api/stats |
Request statistics |
GET /api/stats/history |
Historical hourly request statistics |
POST /api/perf-metrics |
Store frontend performance metrics (Core Web Vitals) |
GET /api/perf-metrics |
Read aggregated frontend performance metrics |
GET /robots.txt |
Crawler policy with canonical sitemap reference |
GET /sitemap.xml |
Localized sitemap with canonical URLs and hreflang alternates |
GET /sw.js |
Service worker script |
GET /health |
Health check |
When ADMIN_API_TOKEN is configured, read-only operational endpoints (/api/stats, /api/stats/history, and GET /api/perf-metrics) require either X-Admin-Token or Authorization: Bearer <token>. Public image endpoints and POST /api/perf-metrics remain available, with rate limits applied.
Want to run your own instance? We've got you covered!
Local development requires Python 3.13+.
SELF-HOSTING.md — Complete guide for self-hosting including:
- Quick start with Docker/Coolify
- Project structure
- Data updates & yearly maintenance
- Configuration reference
- Track images
- Scheduler/startup generation behavior for localized calendar and teams assets
git clone https://github.com/Rhiz3K/InkyCloud-F1.git
cd InkyCloud-F1
docker build -t f1-eink-cal .
docker volume create f1_data
docker run -p 8000:8000 \
-v f1_data:/app/data \
-e SITE_URL=http://localhost:8000 \
f1-eink-cal- SELF-HOSTING.md — Complete self-hosting guide
- COOLIFY.md — One-click Coolify deployment
- DEPLOYMENT.md — Docker, cloud platforms, manual setup
- BMP_PROCESSING.md — Detailed image-to-BMP processing guide for
1bit,bwr,bwry, andspectra6assets
See LICENSE file for details.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
- Inspiration: FoxeeLab's original F1 E-Ink project
- Race data: Jolpica-F1 API
- Weather: Open-Meteo
- Icons: Weather Icons by Erik Flowers (SIL OFL 1.1)
- Flags: Flagcdn
- Platform: Živýobraz.eu
- Devices: LaskaKit and SVERIO
- Hosting: Coolify + Hetzner
- Analytics: Umami
- Errors: GlitchTip

