Когда портфолио — это не просто «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 позволяет отслеживать каждый спутник, ракетный корпус и фрагмент космического мусора на орбите Земли — и задавать вопросы на обычном человеческом языке.

Это не просто красивая визуализация. Проект объединяет два принципиально разных слоя:

  1. Инфраструктурный слой — реальные орбитальные данные, математика небесной механики, 3D-рендеринг в браузере.
  2. Интеллектуальный слой — AI-агент, который принимает запросы на естественном языке и отвечает, используя актуальные данные об орбитах.
ℹ Что такое space situational awareness?
Space Situational Awareness (SSA) — это знание о том, что находится на орбите, где именно и куда движется. Критически важно для предотвращения столкновений спутников, планирования запусков и защиты космической инфраструктуры.

В отличие от существующих инструментов типа 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 как «соавтора» — умный ход. Это честность, которая демонстрирует зрелость: вы понимаете, как использовать инструменты максимально эффективно. Работодатели в 2025 году ценят это не меньше, чем «чистый» код без AI.

Что остаётся за разработчиком

И всё же: AI не придумал Satlas. Разработчик принял ключевые решения:

  • Концепция продукта — объединить SSA с conversational AI.
  • Выбор стека — какие библиотеки, какой бэкенд, как организовать данные.
  • Интеграция AI-агента — инструктирование, prompt engineering, ограничения.
  • UX/UI — как должен выглядеть интерфейс, чтобы пользователь не терялся.
  • Деплой и поддержка — запустить продукт в продакшн, а не просто на localhost.

AI ускорил реализацию — человек определил, что именно реализовывать.


Сравнение: Satlas vs. аналоги

Посмотрим, как Satlas соотносится с существующими инструментами трекинга:

ПараметрSatlasHeavens-Abovesatellitetracker3d.comN2YO
3D-визуализацияЧастично
AI-агент (NLP)
Запросы на языке
Мусор и обломкиЧастично
Открытый исходник
Мобильная версия
Источник данных TLECelesTrak/Space-TrackCelesTrakCelesTrakSpace-Track

Главное конкурентное преимущество Satlas — разговорный интерфейс. Такой подход превращает сложные орбитальные данные в разговор, доступный каждому — от школьников до специалистов.


Почему это важно для разработчиков: уроки из проекта

Урок 1: Выбирайте сложную, но решаемую задачу

Satlas находится в «золотой зоне» сложности: достаточно амбициозен, чтобы выделяться в портфолио, но реалистичен для соло-разработчика с AI-помощником. Орбитальная механика — хорошо изученная область с открытыми данными (CelesTrak) и библиотеками (satellite.js). SGP4 базируется на официальном C++-коде из отчёта AIAA 2006-6753; орбитальные элементы можно получить с CelesTrak в форматах TLE или OMM.

Урок 2: AI-агент как интерфейс — это тренд, а не фича

Последние два года демонстрируют устойчивую тенденцию: компании переходят от традиционных UI к conversational AI. Satlas показывает, как это выглядит на практике для технически сложного домена.

📝 Примеры запросов к AI-агенту Satlas
  • «Сколько спутников Starlink сейчас на орбите?»
  • «Покажи траекторию МКС на следующие 90 минут»
  • «Есть ли риск столкновения в этом регионе орбиты?»
  • «Какие спутники принадлежат Китаю?»

Урок 3: Реальные данные делают проект живым

Работать с реальными TLE-данными, обновляемыми несколько раз в день — это совсем другой опыт по сравнению с моковыми данными. Наборы орбитальных элементов обновляются постоянно по мере того, как наземные станции отслеживают каждый виток. Это означает: нужно думать о кэшировании, об актуальности данных, об обработке ошибок.

Урок 4: Открытость про использование AI — это сила

Вместо того чтобы скрывать роль Claude в разработке, автор вынес это в заголовок. В 2025 году это правильная стратегия:

  • Демонстрирует умение работать с современными инструментами.
  • Показывает честность перед работодателями и пользователями.
  • Сигнализирует о понимании того, где заканчивается AI и начинается человеческое мышление.
⚠ Важно понимать
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); довести до продакшн-уровня и запустить как настоящий продукт.

Три главных вывода:

  1. Портфельный проект должен решать реальную задачу — трекинг орбит нужен реальным людям, от любителей астрономии до специалистов по безопасности космической деятельности.
  2. AI-соавторство ускоряет, но не заменяет — Claude помог написать код быстрее, но концепция, архитектура и финальный продукт — это человеческие решения.
  3. Разговорный AI-интерфейс — это новый стандарт UX для сложных данных. Satlas показывает, как это выглядит в космической тематике. Следующее поколение инструментов в медицине, финансах, логистике будет выглядеть так же.

Если вы разработчик и ищете идею для следующего портфельного проекта — возьмите открытый набор данных, добавьте AI-агент как интерфейс и сделайте это по-настоящему. Не «Hello World», а продукт.