اگر ساعتها وقت خود را صرف تنظیم دستی Dockerfileها، کلاینتهای API یا مدیریت متغیرهای محیطی و اسرار پایگاهداده میکنید، باید بدانید که اکنون یک دستور ساده میتواند کل یک اکوسیستم کامل و آماده برای AI را ایجاد کند. در ۷ جولای ۲۰۲۶، Nstack معرفی شد تا فرآیند پرهرجومرج ابداع ساختار پروژه برای هر اپلیکیشن جدید را با یک «شکل» (Shape) صلب و دقیقاً تعریفشده جایگزین کند؛ ساختاری که هم انسانها و هم عاملهای هوش مصنوعی میتوانند فوراً آن را پیمایش کنند.
توسعه مدرن فولاستک به کابوسی از زیرساختهای پراکنده تبدیل شده است. یک پروژه معمولی نیازمند توازن میان بکاند، فرانتاند، کلاینتهای API تولیدشده، Dockerfileها، اسرار (Secrets)، محیطها، پایگاهدادهها، سیستمهای کش، ذخیرهسازی اشیاء (Object Storage)، کرونجابها، مقصدهای استقرار، لاگها، نسخههای پشتیبان، بازگشت به نسخههای قبلی (Rollbacks) و عاملهای AI است که در حال ویرایش مخزن کد هستند. برای کسانی که با عاملهای کدنویسی AI کار میکنند، نبود این استانداردسازی اصلیترین نقطه اصطکاک است؛ چراکه عاملها وقتی هر مخزن کد از منطق داخلی متفاوتی پیروی میکند، به شدت دچار سردرگمی میشوند.
فلسفه استک محدود (The Narrow Stack)
همانطور که در تحلیلهای قبلی ما دربارهی استانداردسازی محیطهای توسعه اشاره کردیم، کاهش پیچیدگی تنها راه افزایش بهرهوری در مقیاس است. طبق گزارش dev.to، Nstack این مشکل را با اتخاذ یک رویکرد «سختگیرانه» (Opinionated) حل میکند. این ابزار سعی نمیکند از هر ترکیبی از فریمورکهای ممکن پشتیبانی کند. هدف این است که یک مسیر واحد فولاستک را به اندازه کافی عمیق کند تا ابزارها واقعاً مفید باشند. Nstack یک استک خاص را تحمیل میکند: Encore.ts برای بکاند، Nuxt برای فرانتاند و Dokploy برای استقرار، که همگی در یک فضای کاری pnpm پیوند خوردهاند.
این ابزارهای خاص به این دلیل انتخاب شدهاند که پیشاپیش تصمیمات ساختاری قوی گرفتهاند. Encore باعث میشود APIها و منابع بکاند در نزدیکی کد باقی بمانند. Nuxt به فرانتاند یک ساختار اپلیکیشن شفاف همراه با پشتیبانی از SSR، روتینگ و یک سرور تولیدی کاربردی میدهد. Dokploy نیز یک مقصد استقرار عینی برای سرویسها، دامنهها، لاگها، منابع، زمانبندیها و اپلیکیشنهای Compose روی سروری فراهم میکند که کاربر بهطور کامل بر آن کنترل دارد.
معماری یکپارچه
وقتی یک اپلیکیشن تولید میشود، از یک نقشه دایرکتوری سختگیرانه پیروی میکند:
backend/api/: شامل فایلهایstatus.ts،db.ts،gateway.tsوencore.appاست.frontend/app/pages/: شامل صفحات (مانندindex.vue) است.frontend/app/utils/api.ts: کلاینت تایپاسکریپت تولید شده است.deploy/nstack/: خروجیهای تولید شده برای استقرار است.- فایلهای
nstack.config.mjsوpnpm-workspace.yamlدر ریشه پروژه قرار دارند.
ارزش اصلی این سیستم در نحوه نگاشت کد به زیرساخت است. وقتی توسعهدهنده یک منبع ماندگار (Durable Resource) در کد بکاند تعریف میکند، Nstack متادیتا را میخواند تا وضعیت استقرار در Dokploy را آماده کند:
- پایگاهداده Encore SQL $ \rightarrow $ Dokploy Postgres
- کش Encore $ \rightarrow $ Dragonfly
- Pub/Sub Encore $ \rightarrow $ NSQ
- باکت اشیاء Encore $ \rightarrow $ RustFS
- متادیتای Cron Encore $ \rightarrow $ زمانبندیهای Dokploy
- اسرار Encore $ \rightarrow $ مقادیر محیطی مخصوص هر مقصد (Target)

