гора.
AI-translation · draft (awaiting native review)
ჩანაწერი · 19 მარტი, 2026 · 3 წუთი წასაკითხი

როგორ დავიწყე მიწოდების სისტემის წერა


საკმარისია ლაყბობა. გადავდივართ პროცესზე. მინიმუმამდე დავიყვან ტექნიკურ ტერმინებს, რომ ნათელი იყოს, როგორ გამოიყურება ეს მთლიანობაში.


შესასვლელში მქონდა შემდეგი: არის მიწოდების საიტი, მე მასში დისპეჩერი ვარ, არიან მძღოლები, არის საქონელი, არის ვიტრინა, არის შეკვეთები. და ფაქტობრივად — ეს უკვე იყო მომუშავე ბიზნესი, რომელიც ჩვენ არ გვეკუთვნოდა.

დომენი ჩვენი არ არის. სერვერი ჩვენი არ არის. საერთოდ არაფერი ჩვენი არ არის.

ერთადერთი, რაც მქონდა — ეს იყო წვდომა ადმინ პანელთან.


ნორმალურ სიტუაციაში ეს ასე კეთდება: დამკვეთს დასვამ წინ და მისგან ბიზნეს-ლოგიკას ამოაგდებ. როგორ მოძრაობს საქონელი — საწყობიდან კლიენტამდე თუ პირიქით. როგორ მოძრაობს ფული. დანარჩენი ყველაფერი — პრომოკოდები, რეფერალები — ეს უკვე დანამატებია, რომლებიც სტარტზე საჭირო არ არის.


მაგრამ ჩემი დამკვეთი უკვე გათამამებულია. ეზარება რაიმეს ახსნა. მე, თუ გულახდილად, ასევე მეზარება მისგან ამის ამოგდება. სწრაფად შევაფასე, რომ ამაზე თვე წავა, და გადავწყვიტე სხვა გზით წავსულიყავი.

უბრალოდ შუბლით წავედი.


გავხსენი Claude, ჩავტვირთე იქ უამრავი სქრინშოტი — საიტის ვიტრინა, ინტერფეისები, ყველაფერი, რასაც ვხედავდი — და ჩემი ენით ავუხსენი, რა მინდა მივიღო. ფორმალობების გარეშე, როგორც არის.


ამის შემდეგ წავედი Claude Code-ში და მივეცი მას ადმინკის ლოგინი და პაროლი. გაეშვა, ბრაუზერი ასწია Puppeteer-ით და საკმაოდ დიდხანს რაღაცას აკეთებდა — გვერდებზე დადიოდა, ქსელის მოთხოვნებს იჭერდა. შედეგად იპოვა ყველა API endpoint.


თუ ადამიანურ ენაზე გადავთარგმნით — მან მთელი პროექტის ბიზნეს-ლოგიკის გასაღებები შეარჩია.

და სწორედ ამ მომენტში გახდა ნათელი: დამკვეთისგან ლოგიკის ამოგდება საჭირო აღარ არის. ის უკვე მთლიანად სისტემის შიგნით არის.


გამიჩნდა შესაძლებლობა არა უბრალოდ „დამეთვალიერებინა", როგორ მუშაობს, არამედ ამომეღო მონაცემთა ბაზა და მთლიანად დამეშალა სისტემა. ვთხოვე ყველაფერი გაეანალიზებინა და ეს ანალიზი უკან Claude-ში ჩავტვირთე.


შემდეგ დაიწყო ყველაზე საინტერესო.

Claude-მა თავად შემომთავაზა, როგორ აეგო მუშაობა. მან თქვა: შექმენი პროექტი და ჩატვირთე იქ ყველაფერი — ვიტრინის სქრინშოტები, ადმინკა, ტექნიკური ინფორმაცია API-ზე, მთელი ანალიზი. ანუ შემეკრიბა ერთიანი „პროექტის ცოდნა".


ამის შემდეგ მან იმავე ჩატში სრულფასოვანი ტექნიკური დავალება დაწერა. თვითონ აირჩია, რაზე დაეწერა frontend, რაზე backend, და გასცა 30-დღიანი დეველოპმენტის გეგმა — კონკრეტული ამოცანებით ყოველდღე.

ყველაფერი ეს უკან ჩავტვირთე პროექტის მეხსიერებაში.


შემდეგ დაიწყო სუფთა მექანიკა. შევდიოდი პროექტში, ვიღებდი დღის ამოცანას, ვაკოპირებდი ახალ ჩატში, ვიღებდი კოდს და ვაძლევდი Claude Code-ს, რომელიც უკვე თავად წერდა პროექტს.


პირველი დღეები პრობლემების გარეშე გავიდა. შემდეგ ნიუანსები დაიწყო.

