About

A football chart
library with
some personality.

Campos is named after Jorge Campos because the goal feels similar: technical quality, obvious character, and no generic defaults. The project came out of wanting football charts that could live inside real product pages, not just as one-off notebook outputs.

Why It Exists

Football visualisation has a real frontend gap.

A lot of the best football visualisation craft still lives in Python. That is a strength, not a problem: notebooks and analyst workflows should stay first-class. But distribution is the gap. With AI, anyone can build football tools in any language; the web still needs JavaScript, TypeScript and reactive interfaces. Campos is for teams who want Python-level care and semantics, but shipped for the web.

Campos exists to bring that level of football-specific care into a production UI library. The aim is not to out-notebook notebook tools. It is to make football surfaces feel native on the web, with components, interaction and styling that hold up in real pages.

What It Is Protecting

The point is not just drawing one good chart. It is building a coherent football surface without sanding off the character.

Campos is opinionated about a few things on purpose. These are the constraints that made the project worth starting in the first place.

1
Publishable defaults

The zero-config version should already look like something a real product team could ship.

2
Football semantics first

Provider normalization, pitch coordinates, and page-level football patterns should be explicit parts of the library surface.

3
Styling that stays in app code

Custom visual logic should be expressible in TypeScript callbacks instead of disappearing into a second styling DSL.

With Thanks

Campos owes a lot to the Python football viz ecosystem.

This project did not start from a blank page. A lot of the taste, rigor, and practical lessons came from existing football analysis tools and libraries, especially the Python ones that shaped the modern football-viz workflow.

mplsoccer

A huge reference point for pitch drawing, football-specific chart ergonomics, and the idea that the defaults should already look like football rather than generic plotting.

ggsoccer

An influential R toolkit for plotting soccer event data with ggplot2, useful for thinking through event-driven chart conventions before bringing them to interactive web surfaces.

kloppy

A major influence on adapter thinking: provider seams, coordinate handling, and the discipline of turning raw feeds into stable, reusable football packets.

socceraction

Important for the mental model that football data should move through honest, reusable intermediate products instead of jumping straight from raw feeds to chart-specific shapes.

soccerdata

A reminder that pragmatic data access matters. Some of Campos' narrower adapter surfaces exist because scrape-backed or public-data seams are still useful when they are described honestly.

Campos is not trying to replace these libraries, or to turn Python football analysis into a JavaScript clone. The ambition is narrower: learn from that ecosystem and bring the same level of care to React-first, TypeScript-first product surfaces.

Built by

campos is built by withqwerty.

If you want to follow progress closely, the GitHub repo is the best place to watch the beta take shape.

View GitHub Open issues