വെബ് അഡ്മിൻ ഒരു വിൻഡോ മാത്രമാണ്, സത്യത്തിന്റെ രണ്ടാമതൊരു സ്രോതസ്സല്ല

APX വെബ് അഡ്മിൻ പാനൽ സിസ്റ്റത്തിന്റെ കേന്ദ്രമല്ല.

ഇതിന്റെ ഡിസൈൻ വളരെ കർശനമാണ്. ഡെമൺ (daemon) ആണ് സ്റ്റേറ്റ് (state) നിയന്ത്രിക്കുന്നത്. വെബ് UI എന്നത് ഒരു ലോക്കൽ ക്ലയന്റ് മാത്രമാണ്. ഈ വ്യത്യാസം വളരെ പ്രധാനമാണ്. സത്യം (truth) എവിടെ നിലനിൽക്കുന്നുവെന്നും ഡാറ്റയിൽ എത്രത്തോളം വ്യത്യാസം വരാമെന്നും ഇത് തീരുമാനിക്കുന്നു.

APC പോർട്ടബിൾ ആയ കോൺടെക്സ്റ്റ് ലെയർ (context layer) നൽകുന്നു. APX റൺടൈം (runtime), ടൂളിംഗ് ലെയർ (tooling layer) എന്നിവ നൽകുന്നു. വെബ് അഡ്മിൻ APX-ന്റെ ഭാഗമാണ്. ബ്രൗസറിൽ റൺടൈം പരിശോധിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. പ്രോജക്റ്റിന്റെ യഥാർത്ഥ വിവരങ്ങളുടെ (project truth) സ്വന്തമായി ഒരു കോപ്പി ഇത് സൂക്ഷിക്കുന്നില്ല.

അതിനെതിരെയുള്ള ഘടന ഇപ്രകാരമാണ്:

  • ഡെമൺ ഒരു ലോക്കൽ HTTP സെർവർ പ്രവർത്തിപ്പിക്കുന്നു.
  • എല്ലാ സർഫസുകളും (surfaces) HTTP വഴി ഡെമണുമായി ആശയവിനിമയം നടത്തുന്നു.
  • ഡെമൺ ആണ് വെബ് അഡ്മിൻ നൽകുന്നത്.
  • ബ്രൗസർ ഡെമണിൽ നിന്ന് ഒരു ടോക്കൺ എടുക്കുന്നു.

ബ്രൗസർ ഒരു പിയർ ഡാറ്റാബേസ് (peer database) അല്ല. അത് വെറുമൊരു സർഫസ് മാത്രമാണ്. ഒരു വെബ് പാനൽ സത്യത്തിന്റെ രണ്ടാമതൊരു സ്രോതസ്സായി മാറുമ്പോൾ, അത് പരാജയപ്പെടുന്നു.

സ്റ്റേറ്റിന്റെ രണ്ട് കോപ്പികൾ ഉണ്ടാവുന്നത് പിശകുകൾക്ക് കാരണമാകും:

  • UI മറ്റൊന്ന് കാണിക്കുമ്പോൾ CLI മറ്റൊന്ന് എഴുതുന്നു.
  • ഒരു ബ്രൗസർ സെഷൻ ഒരു കോൺഫിഗറേഷൻ എഡിറ്റ് ചെയ്യുന്നു, എന്നാൽ ഡെമൺ പഴയ ഡാറ്റ തന്നെ ഉപയോഗിക്കുന്നു.
  • ഒരു റീലോഡ് ചെയ്യുമ്പോൾ ഒരു പ്രോജക്റ്റ് കാണിക്കുന്നു, എന്നാൽ മറ്റൊരു ടാബിൽ പഴയ (stale) ഡാറ്റ കാണിക്കുന്നു.
  • ഒരു UI പരിഹാരം യഥാർത്ഥ റൺടൈമിൽ ഒരിക്കലും എത്തുന്നില്ല.

ബ്രൗസറിനെ ലളിതമായി (thin) നിലനിർത്തുന്നതിലൂടെ APX ഇത് ഒഴിവാക്കുന്നു. UI ഡെമണോട് ചോദിക്കുന്നു. ഡെമൺ കോറിനോട് (core) ചോദിക്കുന്നു. കോർ യഥാർത്ഥ ബാക്കിംഗ് സ്റ്റോറിൽ (backing store) വിവരങ്ങൾ വായിക്കുകയോ എഴുതുകയോ ചെയ്യുന്നു. ഈ ശൃംഖല ലളിതമാണ്. ലളിതമാണ് നല്ലത്.

