Note: This project is currently a work in progress.
A web app for visualizing Earth Observation System (EOS) satellite trajectories on an interactive 3D Earth globe, built with Django, React, and react-globe.gl.
This project tracks Earth Resources satellites (e.g., SCD 1, TECHSAT 1B, DLR-TUBSAT) using Two-Line Element (TLE) data from Celestrak. The backend fetches and processes satellite positions, while the frontend (to be implemented) will display these satellites on a 3D globe with their orbits and trailing trajectories.
- Backend: Fully implemented using Django and Django REST Framework.
- Fetches TLE data from Celestrak (
GROUP=resource
). - Computes satellite positions, orbits, and trails using Skyfield.
- Exposes an API endpoint at
/api/satellites/
.
- Fetches TLE data from Celestrak (
- Frontend: Not yet implemented (planned for React with
react-globe.gl
).
backend/
: Django backend for fetching and processing satellite data.pyproject.toml
: Poetry configuration for dependencies.eos_tracker/
: Django project directory.satellites/
: Django app for satellite tracking API.
frontend/
: React frontend (to be implemented).README.md
: Project documentation.
- Python 3.13
- Node.js 18+
- Poetry (for Python dependency management)
- Navigate to the backend directory:
cd backend
- Install dependencies using Poetry:
poetry install
- Activate the virtual environment:
poetry shell
- Apply Django migrations:
python manage.py migrate
- Run the Django development server:
python manage.py runserver
- Access the API at
http://localhost:8000/api/satellites/
.
The frontend is not yet implemented. See the roadmap.md
for next steps.
- GET /api/satellites/: Returns a list of Earth Resources satellites with their positions, orbits, and trails.
- Example Response:
{ "satellites": [ { "name": "SCD 1", "latitude": 10.234, "longitude": -50.678, "altitude": 750.2, "velocity": 7.3, "orbit": [[10.234, -50.678], ...], "trail": [[10.200, -50.650], ...] }, ... ] }
- Example Response:
- Backend:
- Django 5.0
- Django REST Framework 3.15
- Requests 2.31
- Skyfield 1.48
- Django CORS Headers (for frontend-backend communication)
MIT License (see LICENSE
file for details).
Carlos Melo carlos@sigmoidal.ai