BACK
SOFTWARE

Celestrak

Author

Pure-Dart client for fetching, parsing, and caching satellite orbital data - TLE, OMM, and SATCAT metadata - from CelesTrak and Space-Track. Ships pluggable file and in-memory cache stores. No Flutter dependency; runs on any Dart platform.

WHAT IT DOES

The package exposes three clients: CelesTrakClient fetches TLE and OMM data from CelesTrak's GP endpoint (individual satellites, named groups, or the full active catalog); SpaceTrackClient queries Space-Track's OMM API for authoritative government data; and SatcatClient fetches the SATCAT catalog for satellite metadata such as orbit type, launch date, and operational status.

Responses are parsed into strongly-typed Dart models - TleRecord, OmmRecord, SatcatEntry - so the caller never touches raw JSON or fixed-width TLE columns.

CACHING

Two built-in CacheStore implementations ship with the package: MemoryCacheStore for in-process caching (useful in tests or short-lived processes) and FileCacheStore for persistent, TTL-based caching to the device file system. The cache interface is public, so callers can substitute their own store - a shared-preferences implementation for Flutter or a database-backed store for a server.

Parse-heavy operations (large TLE sets) run in a separate isolate on native platforms and inline on the web, with the isolation abstracted behind a PlatformParseRunner interface.

DESIGN CONSTRAINTS

The package has zero Flutter dependency by design - it imports nothing from the Flutter SDK and resolves cleanly in plain Dart CLI tools, server-side code, or Dart tests. It also avoids pinning to a specific Dart SDK beyond the minimum required, so dependency-version capping is intentional: a downstream package that requires a higher SDK floor would silently raise the consumer's supported range.

KEY TAKEAWAYS

  • Single package for both CelesTrak and Space-Track data sources
  • Typed Dart models - no raw JSON or fixed-width TLE parsing in callers
  • Pluggable cache layer: memory, file, or bring your own
  • Parse isolation on native platforms; transparent fallback on web
  • Zero Flutter dependency - runs in any Dart environment