Outlap shows upcoming motorsport sessions in your local time zone, with series filters, country-specific viewing guides and Apple Calendar subscriptions that stay up to date. Built with SvelteKit and TypeScript.
git submodule update --init --recursive
pnpm install
pnpm devpnpm check
pnpm buildThe snapshot workflow fetches schedules hourly
and publishes schedule.json to the data branch for production. Failed sources
retain their last good data. Local development reuses the same GitHub snapshot,
fetching providers directly only for newly added series absent from that snapshot.
Series listed in the snapshot's source statuses count as present even when their
calendar is empty or their latest refresh failed. Dev rechecks the snapshot hourly;
if GitHub is unavailable, it keeps the in-memory schedule rather than scraping all
providers.
See source adapters for data providers. Session end
times are estimated when unpublished. Local times are converted with the venue's
time zone (zones.ts); timetables published only as PDFs
(TCR World Tour, Euroformula, GT World Challenge America, MXGP) are read with unpdf,
which only the scraper loads. Events without a published timetable stay all-day;
previous years' times are never used as estimates. Until a source publishes a season, its
announced calendar is read from the Wikipedia season article as all-day race
days, and replaced by the official timetable once it appears.
Expand a race to see where to watch it in your country: TV channels, subscriptions and free streams. The country is detected from your connection and can be changed in the panel. Availability and geoblocking depend on country, series and round. Curated options include official guide links and checked dates; uncertain coverage is labelled explicitly. See viewing data and sources.
Logos, track outlines and photos belong to their respective creators and are used under their applicable terms. See photo credits and track credits.
Source code is licensed under the MIT License. Third-party assets remain subject to their respective licenses and terms listed above.
Common controls, date and ICS helpers, HTTP utilities, and schedule caching live
in calendar-kit, included as a Git
submodule at packages/calendar-kit. Sport-specific behavior stays in this app.
The pnpm workspace dependency uses the exact commit pinned by this repo.
Clone with --recurse-submodules, or run git submodule update --init --recursive
after cloning or pulling. pnpm install and the app's development, check, test,
and build scripts build the package automatically. CI checks out submodules.
For external build services, initialize submodules before installing dependencies.
For shared changes, follow packages/calendar-kit/README.md: publish the package
commit to its Git remote first, then update and review the submodule pin here.
No npm publication is needed. Keep the first-paint theme script in src/app.html
and the shared theme toggle's configuration in agreement.