ഒരു നല്ല ലോക്കൽ പാനൽ മൂന്ന് കാര്യങ്ങൾ ചെയ്യുന്നു:

  • ലൈവ് സ്റ്റേറ്റ് കാണിക്കുന്നു.
  • ചെറിയൊരു ആക്ഷൻ അയക്കുന്നു.
  • ആക്ഷന് ശേഷം വീണ്ടും പരിശോധിക്കുന്നു (revalidate).

പ്രോജക്റ്റുകൾ, ഏജന്റുകൾ, റൂട്ടീനുകൾ, സെഷനുകൾ, MCP-കൾ, സെറ്റിംഗുകൾ എന്നിവ ബ്രൗസ് ചെയ്യാൻ ഈ പാനൽ നിങ്ങളെ അനുവദിക്കുന്നു. ഇത് സിസ്റ്റത്തിന്റെ ഒരു കാഴ്ച (view) മാത്രമാണ്, സിസ്റ്റത്തിന്റെ ഒരു ഫോർക്ക് (fork) അല്ല.

ഇതിന്റെ പ്രവർത്തന രീതികൾ (Implementation details) ഇത് ലോക്കലായി നിലനിർത്തുന്നു:

  • ഡെവ് മോഡ് Vite ഉപയോഗിക്കുകയും ഡെമണിലേക്ക് പ്രോക്സി ചെയ്യുകയും ചെയ്യുന്നു.
  • പ്രൊഡക്ഷൻ ബിൽഡ് ചെയ്ത ആപ്പ് ഡെമണിൽ നിന്ന് നൽകുന്നു.
  • സേം ഒറിജിൻ (Same origin) ഓതന്റേഷനും റൂട്ടിംഗും ലളിതമാക്കുന്നു.
  • ബ്രൗസറിന് ഒരിക്കലും റിപ്പോസിറ്ററിയിൽ നേരിട്ട് എഴുതാനുള്ള അനുമതി (direct repo write access) ആവശ്യമില്ല.

ഇതിന്റെ ഗുണം കാഴ്ചയിലെ മിനുക്കുപണികളല്ല (visual polish). എല്ലാ ആക്ഷനുകളും ഒരൊറ്റ ബാക്കെൻഡ് (backend) വഴി നടക്കുന്നു എന്നതാണ് ഇതിന്റെ ഗുണം.

നിങ്ങൾ പാനലിൽ ഒരു സെറ്റിംഗ് എഡിറ്റ് ചെയ്താൽ, പാനൽ ആ മാറ്റം ഡെമണിലേക്ക് സമർപ്പിക്കുന്നു. ഡെമൺ പ്രോജക്റ്റ് സ്റ്റോർ അപ്‌ഡേറ്റ് ചെയ്യുന്നു. അടുത്ത തവണ റെൻഡർ ചെയ്യുമ്പോൾ CLI വായിക്കുന്ന അതേ സ്രോതസ്സിൽ നിന്നാണ് വിവരങ്ങൾ ലഭിക്കുന്നത്. ഒരൊറ്റ സിസ്റ്റം, പല സർഫസുകൾ.

നിങ്ങളുടെ പ്രോജക്റ്റിനെ ദോഷകരമായി ബാധിക്കാതെ തന്നെ UI ഇല്ലാതാകാം. നിങ്ങൾക്ക് ടാബ് അടയ്ക്കാം അല്ലെങ്കിൽ മെഷീനുകൾ മാറ്റാം. സ്റ്റേറ്റ് ഡെമണിലും .apc/ ഫോൾഡറിലും തന്നെ നിലനിൽക്കും.

ഇതിന്റെ അടിസ്ഥാന മാതൃക (mental model) ലളിതമാണ്:

  • APC: പ്രോജക്റ്റ് എന്താണെന്ന് സൂചിപ്പിക്കുന്നു.
  • APX: പ്രോജക്റ്റ് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് സൂചിപ്പിക്കുന്നു.
  • വെബ് അഡ്മിൻ: ആ റൺടൈമിലേക്കുള്ള ഒരു വിൻഡോ.

ഈ അതിർവരമ്പുകൾ കൃത്യമായി നിലനിർത്തുക. സ്റ്റാക്ക് (stack) എപ്പോൾ വേണമെങ്കിലും മാറ്റാൻ സാധിക്കും. ബ്രൗസർ നിർബന്ധമല്ല. ഡെമൺ ആണ് പരമാധികാരി (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