Skip to content

Repository files navigation

kickoff

Go VersionGo Report CardLicense: MIT

English | Português (pt-BR)

kickoff is a Go CLI designed for football enthusiasts who spend their time in the terminal. It provides a seamless way to track live scores, upcoming fixtures, and TV broadcasts without interrupting your workflow.

Highlights

  • Search by team with interactive disambiguation when multiple matches are found.
  • Show upcoming fixtures and recent results.
  • Query multiple teams in a single command.
  • Browse matches by competition or league name.
  • List featured matches for relative periods such as today, tomorrow, and week.
  • Resolve TV channels for a specific country with automatic fallback from system settings.
  • Use the CLI in English or Portuguese (pt-BR) with language-specific long flags.

Requirements

  • Go 1.26.1 or newer
  • Internet access to fetch match data

Installation

Install with go install

go install github.com/iansantosdev/kickoff/cmd/kickoff@latest

Build from source

git clone https://github.com/iansantosdev/kickoff.git
cd kickoff
go build -o bin/kickoff ./cmd/kickoff

If you use just, you can also build a release binary with:

just build-release

Quick start

# Default behavior: show Fluminense's next match
kickoff
# Search a team and show its next match
kickoff --team "Real Madrid"# Show the next 3 matches
kickoff --team "Arsenal" --next 3
# Show the last 5 matches
kickoff --team "Barcelona" --last 5
# Query multiple teams in one execution
kickoff --team "Flamengo, Palmeiras, Liverpool"# Show matches for a competition over the next week
kickoff --league "UEFA Champions League"# Show today's featured matches
kickoff --featured today
# Filter featured matches by league
kickoff --featured today --league "Premier League"# Filter featured matches by team
kickoff --featured week --team "Bayern"# Resolve TV broadcasts for a specific country
kickoff --team "Inter Miami" --country US

To see the full help:

kickoff -h

CLI reference

FlagAliasesDescriptionDefault
--team-tTeam name to search forFluminense
--next-nNumber of upcoming matches to display1 in team mode when --last is not used
--last-lNumber of past matches to display0
--league-LFilter by competition or league nameempty
--featured-fShow featured matches for a relative periodempty
--country-cCountry code used for TV broadcastsKICKOFF_COUNTRY or auto-detection
--lang-gInterface language (en, pt-BR)KICKOFF_LANG or system language
--verbose-vShow detailed log messagesfalse

Accepted values for --featured

Supported period values:

  • today, tomorrow, week, yesterday

--featured cannot be combined with --next or --last.

Environment variables

You can persist your preferences with:

export KICKOFF_LANG=pt-BR
export KICKOFF_COUNTRY=BR

When KICKOFF_COUNTRY is not set, kickoff tries to infer the country from the configured language and then from the system LANG variable. Country normalization accepts ISO alpha-2 codes, common sports abbreviations, and country names.

Supported workflows

kickoff currently supports four main usage patterns:

  1. Team mode: search matches for one or more teams.
  2. League mode: list matches for a competition, with interactive disambiguation when needed.
  3. Featured mode: show matches from curated top-tier competitions for a relative period.
  4. Combined mode: filter featured matches by league and/or team.

Development

Project structure

cmd/kickoff # CLI entry point
internal/cli # execution flows, interaction, and output formatting
internal/domain # domain models
internal/i18n # translations and country normalization
internal/sofascore # HTTP client and API mapping

Useful commands

If you use just, these recipes are available:

CommandDescription
just run -- <args>Run the CLI in development mode
just buildBuild bin/kickoff
just build-releaseRun checks and create an optimized build
just lintRun golangci-lint
just testRun the test suite
just test-raceRun tests with the race detector
just vetRun go vet
just fmt-checkCheck Go formatting
just checkRun lint and tests
just qaRun formatting checks, vet, lint, and tests
just build-obfuscatedCreate an obfuscated build with garble

Without just, you can run:

go test ./...
go vet ./...
golangci-lint run ./...
go run ./cmd/kickoff -h

Disclaimer

kickoff is an independent open-source project and is not affiliated with Sofascore. Access to match data may be subject to the provider's terms, limits, or availability.

License

This project is licensed under the MIT License. See LICENSE for details.

About

Stay on top of your favorite team's fixtures and broadcasts without ever leaving your command line.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages