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. Использую их в своих проектах для автоматизации домашней инфраструктуры.
Не знаю, использует ли кто-то эти клиенты кроме меня - статистику скачиваний не отслеживаю. Но если кому-то пригодится - буду рад.