Skip to content

Rhiz3K/InkyCloud-F1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

F1 E-Ink Calendar

Free F1 race calendar for your E-Ink display! Use the public instance at f1.inkycloud.click — no setup required.

Public Demo Self-Host CodSpeed


Quick Start — Use It Now!

The easiest way to display the F1 calendar on your E-Ink device is to use our free public instance:

For zivyobraz.eu Users

  1. Register at zivyobraz.eu and add your ePaper device
  2. In device settings, select "URL" as content source
  3. Enter the calendar URL:
    https://f1.inkycloud.click/calendar.bmp?lang=cs
    
  4. Done! Your E-Ink display will show the next F1 race 🏁

URL Parameters

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

Preview

F1 E-Ink Calendar Preview

LaskaKit 7.5" E-Ink display showing F1 race calendar in Czech

SVERIO B/W/R/Y

SVERIO PaperBoard 7.5" GDEM075F52 four-color 800×480 ePaper (black/white/yellow/red)


Features

  • 800x480 BMP output1bit monochrome, bwr B/W/R, bwry B/W/R/Y, and spectra6 6-color mode for both calendar and teams screens
  • Teams & Drivers screen — Dedicated teams.bmp render 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, and zh-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 Art1bit, bwr, bwry, and spectra6 now prefer per-display source artwork before falling back to generic circuit assets
  • Interactive configure flow — Localized /configure/calendar and /configure/teams pages 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 localized sitemap.xml without synthetic daily lastmod churn
  • Session Schedule — FP1, FP2, FP3, Qualifying, Sprint, Race times

Roadmap

Planned features for future releases:

Display colors

  • 1-BIT monochrome — Initial calendar output introduced in v1.0.0
  • Spectra 6display=spectra6 added in v1.2.0
  • B/W/Rdisplay=bwr added in v1.2.9
  • B/W/R/Ydisplay=bwry added in v1.2.13 for the calendar screen and extended to the teams screen in v1.2.15

Screens and layouts

  • 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")

Content and localization

  • 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

ESP32 Integration

Using zivyobraz.eu (Recommended)

Compatible with zivyobraz.eu — a service for managing ePaper displays with ESP32. See documentation.

Direct ESP32 Code

#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());
}

Public Routes and API Endpoints

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.


Self-Hosting

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

Quick Docker Start

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

Deployment Guides


License

See LICENSE file for details.

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines.

Credits

About

F1 E-Ink Calendar - Generate BMP images for E-Ink displays

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Contributors