Приложения на Laravel и PHP

Приложения на Laravel, созданные для передачи.

Клиентские порталы, подписочный биллинг, внутренние инструменты и API, которые связывают их со всем остальным, что у вас работает. Типизированные, протестированные там, где это важно, и задокументированные настолько, что вы сможете заменить меня без драмы, — это единственное честное определение завершённого проекта.

Типичный проект От шести недель до шести месяцев
Стек PHP 8.3, Laravel 11, PostgreSQL 16, Redis
Вы получаете Репозиторий, тесты, заметки по деплою, описание архитектуры

01ОбъёмЧто я делаю

Какие приложения обычно имеются в виду.

Порталы для клиентов и партнёров

Место, куда ваши клиенты входят, чтобы видеть свои данные: заказы, счета, документы, потребление, права доступа. Сложны здесь редко экраны. Сложны модель прав, журнал аудита и то, что происходит, когда одному аккаунту нужны шесть пользователей с разным доступом.

Подписочный биллинг и выставление счетов

Тарифы, пропорциональный расчёт, условия оплаты, работа с просрочками, налоги, PDF-счета и отчёт о сверке, которому ваша бухгалтерия действительно доверяет. Я строю биллинг на двойной записи, а не на накопительном итоге, потому что накопительный итог невозможно проверить в тот день, когда кто-то оспаривает списание.

Внутренние инструменты вместо таблицы

Процесс, который сейчас живёт в общей таблице, с конфликтами версий и единственным человеком, который в ней разбирается. Превратить его в приложение — часто самая выгодная работа, которую может заказать компания, и обычно самая небольшая.

API и интеграции

Эндпоинты REST или GraphQL для вашего фронтенда, мобильного приложения или партнёра. Плюс интеграции, связывающие Laravel со всем остальным, что у вас работает: ERP, CRM, платёжным провайдером, складской системой.

Принять чужую кодовую базу

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

02МетодКуда идут деньги

На что я трачу ваш бюджет.

Большинство бюджетов на приложения теряется в одних и тех же трёх местах, поэтому внимание уходит туда, а не в то, что хорошо смотрится на демо.

Модель данных — прежде всего

Решения по схеме — те, которые нельзя дёшево отменить. Миграция, которая через восемнадцать месяцев делит одну таблицу на три, с живыми данными клиентов и набором отчётов, завязанных на неё, — самый дорогой день в жизни проекта. Лучше потратить на схему два лишних дня, чем две лишние недели на такую миграцию.

Всё, что касается денег и прав

Биллинг, роли и всё, что пишет в бухгалтерскую книгу, покрывается тестами. Не ради значка покрытия, а чтобы следующий человек мог изменить вашу логику цен, не сломав молча счета прошлого квартала. В остальном я тестирую неудобные пути и не трогаю очевидные.

Что происходит, когда ломается что-то другое

Интеграция не закончена, когда работает. Она закончена, когда разумно ведёт себя, пока другая система не отвечает. Это очереди задач, ограниченные повторы, ключи идемпотентности и журнал ошибок, который может прочитать человек, — чтобы неудачный день у поставщика задержал ваши данные, а не потерял их.

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

03ПередачаЧто остаётся у вас в конце

Результат — это не только работающее приложение.

01

Репозиторий

В вашей организации, а не в моей, с первого коммита. С полной историей и сообщениями коммитов, объясняющими зачем, а не только что.
02

Описание архитектуры

Несколько страниц о доменных моделях, принятых решениях и отвергнутых вариантах с причинами. Этот документ сэкономит вашему следующему разработчику две недели.
03

Рабочее локальное окружение

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

Заметки по деплою и откату

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

04ВопросыЧастые вопросы — прямые ответы

О чём спрашивают, прежде чем нанять меня.

Это должно быть приложение на Laravel или сайт на WordPress?

Если главная задача — публиковать страницы, которые редактируют люди без технических знаний, WordPress обычно дешевле и быстрее. Если главная задача — чтобы пользователи входили и что-то делали — заказывали, бронировали, согласовывали, строили отчёты, — это приложение. Втиснуть приложение в WordPress за два года обычно обходится дороже, чем один раз построить его правильно.

Можете ли вы принять существующую кодовую базу?

Да, и это немалая часть моей работы. Всё начинается с недели только на чтение и письменной оценки: что есть, что рискованно и что я сделал бы первым. Этот документ остаётся у вас, что бы вы ни решили дальше.

Вы пишете тесты?

Для всего, что связано с деньгами, правами или целостностью данных, — да. Я не гонюсь за процентом покрытия: набор тестов, проверяющих, что геттеры возвращают значения, — это затраты на поддержку под видом качества. Тесты существуют, чтобы кто-то мог изменить ваш биллинг, не сломав его.

Как вы решаете вопросы деплоя и хостинга?

С тем, что у вас уже есть: VPS, Forge, Ploi, Vapor, контейнеры. Если пока ничего нет, порекомендую самое простое решение под ваш трафик. Для большинства бизнес-приложений это один хорошо настроенный сервер с управляемыми бэкапами базы данных, а не кластер.

Можете ли вы интегрироваться с нашей ERP или CRM?

Обычно да. Настоящий вопрос никогда не в том, возможно ли это, а в том, как всё поведёт себя, когда другая система тормозит или лежит. Очереди задач с ограниченными повторами и понятный журнал ошибок — чтобы их сбой задерживал ваши данные, а не терял их.

А если после запуска понадобятся изменения?

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

Следующий шаг

Опишите процесс, который хотите заменить.

Даже примерного описания мне хватит, чтобы сказать, это работа на две недели или на два квартала, — и какие части можно отложить в первой версии.

Бриф проекта Шаг 1 из 2 · Задача

Что вы хотите создать?

Для начала вполне достаточно одного абзаца. Если это не моя задача, я так и скажу и подскажу, к кому лучше обратиться.

Задача

Отметьте всё подходящее.

Платформа

«Не знаю» — вполне нормальный ответ.

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

0 / 1200

Два шага. Меньше минуты.