Як ми з нуля зібрали повноцінну інфраструктуру за допомогою Cursor AI
Вітаю, спільното! Мене звати Дмитро, я працюю DevOps Security та AWS Specialist у DevSecOps, Inc . Це моя перша стаття на DOU (сподіваюся, не остання — якщо сподобається нашій шановній українській айті-спільноті). Оригінал допису англійською ви можете переглянути у мене в LinkedIn.
У цій статті хочу поділитися досвідом перших кроків у роботі з Cursor AI — інструментом, який не просто доповнює код, а здатен з нуля зібрати повноцінну інфраструктуру. Це історія про експеримент, який несподівано спрацював і відкрив новий рівень взаємодії з ШІ.
День 0. Ідея
До нас зайшов новий проєкт. Оцінка виконання — два місяці. Під час планування з’явилась ідея:
«А що, якби інфраструктуру повністю написав ШІ? Без шаблонів, без ручної праці. Тільки правила — і хай працює».
Ми обрали Cursor. Це не просто редактор — це середовище, у якому ти керуєш ШІ за допомогою правил, які називаються stdlib (standard library). Cursor сам створює код, інфраструктуру, логіку — все.
І я скажу прямо: він справився чудово.
За 3,5 години (не враховуючи часу на написання інструкцій) Cursor згенерував повністю робочу інфраструктуру:
- Хмара — CloudFormation (CDK)
- Бекенд — Python / Lambda у контейнері
- База даних — DynamoDB
- Фронтенд — React
В результаті маємо:
3,5 години — до робочої версії.
Ще півтора дня — на тестування, документацію й доведення до пуття.
Разом — 2 дні до продакшену, без жодного рядка вручну.
День 1. Знайомство
Я почав читати. Ось три статті, які дали мені старт:
З’ясовується, Cursor — це форк Visual Studio Code. Але не просто редактор, а редактор із блекджеком, ШІ та правилами.
Ти не пишеш код — ти пишеш правила. І ШІ сам усе будує.
Це не просто інструмент. Це прискорювач. Особливо коли проєкт вузькоспеціалізований, і знайти розробника складно.
День 2. Створюю правила
Оформлюю двотижневу безкоштовну підписку. За 8 годин створюю власну stdlib.
Структура виглядає ось так:
Пишу в чат Cursor’а такий запит:
Ось архітектура проєкту (додаю зображення). Потрібно з нуля зібрати застосунок за цією схемою. Опис проєкту: @project-overview.mdc Інструкції: @dev-backend-python-lambda-rules.mdc @dev-cdn-rules.mdc @dev-dynamodb-guideline.mdc @dev-dynamodb-rules.mdc @dev-experience-kiosk-rules.mdc @dev-frontend-rules.mdc @dev-s3-media-rules.mdc
І тут почалася магія.
За перші 30 хвилин — 30 файлів. Згодом — понад 20 000 рядків коду. Все — в одному коміті.
Спочатку наша архітектура виглядала так:
Але Cursor створив дещо більше — він додав API Gateway, про який ми спочатку не подумали.
Лише під час обговорення ми зрозуміли, що ШІ підстрахував нас і додав те, що ми проґавили.
Щоб переконатися, що все працює, я попросив Cursor написати автотест, який перевіряє всю API-логіку.
Що мається на увазі під «перевіркою»
Тест допоміг ШІ виявити баги — і одразу їх виправити.
ШІ діє як джуніор: пробує → перевіряє → не працює → пробує знову. Іноді він брутфорсить, не до кінця розуміючи контекст — але не зупиняється, доки не досягне результату.
Ось трохи вивіду логів скріпта ./scripts/test-api.sh
:
Created test file: test.txt Step 1: Getting upload URL Response: { "upload_url": "https://example-example.s3.amazonaws.com/media/example/test.txt?", "media_id": “example”, "metadata": { "pk": "MEDIA#example==", "sk": "METADATA#test.txt", "user_id": "anonymous", "file_name": "test.txt", "content_type": "text/plain", "created_at": "2025-03-26T10:17:01.559575", "expires_at": 1745576221, "status": "active" } } Got media ID: example== Step 2: Uploading file to S3 upload: ./test.txt to s3://example-example/media/example==/test.txt Upload successful Waiting for S3 consistency... Step 3: Getting media info Media info: { "download_url": "https://example-example.s3.amazonaws.com/media/example/test.txt?", "metadata": { "user_id": "anonymous", "created_at": "2025-03-26T10:17:01.559575", "content_type": "text/plain", "status": "active", "sk": "METADATA#test.txt", "file_name": "test.txt", "pk": "MEDIA#example", "expires_at": 1745576221.0 } } Got download URL: https://example-example.s3.amazonaws.com/media/example/test.txt? Step 4: Creating QR code QR Response: { "qr_code": "", "media_id": "example", "mapping": { "pk": "QR#example", "sk": "MAPPING", "url": "https://example-example.s3.amazonaws.com/media/5Jp9m2tMZVu8Zx2L36a2iA%3D%3D/test.txt?", "created_at": "2025-03-26T10:17:06.606781", "expires_at": 1743589025, "status": "active" } } QR code saved to qr_code.png Step 5: Testing direct download download: s3://example-example/media/example/test.txt to ./downloaded_file.txt Download successful ✓ Files match - test passed! ✓✓✓ All tests completed successfully! ✓✓✓ Cleaning up temporary files...
День 3. Полірування
- Останній день пішов на:
- Рефакторинг правил
- Переклад stdlib англійською
- Перевірку логіки, яку створив Cursor
Увесь код, усі шаблони — написані AI. Людина не писала жодного рядка вручну.
Наприкінці
Це не майбутнє. Це вже сьогодення.
Коли Тоні Старк розмовляв із Джарвісом і отримував нову броню, він робив те саме, що ми зробили з Cursor. Тільки не у фільмі — а в реальному житті.
ШІ працює — якщо правильно написані правила. Але тепер відповідальність лежить на операторі.
У моєму випадку — на мені. Я — DevOps, і тепер повинен не лише розбиратися в AWS і CI/CD, а й розуміти фронтенд, бекенд і архітектуру, які створив ШІ. З Cursor кожен стає трохи CTO. Розробник, тестувальник, ДевОпс — усі піднімаються на новий рівень. Як колись друкарські машинки поступилися Word, книги — відео, а солдатики — комп’ютерним іграм, так і ШІ поступово бере на себе написання ПЗ.
А ми можемо нарешті зосередитися на чомусь новому. Можливо, навіть важливішому.
30 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів