Олексiй

Програміст PHP

Employment type:
full-time
Age:
24 years
City:
Kyiv

Contact information

The job seeker has provided: Phone numberEmailMessenger

Name, contacts and photo are only available to registered employers. To access the candidates' personal information, log in as an employer or sign up.

Work experience

Програміст PHP

from 07.2025 to 08.2026 (1 year 2 months)
PSP Express, Дистанційно (Транспорт, логістика)

ProCargo (митні декларації та трекінг; Laravel 10, Inertia + Vue 3), прийнятий як легасі; ICS, мультитенантний митний портал
команди (Laravel 12, Filament), останні місяці вів сам. Звітував Head of Engineering.
• Переніс накладання КЕП для митниці із сервера в браузер (IIT EndUser у Web Worker): ключ не покидає клієнта.
Двофазний протокол з детермінованим XML, ідемпотентна черга відправки з лімітом частоти. Працювало в продакшені.
• Зробив створення відправлень безпечним поверх неідемпотентного митного API: Redis-блокування з TTL під таймаути
API, політика повторів для кожної джоби; песимістичне блокування пулу трек-номерів.
• Перебудував конвеєр реєстрів на Bus::chain + Bus::batch між митницею, ERP і WMS: машина станів, відкат, безпечне
повторне входження після часткового збою. Прискорив джоби ~10x: прибрав dispatchAfterResponse (губив джоби під
PHP-FPM), передав ID замість 192+ серіалізованих джоб, усунув дедлок на кеш-локах.
• Автоматизував багатоетапний ланцюжок митних реєстрів (30.1 → 31.1 → 32.1) через шифрований SOAP (AES-256 для
даних, RSA для сесійного ключа) з опитуванням і backoff, прибравши ручні кроки оператора.
• Побудував інтеграційний шар для 7 систем (ERP, WMS, митний API і шлюз, фіскальний сервіс, сайт, сервіс інцидентів):
конектори на Saloon, повтори лише на 5xx, типізовані винятки, санітизація логів, feature flag.
• Провів аудит ~2 млн записів контрагентів, прибрав ~250 тис. рядків тестових даних, спроєктував entity resolution без
хибних злиттів: багаторівневі ключі, нормалізація багатомовних адрес, ручна модерація.
• Посилив безпеку: вебхуки fail-closed, порівняння секретів у постійний час, IP allowlist, ліміти перебору для 2FA.
• Спроєктував мультитенантність з брендуванням; RBAC: 6 ролей, ~30 прав зі скоупами. Замінив два легасі-хелпери PDF
(900+ і 870+ рядків) за 15 кроків без простою. Прибрав N+1 у KPI: звіти на два порядки швидші.
• Також: два редизайни інтерфейсу, світла й темна теми, локалізація; публічний WordPress-сайт; open-source служба
підтримки в Telegram; перша половина incident-core, нового сервісу на TypeScript, за 2 тижні

Програміст PHP

from 01.2023 to 04.2025 (2 years 4 months)
Prof-it, Дистанційно (IT)

• Відповідав за бекенд і фронтенд Telegram Mini App: від першого коміту до публічного релізу за 2 місяці; продукт виріс до
аудиторії в сотні тисяч користувачів на місяць.

• Спроєктував модель даних і фонову обробку під велику одночасну аудиторію; випускав релізи разом із двома QA;
скоротив важкий звіт з 2,5 до 1 с.

• Забезпечував повний цикл релізу у співпраці з двома QA-інженерами.

• Робота над іншими проєктами компанії: виправлення помилок, рефакторинг застарілого коду (legacy), оптимізація SQL-запитів (зокрема, скоротив час виконання складного звіту з 2,5 до 1 секунди завдяки аналізу через EXPLAIN, індексації та переписуванню запиту).

Education

КПІ ім. Ігоря Сікорського

Автоматизація та компʼютерно-інтегровані технології, Київ
Higher, from 2020 to 2024 (4 years)

Knowledge and skills

  • PHP
  • JavaScript
  • MySQL
  • Git
  • HTML
  • CSS
  • Знання принципів ООП
  • Користувач ОС Linux
  • Docker
  • WordPress
  • SQL
  • PostgreSQL
  • Комунікабельність

Language proficiencies

  • Ukrainian — fluent
  • English — above average

References

  • Олександр Валіков (telegram за запитом)

    Олександр Валіков (telegram за запитом)

    Керівник ІТ-відділу, PSP Express

    Contact details are hidden
  • Сергій Аревшатьянц

    Сергій Аревшатьянц

    CTO, TRITON IT

    Contact details are hidden

Similar candidates

All similar candidates

Candidates at categories

Candidates by city


Compare your requirements and salary with other companies' jobs: