defmodule Orbis.MixProject do use Mix.Project @version "0.26.0" @source_url "https://github.com/neilberkman/orbis" def project do [ app: :orbis, version: @version, elixir: "~> 1.18", start_permanent: Mix.env() == :prod, deps: deps(), name: "Orbis", description: description(), package: package(), docs: docs(), source_url: @source_url ] end def application do [ mod: {Orbis.Application, []}, extra_applications: [:logger, :ssl] ] end defp deps do [ {:nx, "~> 0.7"}, {:rustler, "~> 0.37", optional: true}, {:rustler_precompiled, "~> 0.9"}, {:astrodynamics, "~> 0.6.0"}, {:req, "~> 0.5"}, {:jason, "~> 1.4"}, {:ex_doc, "~> 0.34", only: :dev, runtime: false}, {:quokka, "~> 2.12", only: [:dev, :test], runtime: false} ] end defp description do """ Satellite toolkit for Elixir — SGP4 propagation, coordinate transforms (0 ULP Skyfield parity), GNSS positioning, orbit determination, conjunction assessment, pass prediction, live TLE/OMM data, and real-time tracking. Rust NIF backend. """ end defp package do [ files: package_files(), licenses: ["MIT"], links: %{"GitHub" => @source_url} ] end defp package_files do [ "lib", "native/orbis_nif/src", "native/orbis_nif/Cargo*", "mix.exs", "README.md", "CHANGELOG.md", "LICENSE" ] ++ Path.wildcard("checksum-*.exs") end defp docs do [ main: "Orbis", extras: [ "README.md", "CHANGELOG.md", "guides/track_iss.md", "guides/pass_prediction.md", "guides/conjunction_screening.md", "guides/accuracy.md", "guides/batch_analysis.md", "guides/gnss_constellation_catalog.md", "examples/iss_tracker.livemd", "examples/gnss_positioning.livemd" ], groups_for_extras: [ Guides: Path.wildcard("guides/*.md") ], groups_for_modules: [ Core: [Orbis, Orbis.Elements, Orbis.SGP4, Orbis.TemeState], Coordinates: [Orbis.Coordinates], "Ground Station": [Orbis.Passes, Orbis.Doppler, Orbis.RF, Orbis.Tracker], "Orbit Determination": [Orbis.IOD, Orbis.Lambert], "Space Environment": [Orbis.Eclipse, Orbis.Atmosphere, Orbis.Ephemeris, Orbis.Angles], Conjunction: [Orbis.Conjunction], "GNSS Positioning": [ Orbis.GNSS.Positioning, Orbis.GNSS.PrecisePositioning, Orbis.GNSS.SP3, Orbis.GNSS.Broadcast, Orbis.GNSS.RINEX.Observations, Orbis.GNSS.ReducedOrbit, Orbis.GNSS.ReducedOrbit.Piecewise, Orbis.GNSS.Constellation, Orbis.GNSS.Geometry, Orbis.GNSS.Observables, Orbis.GNSS.Velocity, Orbis.GNSS.QC, Orbis.GNSS.DGNSS, Orbis.GNSS.RTK, Orbis.GNSS.SolutionReport, Orbis.GNSS.CarrierPhase, Orbis.GNSS.IonosphereFree, Orbis.GNSS.Ionosphere, Orbis.GNSS.Troposphere, Orbis.GNSS.Time, Orbis.GNSS.Signal.CA, Orbis.GNSS.Signal.Correlator, Orbis.GNSS.Navigation.LNAV, Orbis.GNSS.Navigation.LNAV.Ephemeris ], "Data Sources": [ Orbis.CelesTrak, Orbis.Constellation, Orbis.GNSS.Data, Orbis.GNSS.Data.Product, Orbis.GNSS.Data.Catalog, Orbis.GNSS.Data.Cache ], "Batch Analysis": [ Orbis.Nx, Orbis.Nx.Geometry, Orbis.Nx.Visibility, Orbis.Nx.RF, Orbis.Nx.Coverage ], Format: [Orbis.Format.TLE, Orbis.Format.OMM] ] ] end end