Стек используемых технологий
Основной стек технологий
- HTML, CSS, JavaScript, TypeScript.
- PHP 8, MySQL, PostgreSQL.
- Symfony, Laravel.
- LESS, SASS, PostCSS.
- БЭМ.
- React (Next.js), Vue (Nuxt.js).
- OpenAPI.
- Gitlab, Docker.
Стек не полный, если вам необходима другая технология или фреймворк — обращайтесь.
С примерами нашего кода и стандартами его написания можно ознакомиться на GitHub: Symfony Starter Kit, Laraver Starter Kit.
Используемые технологии и подходы
Бэкенд
- Руководствуемся различными принципами разработки: KISS, DRY, SOLID, GRASP, YAGNI и другие.
- PHP с применением паттернов проектирования.
- Symfony для разработки, поддержки и дальнейшего масштабирования сложных проектов.
- Laravel для разработки и быстрого старта небольших и средних проектов.
- MySQL, PostgreSQL:
- применяется нормализация, денормализация данных в зависимости от требований;
- репликации;
- применение индексов;
- транзакции с указанием уровня изоляции, блокировки;
- построение сложных запросов.
- Системы контроля версий:
- Git с различными моделями ветвления в зависимости от сложности проекта и требований по «time to market»;
- GitLab, GitHub, Bitbucket.
- Sphinx, Elasticsearch для полнотекстового морфологического поиска.
- Другие технологии:
- PHPUnit для модульных, функциональных тестов, покрытие кода;
- Gitlab с полноценным CI/CD;
- PHPStan, Psalm — статический анализ кода;
- PHP CS Fixer — соблюдение стандартов оформления кода;
- Rector — автоматизация рефакторинга;
- Deptrac — контроль зависимостей слоев и модулей;
- Redis, RabbitMQ — кеширование и сервер очередей;
- Docker — разработка, развертывание на серверах;
- и многое другое.
Фронтенд
Разрабатываем как клиентские, так и серверные приложения, используя библиотеки React (Next.js), Vue (Nuxt.js):
- Модульная архитектура.
- SPA / SPA + SSR.
- Nuxt.js — развиваем и разрабатываем проекты на второй и третьей версиях.
- Composition API.
- Строгое описание типов с помощью Typescript.
- Интеграция сторонних сервисов.
- Взаимодействуем с сервером через классический REST API или GraphQL.
- WebSocket.
- Автоматическая проверка стиля кода инструментами Stylelint и ESLint.
- Компонентные / Unit / E2E тесты.
Оптимизируем производительность проектов:
- сокращение количества запросов к серверу путем правильной сборки зависимостей;
- постепенная загрузка не критичных компонентов страницы;
- управление отображением содержимого в процессе загрузки страницы;
- правильное использование различных форматов графики и ее оптимизация.
Стандартизируем процессы frontend разработки:
- написание методологий разработки;
- разработка библиотеки используемых компонентов Storybook / Bit;
- разработка стайлгайда для проекта;
- рефакторинг и обновление проектов.
Верстаем макеты с использованием технологий HTML, CSS, JS, TS:
- принципы БЭМ и разделение интерфейса на компоненты;
- CSS-анимации и JS-интерактив;
- адаптивность;
- кроссбраузерность;
- семантика и валидность html разметки;
- доступность для людей с ограниченными возможностями;
- использование микро-разметки opengraph и schema.org;
- UI Kits для быстрой разработки прототипов.
Дизайн
- Узкоспециализированные специалисты: графический дизайн, иллюстрация, видео, моушн-дизайн, анимация, иконографика, типографика, 3D.
- Документирование дизайна.
- Системы масштабирования проектов, руководство правил по использованию UI элементов.
Аналитика и проектирование
- Интервьюирование клиента, погружение в предметную область и бизнес-процессы.
- Формирование модульной системы и схем бизнес-процессов посредством Event Storming. Метод позволяет синхронизировать бизнес и разработку. В качестве инструмента реализации методологии применяем Miro.
- Концептуальное видение проекта.
- Анализ конкурентного поля и другая аналитика.
- Построение информационной архитектуры проекта, детализация функциональных модулей, отслеживание взаимосвязей.
- Проработка интерфейсных решений и их обоснование.
- Разработка прототипов с адаптивом в виде схем-макетов, либо интерактивных страниц.
- Подготовка технической документации к прототипам.
- Результатом становится:
- Документация: описание проекта (техническая спецификация), схемы в виде графической структуры набора модулей и взаимосвязей, сценарии поведения (схемы процессов).
- Адаптивные интерактивные прототипы, документация к ним.
Коммуникации внутри команды
- Redmine и Slack, их тесная интеграция, кастомизированная под наши нужды.
- Сервисы Google.