Inspiration

In microgravity, astronauts rapidly lose bone density and muscle without regular, well-dosed training. We wanted a simple, explainable way to scale workouts for any gravity using public space data—so crews can preserve bone stimulus and limit atrophy risk.

What it does

GravityFit Exo is a searchable catalog of exoplanets. Each planet has a gravity-based Intensity Index (1–10) that suggests how to scale loads, sets/reps, and cardio to keep training stimulus appropriate in partial-g. You can search by name, click a card, and see the planet’s gravity fraction and the estimated workout intensity.

How we built it

  • Data cleaning: We filtered the NASA Exoplanet Archive to rows with both mass and radius, removing incomplete/outlier points.
  • Physics core: We compute surface gravity relative to Earth as

$$ g_{\text{fraction}} \approx \frac{m}{r^2}, $$

where $m$ is mass in $M_\oplus$ and $r$ is radius in $R_\oplus$.

  • Index mapping: We map $g_{\text{fraction}}$ to a 1–10 Intensity Index, then round to the nearest integer for easy interpretation.
  • Modeling: We trained a scikit-learn Linear Regression using a 75/25 train/test split to smooth estimates and generalize to planets not yet reviewed (monotonic: lower $g$ ⇒ higher dose).
  • Stack: Data wrangling in Python/pandas (Colab). FastAPI back-end serves planets, gravity fractions, and indices. Next.js (JavaScript) front-end provides search + clickable cards.
  • Deploy: Front-end to Vercel; FastAPI serves the API our UI consumes.

Challenges we ran into

  • Missing/uncertain data: Many entries lacked mass or radius; we flagged and excluded those to avoid misleading indices.
  • Units & extremes: Ensuring consistent Earth units and handling “puffy” or ultra-dense planets; we use clipping to keep indices realistic.
  • End-to-end wiring: API pagination, CORS, and connecting Colab-generated data to the FastAPI service cleanly.
  • Monotonic behavior: Preserving the intuitive rule (lower $g$ ⇒ higher intensity) across both formula and model outputs.

Accomplishments that we're proud of

  • A physics-first, transparent pipeline from raw catalog → gravity fraction → interpretable Intensity Index.
  • A fast, searchable UI with clear, rounded tiers that non-experts can understand at a glance.
  • A tiny, explainable linear regression that stabilizes estimates while keeping the science visible.
  • Clean separation of concerns: FastAPI API + Next.js front-end, ready for scale on Vercel.

What we learned

  • A single meaningful feature—gravity—goes a long way when paired with guardrails.
  • Explainability > complexity for trust in health/fitness tooling.
  • Rounding to whole-number tiers improves usability without losing the signal.
  • Good data hygiene (filtering/flags) matters as much as model choice.

What's next for GravityFit

  • Public deploy on Vercel and a live demo link.
  • Exports (PDF/CSV) for planet lists and intensity indices.
  • Model transparency page with MAE/RMSE and dataset coverage.
  • Caching & perf improvements for snappier search.
  • Uncertainty badges where mass/radius errors are large.
  • Accessibility & polish: keyboard navigation, mobile layout, and API docs.

Built With

Share this project:

Updates