این نگاشتها در قالب مصنوعات (Artifacts) خاصی در مسیر deploy/nstack/ رندر میشوند، بهویژه در فایلهای encore.infra.json و compose.dokploy.yaml. هر بار که CLI اجرا شود، تغییرات اعمال شده در اپلیکیشن یا فایل nstack.config.mjs در این فایلها منعکس میگردد.
هدایت پروژه برای AI-Native
برخلاف فریمورکهای سنتی، Nstack مستندات اختصاصی را دقیقاً برای مدلهای زبانی بزرگ (LLM) تولید میکند. هر اپلیکیشن شامل فایلهای AGENTS.md و NSTACK_GUIDELINES.md است. این فایلها مانند یک نقشه برای عاملهای کدنویس عمل کرده و نقشه پروژه، فایلهای تولید شده، کلاینت API فرانتاند، قوانین منابع و دستورات بازیابی را توضیح میدهند. این رویکرد تکمیلی بر قابلیتهایی نظیر اتوماسیون کدنویسی چندمرحلهای با Grok Build است که هدف آن کاهش خطای انسانی در زنجیره تولید کد است.
برای جلوگیری از باقیماندن پردازشهای زائد (Zombie Processes) روی سرور توسط عاملهای AI، Nstack دستور devexec را معرفی کرده است. این دستور یک استک موقت را اجرا میکند، یک اسکریپت واحد را میراند و بلافاصله خارج میشود. برای مثال، یک عامل میتواند یک روت بکاند را با دستور nstack devexec 'await apiJson("/status")' تأیید کند، یا یک اسکرینشات از فرانتاند در اندازه موبایل با دستور nstack devexec 'return await screenshot("/", { width: 390, height: 844 })' بگیرد.
در زیرمجموعه هارنسهای کدنویسی AI، دستور nstack dev بهطور پیشفرض از شروع یک سرور توسعه طولانیمدت خودداری میکند تا عاملها مجبور شوند از گردشکار تکرارپذیر و بدون وضعیت (Stateless) devexec استفاده کنند، در حالی که انسانها همچنان از سرور توسعه معمولی استفاده میکنند.
عملیات سادهشده و تجربه توسعه (DX)
توسعه محلی از طریق یک سطح دستور کوتاه مدیریت میشود. اولین اجرا ساده است: curl -fsSL https://nstack.tech/install.sh | bash و پس از آن دستورات nstack init my-app ،nstack setup و nstack dev اجرا میشوند.
دستور nstack setup یک کلون تازه را با نصب وابستگیها، بوتاسترپ کردن pnpm از طریق Corepack و نصب Encore CLI آماده میکند و Docker را تنها در صورتی بررسی میکند که منابع تعریفشده در Encore به آن نیاز داشته باشند. دستور nstack dev بکاند، فرانتاند Nuxt و همگامسازی کلاینت را استارت میزند. وقتی API بکاند تغییر میکند، Nstack بهطور خودکار کلاینت تایپاسکریپت را در frontend/app/utils/api.ts بازسازی میکند تا اطمینان حاصل شود که URLهای مرورگر، SSR و استقرار شده همگی در یک نقطه مدیریت میشوند. این سطح از یکپارچگی در مدیریت APIها، یادآور بهینهسازی جریانهای کاری API با n8n است که پیچیدگیهای ارتباطی بین سرویسها را کاهش میدهد.
استقرار از طریق nstack deploy انجام میشود که انتقال کامل را به Dokploy میسپارد. این دستور منابع را شناسایی کرده، پیکربندی زیرساخت را رندر میکند، منابع را فراهم آورده، مسیرهای Traefik را پیکربندی میکند و URL عمومی را تأیید مینماید. حالت پیشفرض بیلد به Dokploy اجازه میدهد تا با استفاده از Dockerfileهای تولیدی و بخشهای بیلد Compose، مستقیماً از سورس-کد بیلد بگیرد و نیاز به GHCR یا Docker Hub را از بین ببرد. برای اپلیکیشنهایی که بر پایه سورس هستند، Nstack میتواند وبهوکهای Push بومی را از طریق GitHub، GitLab، Bitbucket، Gitea یا Forgejo پیکربندی کند.
مدیریت مقصدهای هدف و قابلیت اطمینان
اپلیکیشنها اغلب به محیطهای متعددی نیاز دارند که Nstack آنها را «Target» مینامد. کاربران میتوانند یک محیط استیجینگ با دستور nstack target create staging --domain staging.example.com ایجاد کرده و با دستور nstack deploy --env staging کد را در آن مستقر کنند.
اسرار زمان اجرا (Runtime Secrets) از طریق یک جریان اختصاصی مدیریت میشوند: nstack env set API_SECRET برای تنظیم، nstack env push برای ارسال و nstack env pull --all برای دریافت. قابلیت اطمینان عملیاتی با مجموعهای از ابزارهای CLI پشتیبانی میشود: nstack status ،nstack logs --follow ،nstack doctor و nstack undeploy --yes.
دستور nstack backup از منابع حالتدار، از جمله متادیتای Dokploy و اپلیکیشن، مقادیر محیطی Remote Compose و مصنوعات دادهای برای Postgres، حجمهای کش، RustFS و دادههای NSQ محافظت میکند. نکته حیاتی این است که سیستم را مجبور میکند پیش از هر مسیر حذف تخریبی، یک بکآپ حیاتی بگیرد، مگر اینکه این حفاظ بهطور صریح غیرفعال شده باشد.
این چرخش به سمت یک «استک محدود»، فرضیه بنیادین انعطافپذیری توسعهدهنده را تغییر میدهد. با چشمپوشی از توانایی انتخاب هر ابزار دلخواه، توسعهدهنده سیستمی به دست میآورد که در آن زیرساخت، بازتاب مستقیم کد است. این امر مخزن کد را از یک معمای مبهم برای AI به یک نقشه شناختهشده تبدیل میکند و نرخ توهم (Hallucination Rate) — وقتی مدل با اطمینان چیزی میگوید که اصلاً وجود ندارد — درباره ساختار پروژه را تقریباً به صفر میرساند.
گام بعدی شما
- اگر در حال ساخت اپلیکیشنهای AI-Native هستید، ساختار
AGENTS.mdرا برای هدایت بهتر مدلهای کدنویس بررسی کنید. - گردشکار
devexecرا برای تستهای سریع و بدون وضعیت در محیطهای CI/CD جایگزین سرورهای دائمی کنید. - استراتژی «استک محدود» را در تیم خود بسنجید تا سرعت استقرار را در برابر انعطاف ابزارها اولویت دهید.
اما تأثیر این استانداردسازی بر هزینههای استنتاج در مقیاس بزرگ هنوز بررسی نشده است؛ در گزارش بعدی به تحلیل مدلهای بهینهسازی هزینه در زیرساختهای مدرن میپردازیم.




گفتگو