Sento Sango - Portfolio

Php Client

GitHub: https://github.com/php-client

Статус: Активный (в разработке)

Описание

Php Client - это набор API-клиентов для различных сервисов, которые я использую в своей домашней сети. Все клиенты построены на базе библиотеки Saloon, что позволяет создавать качественные SDK с единообразным подходом.

Зачем я это делал

У меня дома развернута довольно сложная инфраструктура - роутеры, NAS, VPN, AI-сервисы, синхронизация файлов. Для автоматизации и управления всем этим хозяйством нужно было взаимодействовать с API разных сервисов.

Можно было бы каждый раз писать HTTP-запросы напрямую, но это неудобно и приводит к дублированию кода. Решил сделать нормальные клиенты, которые можно переиспользовать в разных проектах.

Как это устроено

Все клиенты построены на базе Saloon - это современная PHP-библиотека для создания SDK и API-клиентов. Saloon предоставляет удобную структуру для описания endpoints, сериализацию/десериализацию данных, middleware и другие полезные штуки.

Я создал отдельный репозиторий для каждого сервиса, чтобы можно было устанавливать только нужные клиенты через Composer. Плюс есть общая support-библиотека для переиспользуемого кода.

Реализованные клиенты

AI и LLM:

Сетевая инфраструктура:

Утилиты:

Вспомогательные библиотеки:

В планах

Хочу добавить клиенты для Netbird, AdGuard, Outline, LMStudio и других сервисов, которые использую или планирую использовать.

Технологический стек

Как разрабатывал

Начал с клиента для Keenetic, потому что он был нужен первым. Потом постепенно добавлял другие клиенты по мере необходимости.

Работаю над проектом в свободное время, когда появляется потребность в новом клиенте или нужно что-то улучшить в существующих. Четкого плана нет - делаю то, что нужно для моих задач.

Самое интересное в этом проекте - изучение разных API. Каждый сервис проектирует API по-своему, и это хороший опыт работы с разными подходами к дизайну API.

Что получилось

Все клиенты опубликованы на GitHub как open-source и доступны через Packagist. Использую их в своих проектах для автоматизации домашней инфраструктуры.

Не знаю, использует ли кто-то эти клиенты кроме меня - статистику скачиваний не отслеживаю. Но если кому-то пригодится - буду рад.