მთავარი პრობლემა — თითოეული ჩატი მეზობელს ვერ ხედავდა. საერთო იდეა მას ჰქონდა, მაგრამ კოდი თავის ცხოვრებას იწყებდა. გვერდით მიჰქონდა, სტრუქტურა იშლებოდა.


მაშინ პირველად მივხვდი, რომ შეზღუდვები უნდა მიმეცა. არა უბრალოდ „დაწერე კოდი", არამედ ნათლად მეთქვა: არ დაარღვიო სტრუქტურა, მოარგე უკვე არსებულს, დარჩი ჩარჩოებში. ამის გარეშე ის გამოცნობას იწყებდა.


პირველი ათი დღე backend-ს ვაკეთებდით — სტრუქტურას, ფოლდერებს, ლოგიკას. მე ამ დროს საერთოდ არ მესმოდა, ზუსტად რას წერდა.

და რაღაც მომენტში თავი დავიჭირე მარტივ აზრზე: თუ ეს ახლა ყველაფერი დაიშლება — უკან ვეღარ ავაწყობ.


და ამ მომენტში იწყება უსიამოვნო შეგრძნება.

შენ უკვე ძალიან შორს ხარ წასული, რომ გაჩერდე.

მაგრამ ამავდროულად საერთოდ არ აკონტროლებ, რა ხდება შიგნით.

ვერ იგებ კოდს. ვერ იგებ არქიტექტურას. ვერ იგებ, რა ზუსტად აკავებს სისტემას.

და ერთადერთი, რაც გაქვს — ეს არის შეგრძნება, რომ ჯერ კიდევ არ დაშლილა.

და სწორედ ამ შეგრძნებაზე შენ აგრძელებ შემდგომ წინსვლას.


სადღაც მეათე დღისთვის შესამჩნევი გახდა, რომ თავდაპირველი გეგმიდან გადახვევას ვიწყებდი. მომიწია უკან „პროექტის ცოდნაში" ჩაძრომა და მისი შესწორება, რომ ნაკლები ეჰალუცინირა.


და სწორედ ამ მომენტში შევეჯახე კონტექსტის შეკუმშვას. როცა სესია იზრდება, Claude Code ისტორიას კუმშავს — მას მოკლე რეზიუმედ ხდის, ადგილის გასათავისუფლებლად. და ამ რეზიუმეში ის ილექება, რაც შენ არ გჭირდება. ასეთი შეკუმშვის შემდეგ ის შეიძლებოდა საერთოდ სხვა მხარეს წაეღო. მაშინ ჯერ კიდევ არ მესმოდა, როგორ გავეკონტროლებინა ეს.


ასე გავიდა 30 დღე.

ფაქტობრივად, მთელი პროექტი იყო დაწერილი — frontend, backend, ლოგიკა. რა იყო შიგნით — წარმოდგენაც კი არ მქონდა.


შემდეგ ყველაფერი მარტივია: დომენი, სერვერი, deploy. მივეცი ბრძანება — გამოეტანა და გაეშვა.

და გაეშვა.


დავინახე საიტი, რომელიც ძალიან ჰგავდა ორიგინალს. შევუერთე ორიგინალური მონაცემთა ბაზა და ვიშოვე შესაძლებლობა ეს ყველაფერი რეალურ კლიენტებზე გამეგზავნა, ჯერ ტრაფიკის გადატანის გარეშე.

და სწორედ აქ დაიწყო რეალობა.

თითქმის არაფერი მუშაობდა. მაგრამ საიტი იყო.


წავედი ჯაჭვით: რეგისტრაცია, შეკვეთა, სტატუსები, ლოგიკა. დავიწყე გაგება, რა აკლდა: დისპეჩერული, ინტერფეისი მძღოლებისთვის. ცალკე მობილური აპლიკაციები არ მინდოდა მეწერა, ამიტომ ყველაფერი Telegram mini apps-ით გავაკეთე — იქ ის ნორმალურად მართავდა.


შემდეგ — ბაგები. ბევრი. ძალიან ბევრი.

შენ უბრალოდ აღწერ, რა არ მუშაობს, აჩვენებ, როგორ უნდა იყოს, და ის ასწორებს. ხანდახან ხვდება, ხანდახან კიდევ უფრო ამტვრევს. კლასიკა — სამი რამე გაასწორა, მეოთხე ყველაფერს უკან ამტვრევს.

მაგრამ თანდათან ჩანს, რომ ბაგები ნაკლდება.


შემდეგ ჩნდება გათამამება — იწყებ feature-ების დამატებას: პრომოკოდები, ფასდაკლებები, რეფერალები. და რაღაც მომენტში გეჩვენება, რომ ის მუშაობს.


ეძახი ადამიანს. ის შემოდის. რეგისტრირდება. აკეთებს შეკვეთას.

