Идея
Вместо того чтобы заявлять об активности в резюме — показать её вживую. Этот dashboard агрегирует публичные инженерные сигналы — звёзды, подписчиков и репозитории GitHub, heatmap контрибуций, языковой микс — вместе с собственным счётчиком просмотров сайта и обновляется без ручных правок.
Как это работает
Это React Server Component, который параллельно обращается к нескольким источникам и рендерит результат на сервере:
- GitHub — публичный REST API (
/users/{user}и/users/{user}/repos) для звёзд, подписчиков, репозиториев и языкового микса. - Heatmap контрибуций — плоский календарь по дням, сгруппированный в колонки по неделям и нарисованный чистым CSS-гридом.
- Просмотры сайта —
count(*)по таблицеviewsв Postgres, та же, что питает счётчик в футере. - Контент и датасет — количество слов и размер датасета считаются на build time.
У каждого запроса есть таймаут, и он fail-soft: если источник недоступен, его секция просто скрывается, а не роняет страницу и не показывает фейковые нули. Результаты кэшируются и ревалидируются раз в час через Next.js ISR — страница остаётся быстрой и при этом свежей.
Trade-off'ы
- Живой fetch против закоммиченного снимка. Запрос на этапе рендера (с ISR) держит числа актуальными без cron-задачи, коммитящей данные обратно в репозиторий.
- Graceful degradation вместо гарантий. Сторонние API падают; скрыть секцию лучше, чем показать сломанный dashboard.