EmDash არის Cloudflare-ის მიერ გამოშვებული ღია კოდის CMS — TypeScript-ზე, Astro-ზე და Cloudflare-ის edge-ინფრასტრუქტურაზე. ის წელს გამოვიდა და მაშინვე დაიწყო საუბარი იმაზე, მართლა შეუძლია თუ არა WordPress-ს კონკურენცია. ჩვენ გადავწყვიტეთ, არა თეორიულად გვესაუბრა, არამედ აგვეშენებინა — და ამ სტატიაში ვყვებით, რა გამოგვივიდა.
ორ დღეში ავაშენეთ: სრულფასოვანი ბლოგი იერარქიული კატეგორიებით, თეგებით, ავტორების პროფილებითა და სერიებით; მაღაზია პროდუქტებით, დანამატებით და შეკვეთებით; PWA ვერსია offline რეჟიმით; და ორენოვანი (ქართული/ინგლისური) საიტი ქართული ადმინ-პანელით. ყველაფერი, რასაც ამ სტატიაში ნახავთ, ერთი აგენტის მიერ შეიქმნა — EmDash-ის ჩაშენებული MCP-სერვერის საშუალებით.
რატომ EmDash და არა WordPress
WordPress დღეს ინტერნეტის დიდ ნაწილს ამოძრავებს და ეს შთამბეჭდავია. მაგრამ ჩვენთვის, როგორც სააგენტოსთვის, მთავარი კითხვა სხვაა: რა ღირს საიტის ყოლა — არა მისი აშენება, არამედ ყოველდღიური მოვლა?
WordPress-ს სჭირდება PHP სერვერი, ბაზა, ქეშის შრე, უსაფრთხოების დაპატჩვა, ბექაპები და იმ ათეულობით პლაგინის განახლება, რომლებსაც ხანდახან არავინ ამოწმებს. EmDash-ს ეს ყველაფერი არ სჭირდება: კონტენტი D1 ბაზაშია, ფაილები R2-ში, გვერდები კი Cloudflare-ის 300-ზე მეტი data-ცენტრიდან მუშავდება. სერვერის განახლებაზე, ტრაფიკის ზრდაზე და DDoS-ზე ფიქრი აღარ გიწევს — ეს Cloudflare-ის პრობლემაა, არა შენი.
უფრო დეტალურად ამ ორი სისტემის შედარება ცალკე სტატიაში დავწერეთ — EmDash vs WordPress. ამჯერად იმაზე ვისაუბრებთ, რაც მუშაობის პროცესში ვნახეთ.
რა ავაშენეთ — კონკრეტული რიცხვებით
ბლოგი
- 12 თემატური სტატია ორ ენაზე — სულ 24 ჩანაწერი, თითოეული ცალკე რევიზიებით
- 7 კატეგორია იერარქიით — მაგალითად, „ინჟინერიის“ შიგნით ჩადგმული „Cloudflare“
- 14 თეგი, 3 ავტორის პროფილი (byline) ავატარით და ბიოგრაფიით
- სერიები — სტატიების დაჯგუფება თემატურ ციკლებად, ნაწილების ავტომატური ნავიგაციით
- ძებნა, კატეგორიის/თეგის/სერიის არქივები, პაგინაცია, RSS, წინა/შემდეგი სტატია
- დაკავშირებული სტატიები თეგების მიხედვით — ავტომატურად, ხელით შერჩევის გარეშე
მაღაზია — გადახდების გარეშე, მაგრამ ნამდვილი ლოგიკით
- 12 პროდუქტი: მაისურები, ჰუდები, კეპი, ჩანთები, სტიკერები, ჭიქები, მაგნიტები
- ჩაშლილი კატეგორიები: ტანსაცმელი → მაისურები / ჰუდები; აქსესუარები → ქუდები / ჩანთები / სტიკერები
- დანამატები პროდუქტზე — გრავირება, საჩუქრის შეფუთვა, სტიკერების პაკი („სოუსიც მინდა“ პრინციპი)
- კალათა ბრაუზერში (localStorage), რაოდენობის ცვლა, უფასო მიწოდება 100₾-ზე მეტისას
- შეკვეთის ფორმა, რომელიც შეკვეთას პირდაპირ ადმინ-პანელში აგდებს — Orders კოლექციაში
- მარაგის მართვა, ძველი ფასი და ფასდაკლების ბეჯი, „მარაგში არ არის“ მდგომარეობა
PWA და ტექნიკური დეტალები
- favicon-ის სრული ნაკრები, app-იკონები, manifest და service worker
- offline გვერდი — ინტერნეტის გარეშეც იხსნება
- ქართული ადმინ-პანელი (ეს ჩვენი წვლილია EmDash-ში — ქართული ლოკალი უკვე დამერჯილია მათ რეპოში)
MCP — „ჩუმი გმირი“, რომლის გამოც EmDash განსხვავდება
MCP (Model Context Protocol) არის პროტოკოლი, რომლითაც AI-აგენტები გარე სისტემებს უკავშირდებიან. EmDash-ს ჩაშენებული MCP-სერვერი აქვს — ეს CMS-ების სამყაროში იშვიათობაა. საიტს აქვს საკუთარი MCP მისამართი, და ავტორიზაცია ხდება API ტოკენით (თქვენს პანელში იქმნება, პრეფიქსი ec_pat_).
ჩვენს ინსტანციაზე 59 ხელსაწყო აქტიურია, დაჯგუფებული ასე: კონტენტი (შექმნა/რედაქტირება/გამოქვეყნება/განრიგება/თარგმანები), სქემა (კოლექციები და ველები), ტაქსონომიები და ტერმინები, მედია-ბიბლიოთეკა, მენიუები, ავტორები, რევიზიები, ძებნა და პარამეტრები.
რა გავაკეთეთ ამით პრაქტიკაში? მთელი ბლოგის სქემა — კოლექციები, ველები, იერარქიული ტაქსონომიები, ავტორები — აგენტმა MCP-ით შექმნა. შემდეგ 24 სტატია, 12 პროდუქტი, 4 დანამატი, კატეგორიები და თეგები, მედია-სურათები, მენიუს პუნქტები — ყველაფერი MCP-ის გამოძახებებით, პანელში ერთი კლიკის გარეშე. ეს არის სხვაობა „CMS-ს“ და „ავტომატიზებად CMS-ს“ შორის.
რას ნიშნავს ეს ბიზნესისთვის? სამი რამ: (1) მიგრაცია სხვა CMS-იდან შეიძლება სრულად ავტომატიზდეს; (2) კონტენტის მასობრივი განახლება — ფასების ცვლილება, თარგმნა, ბეჯების განახლება — სკრიპტით კეთდება, არა ხელით; (3) AI-აგენტს შეუძლია საიტის მართვა ისე, როგორც ადამიანი რედაქტორი — მაგრამ ბევრად სწრაფად.
ჩვენთვის MCP აღმოჩნდა არა „კიდევ ერთი ფიჩერი“, არამედ მთავარი მიზეზი, რატომ ავირჩიეთ EmDash პროექტებისთვის.
არქიტექტურა: როგორ არის ეს ყველაფერი აწყობილი
EmDash მუშაობს Astro-ზე — თანამედროვე framework-ზე, რომელიც გვერდებს სერვერზე აგებს და ბრაუზერში მინიმუმ JavaScript-ს აგზავნის. ამიტომ საიტი სწრაფია: ჩვენი გვერდები Lighthouse-ზე 100/100 ქულას იღებს.
- კოლექციები — ნებისმიერი შინაარსის ტიპი (სტატიები, პროდუქტები, შეკვეთები) თქვენივე ველებით: ტექსტი, რიცხვი, თარიღი, ფაილი, ჩამონათვალი, კავშირი სხვა კოლექციაზე
- Portable Text — ტექსტი, რომელიც სტრუქტურირებულ ბლოკებად ინახება; შეგიძლიათ საკუთარი ბლოკებიც დაამატოთ (ჩვენ დავამატეთ სტატისტიკის, ჩვენების და CTA ბლოკები)
- ტაქსონომიები — კატეგორიები, თეგები, ნებისმიერი სხვა კლასიფიკაცია; იერარქია მხარდაჭერილია
- ენები — თითოეულ ჩანაწერს აქვს ლოკალი და „თარგმანის ჯგუფი“, რომელიც ქართულ და ინგლისურ ვერსიებს აკავშირებს; hreflang და ენის გადამრთველი ავტომატურად მუშაობს
- დრაფტები და რევიზიები — ყოველი შენახვა ისტორიაში რჩება; შეგიძლიათ ძველ ვერსიას დაუბრუნდეთ
- როლები — ადმინი, რედაქტორი, ავტორი; ვინ რას ხედავს, პანელიდან იმართება
- მედია — სურათები R2-ში, ავტომატური ოპტიმიზაცია, blurhash placeholder-ები (სურათი ჩატვირთვამდე ბუნდოვანი ჩანახატი ჩანს)
- API — REST API ყველაფრისთვის, რასაც პანელი აკეთებს; MCP სწორედ ამაზეა აწყობილი
მთავარი არქიტექტურული ბონუსი ისაა, რომ საიტი და პანელი ერთი პროექტია. ცალკე „backend“ არ არსებობს — კოდი და კონტენტი ერთად ცხოვრობს, დეპლოი კი ერთი ბრძანებაა.
უფასო გეგმის რეალობა — სად ტყდება
ეს ყველაზე პრაქტიკული ნაწილია და აქ ციფრები გვჭირდება. Cloudflare-ის უფასო გეგმა ასე გამოიყურება:
- 100 000 მოთხოვნა დღეში — ჩვენ ვხარჯავთ ~10 000-ს (ლიმიტის 10%), ანუ აქ პრობლემა არ არის
- 10 მილიწამი CPU დრო ერთ გამოძახებაზე — აი, აქ იწყება საინტერესო
- D1 ბაზა: 5 მილიონი წაკითხვა და 100 000 ჩაწერა დღეში, 5 GB მოცულობა
- R2 საცავი: 10 GB ფაილები, ტრაფიკი უფასო
პრობლემა აი რაშია: ჩვეულებრივი ვიზიტორისთვის საიტი მშვენივრად მუშაობს — გვერდები მილიწამებში იტვირთება. მაგრამ ადმინ-პანელის API გაცილებით „მძიმეა“ — ერთი გამოძახება ბევრ ბაზის ოპერაციას აკეთებს, და 10 მილიწამი ამისთვის ზღვარზეა.
როცა 24 სტატიას, 12 პროდუქტს და ათეულობით სურათს ვქმნიდით — ასეულობით პარალელური მოთხოვნა, ყოველი დეპლოის შემდეგ ცივი გაშვებით — პანელის API-მ და MCP-მ ხანდახან 503 შეცდომა დააბრუნა: „Exceeded CPU Limit“ (კოდი 1102). საიტი მუშაობდა, პანელი კი — არა.
რა ვქენით? მონაცემები პირდაპირ ბაზაში ჩავწერეთ, ზუსტად იმ ფორმით, როგორც EmDash წერს (ჩანაწერი + რევიზია + ტაქსონომიის კავშირები). გამოვიდა, მაგრამ ეს ნორმალური სამუშაო გზა არ არის — ჩვენ უნდა ვმართოთ კონტენტი პანელიდან, არა SQL-ით.
დასკვნა: ბლოგისთვის, პატარა საიტისთვის და ვიზიტორებისთვის უფასო გეგმა სრულად საკმარისია. მაგრამ თუ პანელით აქტიურად მუშაობთ (ან აგენტს ამუშავებთ, როგორც ჩვენ), $5-იანი Workers Paid გეგმა პრაქტიკულად სავალდებულოა — CPU-ს ლიმიტი 10 მილიწამიდან 30 წამამდე იზრდება და პრობლემა სამუდამოდ ქრება.
ძლიერი მხარეები — რაც ნამდვილად მოგვეწონა
- ნულოვანი მოვლა — არავითარი სერვერი, PHP, პლაგინების განახლება და უსაფრთხოების დაპატჩვა
- MCP + სრული API — ავტომატიზაცია და AI-აგენტური მართვა „ყუთიდანვე“
- სისწრაფე — Cloudflare-ის edge, 100/100 Lighthouse, DDoS-ის დაცვა და SSL უფასოდ
- მრავალენოვნება ჩაშენებული — არა პლაგინი, არამედ სისტემის ნაწილი (ჩვენთვის 2 ენა, შესაძლებელია მეტი)
- სტრუქტურირებული კონტენტი — კოლექციები და ტაქსონომიები იძლევა იმას, რასაც WordPress-ში ათი პლაგინით აწყობ (და ნახევარს ვერ აწყობ)
- რევიზიები, დრაფტები, როლები — რედაქციული პროცესი პანელში
- ღია კოდი (MIT) — შეგიძლიათ საკუთარ სერვერზე გაუშვათ Postgres-ით, Cloudflare-ის გარეშეც
- ფასი — ჩვენი საიტი 0₾-ად მუშაობს
სუსტი მხარეები — სად ვწვალეთ
- ახალგაზრდა პროექტია. 1.0 ვერსია ჯერ არ გამოსულა; დოკუმენტაცია ზოგან ჩამორჩება, Stack Overflow-ზე პასუხებს ვერ ნახავთ, მაგალითები ცოტაა. ბევრი რამ ცდისა და შეცდომის გზით უნდა ისწავლო.
- ადმინ-API-ს CPU მოხმარება უფასო გეგმის ზღვარზეა (ზემოთ დეტალურად).
- ეკოსისტემა პატარაა. WordPress-ის 60 000 პლაგინს და ათასობით თემას ვერ შეედრება — ბევრი რამ თავად უნდა ააწყო (მაგალითად, ჩვენი მაღაზია).
- Page builder არ არის. კონტენტი სტრუქტურირებული ბლოკებით იწერება, არა drag & drop-ით. მარკეტინგის გუნდისთვის, რომელიც Elementor-ს არის მიჩვეული, ეს ცვლილებაა.
- მაღაზია „ყუთიდან“ არ არსებობს. WooCommerce-ის ანალოგი არაა — შეკვეთები, კალათა და პროდუქტები შენით უნდა ააწყო (როგორც ჩვენ გავაკეთეთ).
- პატარა ხაფანგები: ზოგიერთი ველის სახელი დაცულია (
status), სქემის ცვლილება ორ ადგილას უნდა ჩაიწეროს (seed ფაილი + ცოცხალი ბაზა), ქართული ლოკალი ჯერ npm-ის ოფიციალურ რელიზში არ შესულა (ჩვენი PR დამერჯილია — რელიზს ველოდებით). - პლაგინების იზოლაცია (sandboxing) მხოლოდ გადახდილ გეგმაზე მუშაობს — ანუ უფასოზე მესამე მხარის პლაგინები ვერ გაუშვებ.
ვის უხდება და ვის — არა
კარგად უხდება: კომპანიებს, რომლებსაც დეველოპერი ჰყავთ (ან აგენტი, როგორც ჩვენთან); მრავალენოვან კონტენტ-საიტებს; ბლოგებს, დოკუმენტაციას, კატალოგებს; ვინც უკვე Cloudflare-ზეა; და მათ, ვისაც ავტომატიზაცია და AI-აგენტებით მართვა აინტერესებს.
ნაკლებად უხდება: მარკეტინგის გუნდს, რომელსაც drag & drop კონსტრუქტორი სჭირდება; საიტს, რომელიც WordPress-ის 20 პლაგინზეა დამოკიდებული; სრულ მაღაზიას მზა გადახდებითა და მიწოდების სისტემით (ამისთვის ცალკე სამუშაოა საჭირო).
ჩვენი აზრით, EmDash დღეს საუკეთესო არჩევანია მათთვის, ვინც ცდილობს ერთდროულად მიიღოს სისწრაფე, ნულოვანი ტექნიკური მოვლა და თანამედროვე ავტომატიზაცია — და ვისაც არ ეშინია, რომ ახალგაზრდა პროექტის პიონერი გახდეს.
რას ვაგრძელებთ
ჩვენთვის ეს ორი დღე არ ყოფილა „ტესტი“ — ეს იყო საკუთარი სერვისის აწყობა. ვთავაზობთ სამ რამეს: WordPress-იდან EmDash-ზე მიგრაციას (კონტენტის, მედიის და SEO-ს შენარჩუნებით), მართვად ჰოსტინგს (დომენი, SSL, ბექაპი, მონიტორინგი) და AI-კონტენტ-ავტოპილოტს — როცა საიტი თავად ავსებს კონტენტს, თქვენ კი მხოლოდ ამოწმებთ.
ეს საიტი, რომელზეც ახლა კითხულობთ, სწორედ ამ ტექნოლოგიაზეა აწყობილი — და ჩვენი ცოცხალი დემოცაა. თუ გაინტერესებს, მოგვწერეთ — ერთ სამუშაო დღეში კონკრეტულ შეთავაზებას მიიღებთ.



