ওয়েব অ্যাডমিন হলো একটি জানালা, সত্যের দ্বিতীয় উৎস নয়
APX ওয়েব অ্যাডমিন প্যানেল সিস্টেমের কেন্দ্রবিন্দু নয়।
এর ডিজাইন অত্যন্ত সুনির্দিষ্ট। স্টেট (state)-এর মালিক হলো ডেমোন (daemon)। ওয়েব UI হলো একটি লোকাল ক্লায়েন্ট। এই পার্থক্যটি অত্যন্ত গুরুত্বপূর্ণ। এটি নির্ধারণ করে যে সত্য বা মূল তথ্য কোথায় সংরক্ষিত থাকে এবং ডেটা কতটা বিচ্যুত হতে পারে।
APC প্রদান করে পোর্টেবল কনটেক্সট লেয়ার (portable context layer)। APX প্রদান করে রানটাইম এবং টুলিং লেয়ার (runtime and tooling layer)। ওয়েব অ্যাডমিন APX-এর অন্তর্ভুক্ত। এটি আপনাকে ব্রাউজারে রানটাইমটি পরিদর্শন করতে সাহায্য করে। এটি প্রজেক্টের মূল তথ্যের নিজস্ব কোনো কপি বা প্রতিলিপি রাখে না।
আর্কিটেকচারটি এভাবে কাজ করে:
- ডেমোন একটি লোকাল HTTP সার্ভার চালায়।
- প্রতিটি সারফেস (surface) HTTP-এর মাধ্যমে ডেমোনের সাথে যোগাযোগ করে।
- ডেমোন ওয়েব অ্যাডমিনটি সার্ভ করে।
- ব্রাউজার ডেমোন থেকে একটি টোকেন সংগ্রহ করে।
ব্রাউজার কোনো পিয়ার ডেটাবেস (peer database) নয়। এটি কেবল একটি সারফেস মাত্র। যখন একটি ওয়েব প্যানেল সত্যের দ্বিতীয় উৎস হয়ে দাঁড়ায়, তখন সেটি ব্যর্থ হয়।
স্টেটের দুটি কপি থাকলে ত্রুটি দেখা দেয়:
- CLI এক জিনিস লেখে কিন্তু UI অন্য কিছু দেখায়।
- একটি ব্রাউজার সেশন কনফিগ (config) এডিট করে কিন্তু ডেমোন পুরনো ডেটা ব্যবহার করে।
- রিলোড করলে একটি প্রজেক্ট দেখায় কিন্তু অন্য ট্যাবে পুরনো বা ভুল ডেটা (stale data) দেখায়।
- UI-তে করা কোনো সংশোধন কখনোই আসল রানটাইমে পৌঁছায় না।
APX ব্রাউজারকে 'থিন' (thin) বা হালকা রেখে এটি এড়িয়ে চলে। UI ডেমোনকে জিজ্ঞাসা করে। ডেমোন কোর (core)-কে জিজ্ঞাসা করে। কোর আসল ব্যাকিং স্টোর (backing store) থেকে ডেটা পড়ে বা লেখে। এই চেইনটি অত্যন্ত সহজ। আর সহজ হওয়া মানেই ভালো।
একটি ভালো লোকাল প্যানেল তিনটি কাজ করে:
- লাইভ স্টেট (live state) প্রদর্শন করা।
- একটি ছোট অ্যাকশন (action) পাঠানো।
- অ্যাকশনের পরে পুনরায় যাচাই (revalidate) করা।
প্যানেলটি আপনাকে প্রজেক্ট, এজেন্ট, রুটিন, সেশন, MCP এবং সেটিংস ব্রাউজ করতে দেয়। এটি সিস্টেমের একটি ভিউ (view) মাত্র, সিস্টেমের কোনো ফর্ক (fork) নয়।
ইমপ্লিমেন্টেশন ডিটেইলস এটিকে লোকাল রাখে:
- ডেভ মোড (Dev mode) Vite ব্যবহার করে এবং ডেমোনের কাছে প্রক্সি (proxy) করে।
- প্রোডাকশন মোডে ডেমোন থেকে বিল্ড করা অ্যাপটি সার্ভ করা হয়।
- 'সেম অরিজিন' (Same origin) অথেন্টিকেশন এবং রাউটিং সহজ রাখে।
- ব্রাউজারের কখনোই সরাসরি রিপোজিটরি রাইট অ্যাক্সেস (repo write access)-এর প্রয়োজন হয় না।
এর সুবিধা কেবল ভিজ্যুয়াল পলিশ (visual polish) বা বাহ্যিক চাকচিক্য নয়। এর আসল সুবিধা হলো প্রতিটি অ্যাকশন একটি মাত্র ব্যাকএন্ডের মাধ্যমে সম্পন্ন হয়।
আপনি যদি প্যানেলে কোনো সেটিংস এডিট করেন, প্যানেলটি সেই পরিবর্তন ডেমোনে জমা দেয়। ডেমোন প্রজেক্ট স্টোর আপডেট করে। পরবর্তী রেন্ডারটি ঠিক সেই একই সোর্স অফ ট্রুথ (source of truth) থেকে ডেটা পড়ে যা CLI পড়ে। একটি সিস্টেম, অনেকগুলো সারফেস।
আপনার প্রজেক্টের কোনো ক্ষতি না করেই UI অদৃশ্য হয়ে যেতে পারে। আপনি ট্যাবটি বন্ধ করতে পারেন বা মেশিন পরিবর্তন করতে পারেন। স্টেট ডেমোন এবং .apc/ ফোল্ডারে সংরক্ষিত থাকে।
মেন্টাল মডেলটি সহজ:
- APC: প্রজেক্টটি আসলে কী।
- APX: প্রজেক্টটি কীভাবে চলে।
- ওয়েব অ্যাডমিন: সেই রানটাইমের একটি জানালা।
এই সীমানাটি পরিষ্কার রাখুন। এতে স্ট্যাকটি পরিবর্তনযোগ্য থাকে। ব্রাউজারটি ঐচ্ছিক থাকে। ডেমোনটি কর্তৃত্বপূর্ণ (authoritative) থাকে। প্রজেক্টটি পোর্টেবল থাকে।
Source: https://dev.to/agentprojectcontext/the-web-admin-is-a-window-not-a-second-source-of-truth-2aip
Optional learning community: https://t.me/GyaanSetuAi