Як ми з нуля зібрали повноцінну інфраструктуру за допомогою 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, книги — відео, а солдатики — комп’ютерним іграм, так і ШІ поступово бере на себе написання ПЗ.
А ми можемо нарешті зосередитися на чомусь новому. Можливо, навіть важливішому.

35 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів