Satlas: 3D-трекер спутников с AI-агентом на Claude
Как разработчик создал реальный продукт Satlas.app — 3D-трекер орбит с AI-агентом на базе Claude — в качестве портфельного проекта.
Когда портфолио — это не просто «Hello World»
Большинство портфельных проектов живут по одному и тому же сценарию: CRUD-приложение на React, список задач или клон Twitter. Всё это работает — но не запоминается. Один разработчик решил поднять планку и построил нечто принципиально иное: Satlas (satlas.app) — систему трёхмерного мониторинга космического пространства в реальном времени с AI-агентом в роли главного интерфейса.
Satlas — это «real-time 3D space situational awareness with an AI agent at the front door». Звучит как описание из научно-фантастического фильма, но это работающий веб-продукт, созданный одним человеком в соавторстве с Claude от Anthropic.
В этой статье разберём: как устроен проект изнутри, какие технологии лежат в основе, что значит «соавторство» с языковой моделью на практике — и почему такой подход к портфолио меняет правила игры на рынке труда.
Что такое Satlas и зачем это нужно
Satlas позволяет отслеживать каждый спутник, ракетный корпус и фрагмент космического мусора на орбите Земли — и задавать вопросы на обычном человеческом языке.
Это не просто красивая визуализация. Проект объединяет два принципиально разных слоя:
- Инфраструктурный слой — реальные орбитальные данные, математика небесной механики, 3D-рендеринг в браузере.
- Интеллектуальный слой — AI-агент, который принимает запросы на естественном языке и отвечает, используя актуальные данные об орбитах.
В отличие от существующих инструментов типа Heavens-Above или Celestrak, Satlas делает упор не на сырые данные, а на разговорный интерфейс: пользователь может спросить «какие спутники Starlink сейчас над Москвой?» и получить ответ, не разбираясь в TLE-форматах и орбитальных элементах.
Техническая архитектура: как это работает
TLE-данные и алгоритм SGP4
Основа любого трекера спутников — это Two-Line Element sets (TLE): стандартный формат описания орбитальных параметров, который публикует Космические силы США через CelesTrak и Space-Track.org.
Все орбитальные данные берутся из CelesTrak, который агрегирует официальные наборы TLE, публикуемые Космическими силами США.
Позиции вычисляются с помощью алгоритма орбитального распространения SGP4. Этот алгоритм — де-факто стандарт для расчёта положения спутников на низкой орбите.
SGP4 с актуальными TLE обеспечивает точность в пределах нескольких километров для спутников на НОО, но точность падает по мере устаревания данных.
// Пример: расчёт позиции спутника через satellite.js (SGP4)
import * as satellite from 'satellite.js';
const tleLine1 = '1 25544U 98067A 24001.00000000 .00007749 00000+0 14567-3 0 9994';
const tleLine2 = '2 25544 51.6369 94.7823 0002558 120.7586 15.7840 15.49587957510533';
const satrec = satellite.twoline2satrec(tleLine1, tleLine2);
const now = new Date();
const positionAndVelocity = satellite.propagate(satrec, now);
const positionEci = positionAndVelocity.position;
// Конвертация ECI -> геодезические координаты
const gmst = satellite.gstime(now);
const positionGd = satellite.eciToGeodetic(positionEci, gmst);
const latitude = satellite.degreesLat(positionGd.latitude);
const longitude = satellite.degreesLong(positionGd.longitude);
const altitude = positionGd.height; // в км
console.log(`МКС: ${latitude.toFixed(2)}°, ${longitude.toFixed(2)}°, ${altitude.toFixed(0)} км`);
3D-визуализация в браузере
Для рендеринга трёхмерного глобуса с орбитами спутников в реальном времени разработчики подобных проектов традиционно используют CesiumJS — мощную библиотеку для геопространственной 3D-визуализации.
Типичный стек включает: реальное распространение орбит через SGP4/SDP4 и интерактивный 3D-глобус CesiumJS с текстурами Natural Earth.
Библиотека satellite.js запускает SGP4-распространение, конвертируя наборы элементов в точные координаты широты, долготы и высоты в реальном времени.
AI-агент как главный интерфейс
Вот где Satlas отрывается от конкурентов. Вместо традиционного поискового интерфейса или фильтров — AI-агент, который понимает запросы на естественном языке и транслирует их в конкретные орбитальные запросы.
Архитектурно агент выступает «front door» — входной точкой для всех взаимодействий пользователя с системой:
graph TD
A[Пользователь задаёт вопрос] --> B[AI-агент на Claude]
B --> C{Тип запроса}
C -->|Поиск объекта| D[Запрос к БД TLE]
C -->|Текущая позиция| E[SGP4-пропагатор]
C -->|Исторические данные| F[Архив орбит]
D --> G[3D-визуализация]
E --> G
F --> G
G --> H[Ответ пользователю]
B --> H
Пользователь может спросить: «Покажи все активные спутники Starlink над Европой» или «Когда МКС пройдёт над Берлином сегодня ночью?» — агент разберёт намерение, сформирует нужные запросы к данным и вернёт ответ вместе с визуализацией.
«Соавторство» с Claude: что это значит на практике
Автор проекта честно указал в названии: проект создан «co-authored by Claude». Это не маркетинговый ход — это описание реального рабочего процесса.
Как AI помогал в разработке
Соавторство с языковой моделью в 2025 году — это не «попросить написать весь код». Это итеративный процесс, где AI берёт на себя:
- Генерацию шаблонного кода: структура компонентов, типовые паттерны, boilerplate.
- Отладку алгоритмов: особенно ценно для нетривиальной математики SGP4 и преобразований координатных систем (ECI → геодезические координаты).
- Архитектурные решения: как структурировать связь между AI-агентом и орбитальным движком.
- Документацию: комментарии к коду, README, описание API.
«Разработчик + AI-агент сегодня — это как разработчик + опытный напарник, который никогда не устаёт, всегда готов объяснить и не обижается на дурацкие вопросы в три часа ночи.»
Что остаётся за разработчиком
И всё же: AI не придумал Satlas. Разработчик принял ключевые решения:
- Концепция продукта — объединить SSA с conversational AI.
- Выбор стека — какие библиотеки, какой бэкенд, как организовать данные.
- Интеграция AI-агента — инструктирование, prompt engineering, ограничения.
- UX/UI — как должен выглядеть интерфейс, чтобы пользователь не терялся.
- Деплой и поддержка — запустить продукт в продакшн, а не просто на localhost.
AI ускорил реализацию — человек определил, что именно реализовывать.
Сравнение: Satlas vs. аналоги
Посмотрим, как Satlas соотносится с существующими инструментами трекинга:
| Параметр | Satlas | Heavens-Above | satellitetracker3d.com | N2YO |
|---|---|---|---|---|
| 3D-визуализация | ✅ | ❌ | ✅ | Частично |
| AI-агент (NLP) | ✅ | ❌ | ❌ | ❌ |
| Запросы на языке | ✅ | ❌ | ❌ | ❌ |
| Мусор и обломки | ✅ | Частично | ❌ | ✅ |
| Открытый исходник | ❌ | ❌ | ❌ | ❌ |
| Мобильная версия | ✅ | ✅ | ✅ | ✅ |
| Источник данных TLE | CelesTrak/Space-Track | CelesTrak | CelesTrak | Space-Track |
Главное конкурентное преимущество Satlas — разговорный интерфейс. Такой подход превращает сложные орбитальные данные в разговор, доступный каждому — от школьников до специалистов.
Почему это важно для разработчиков: уроки из проекта
Урок 1: Выбирайте сложную, но решаемую задачу
Satlas находится в «золотой зоне» сложности: достаточно амбициозен, чтобы выделяться в портфолио, но реалистичен для соло-разработчика с AI-помощником. Орбитальная механика — хорошо изученная область с открытыми данными (CelesTrak) и библиотеками (satellite.js). SGP4 базируется на официальном C++-коде из отчёта AIAA 2006-6753; орбитальные элементы можно получить с CelesTrak в форматах TLE или OMM.
Урок 2: AI-агент как интерфейс — это тренд, а не фича
Последние два года демонстрируют устойчивую тенденцию: компании переходят от традиционных UI к conversational AI. Satlas показывает, как это выглядит на практике для технически сложного домена.
- «Сколько спутников Starlink сейчас на орбите?»
- «Покажи траекторию МКС на следующие 90 минут»
- «Есть ли риск столкновения в этом регионе орбиты?»
- «Какие спутники принадлежат Китаю?»
Урок 3: Реальные данные делают проект живым
Работать с реальными TLE-данными, обновляемыми несколько раз в день — это совсем другой опыт по сравнению с моковыми данными. Наборы орбитальных элементов обновляются постоянно по мере того, как наземные станции отслеживают каждый виток. Это означает: нужно думать о кэшировании, об актуальности данных, об обработке ошибок.
Урок 4: Открытость про использование AI — это сила
Вместо того чтобы скрывать роль Claude в разработке, автор вынес это в заголовок. В 2025 году это правильная стратегия:
- Демонстрирует умение работать с современными инструментами.
- Показывает честность перед работодателями и пользователями.
- Сигнализирует о понимании того, где заканчивается AI и начинается человеческое мышление.
Как повторить: стек для собственного проекта
Если вы хотите построить нечто похожее, вот отправная точка:
Фронтенд:
- CesiumJS (3D-глобус)
- satellite.js (SGP4-пропагатор)
- React / Vue / Svelte (UI-фреймворк)
Бэкенд / данные:
- CelesTrak API (TLE-данные, бесплатно)
- Space-Track.org (более полный каталог, регистрация нужна)
AI-агент:
- Claude API (Anthropic) — через tool use / function calling
- OpenAI GPT-4o — альтернатива
- Langchain / LlamaIndex — для orchestration
Деплой:
- Vercel / Netlify (фронтенд)
- Railway / Fly.io (бэкенд)
Данные рекомендуется обновлять каждые два часа через серверный прокси, чтобы предоставлять наиболее актуальные орбитальные предсказания.
Заключение: портфолио как продукт
Satlas — это не просто «интересный проект». Это демонстрация зрелого инженерного мышления: выбрать сложную, но реальную проблему; использовать лучшие доступные инструменты (включая AI); довести до продакшн-уровня и запустить как настоящий продукт.
Три главных вывода:
- Портфельный проект должен решать реальную задачу — трекинг орбит нужен реальным людям, от любителей астрономии до специалистов по безопасности космической деятельности.
- AI-соавторство ускоряет, но не заменяет — Claude помог написать код быстрее, но концепция, архитектура и финальный продукт — это человеческие решения.
- Разговорный AI-интерфейс — это новый стандарт UX для сложных данных. Satlas показывает, как это выглядит в космической тематике. Следующее поколение инструментов в медицине, финансах, логистике будет выглядеть так же.
Если вы разработчик и ищете идею для следующего портфельного проекта — возьмите открытый набор данных, добавьте AI-агент как интерфейс и сделайте это по-настоящему. Не «Hello World», а продукт.