და ჯაჭვი გადის: შეკვეთა შექმნილია, დისპეჩერმა მიიღო, მძღოლმა მიიტანა, ყველაფერი დაფიქსირდა სისტემაში.

და შენ ზიხარ და არ გჯერა.


შემდეგ — გადასვლა.

დომენი ჩემს სერვერზე გადავიტანე და მონაცემთა ბაზა დავასინქრონე, რომ ძველ მომხმარებლებს გადასვლა საერთოდ ვერ შეემჩნიათ.

პირველი შეკვეთა ათ წუთში მოვიდა. შემდეგ მეორე. ორივე ნორმალურად გაიარა.

ეს მდგომარეობის აღწერა რთულია.


ამის შემდეგ დაიწყო ნამდვილი production.

ბაგებს არავინ წერდა. ყველა უბრალოდ რეკავდა და ყვიროდა. უკან გადასვლა უნდოდათ. მე, თუ გულახდილად, ერთი იყო. უბრალოდ ვიღებდი პრობლემებს პრიორიტეტით და ვასწორებდი.


ჩემი ამხანაგის პატივსაცემად — მან არცერთხელ არ დააწვა. უბრალოდ ელოდა.

ხოლო როცა შესთავაზეს უკან დაბრუნება, მან ძალიან მარტივად უპასუხა: გადაიხადეთ ორმოცდაათი პროექტისთვის და თვეში ხუთი — და დავბრუნდებით.

ამაზე საუბარი დასრულდა.


და სწორედ ამ მომენტში საბოლოოდ გახდა ნათელი:

ეს საერთოდ არც კოდზეა. არც ნეირონებზე.

ეს შესაძლებლობაზეა — აიღო ქაოსი და მიიყვანო მომუშავე სისტემამდე იმ მომენტამდე, როცა ის დაიშლება.

პროექტის სრული stack. Pharmacy Delivery.

არ ვიცოდი, რა ზუსტად დავწერე.

გაშვებიდან რამდენიმე კვირაში ჩემთან ჩემი ქალიშვილი ჩამოფრინდა. წავედით სასეირნოდ, მან ჩემზე რაღაც თქვა, და ერთი ბიჭი — IT-ისტი — გამომყვა მოსაწევად.

დაიწყო კითხვა:

— რაზე წერ? — რა stack? — როგორ არის მოწყობილი?

გულახდილად ვუთხარი: არ ვიცი.

ამოვიღე ტელეფონი. ვკითხე Claude Code-ს — საერთოდ რაზე ვწერ?

პასუხმა გამაჩერა.

რამდენიმე დღეს ვკითხულობდი თავიდან. შემდეგ მთელი პროექტი NotebookLM-ში ჩავტვირთე და დავიწყე გარკვევა, რა საერთოდ ავაწყვე.

ქვემოთ — ის, რაც მან გამცა.

Backend NestJS 10 · TypeORM · PostgreSQL 16 · Redis 7 Auth: JWT + Passport + bcrypt WebSocket: Socket.IO + Redis adapter ვალიდაცია, rate limiting, cron, Swagger

33 მოდული · 35 entity · ~150 endpoint

ინტეგრაციები Email — Brevo SMS — საკუთარი Android-gateway WhatsApp — multi-node gateway Push — Pushover Crypto — BTC, ETH, USDT, USDC, TRC-20

Frontend ვიტრინა — Next.js 14, SSR, en/ru/es ️ ადმინკა — React 18 + Zustand Mini apps (დისპეჩერი, მძღოლი, გაყიდვები) — React 19

Telegram-ბოტები — 3 ცალი Python 3.12 · aiogram · asyncpg · Redis

ინფრასტრუქტურა Docker multi-stage · GitHub Actions CI/CD · GHCR nginx (SSL, WebSocket, gzip) · Cloudflare 10+ სერვისი docker-compose-ში

ეს მე არ „ავირჩიე". ეს მე არ „დავაპროექტე". ამ სიტყვების ნახევარიც კი არ ვიცოდი.

უბრალოდ ამოცანას ვხსნიდი.

და მხოლოდ შემდეგ მივხვდი: ავაწყვე სისტემა, რომელსაც ჩვეულებრივ რამდენიმე ადამიანის გუნდი აკეთებს.

ეს არ ნიშნავს, რომ ახლა შეიძლება არაფერი გესმოდეს.

ეს სხვა რამეს ნიშნავს:

შესასვლელი უკვე იქ აღარ არის, სადაც ადრე ხატავდნენ.

თუ ადრე ჯერ stack-ის სწავლა იყო საჭირო, შემდეგ რაიმეს კეთება —

ახლა შეგიძლია ჯერ გააკეთო,

შემდეგ კი გაერკვიო, რა ზუსტად გააკეთე.

როგორ დავიწყე მიწოდების სისტემის წერა · hiregora.com