Spiceflow: فریمورک API و React Server Components تو یه زنجیره
خلاصهٔ کاملتر
Spiceflow یه فریمورک API تایپدار و همزمان یه فریمورک full-stack برای React با RSC هست. RSC یعنی React Server Components، کامپوننتهایی که روی سرور اجرا میشن و فقط نتیجهشون به مرورگر میره. سازندهها میگن تمرکزش روی سادگی مطلقه و با یه کد روی Node.js، Bun و Cloudflare Workers کار میکنه. فعلاً پیشانتشاره و باید با spiceflow@rsc نصبش کرد، نه spiceflow@latest.
دو جور میشه ازش استفاده کرد. یکی فقط API، بدون Vite و React، با validation از طریق Zod، استریم، تولید OpenAPI و یه fetch client تایپدار که پارامترهای مسیر، query، body و response رو کامل حدس میزنه. دومی full-stack ریاکت، که با اضافه کردن پلاگین Vite، server component، client component، layout، server action و code splitting خودکار رو میگیرین و همهٔ امکانات API هم کنارش کار میکنه.
نکتهٔ اصلی طراحیش اینه که کل اپ یه زنجیرهٔ واحد روی یه نمونهٔ Spiceflow ـه: routeهای API، middleware، loader، layout و صفحهها. همین زنجیره هم مسیریابی موقع اجرا رو مشخص میکنه و هم تایپها رو؛ fetch client، router.href() و useLoaderData() همه تایپشون رو از typeof app میگیرن. سمت React، Vite سه محیط میسازه: rsc، ssr و client. هر فایل "use client" یه chunk جدا میشه و هر "use server" یه endpoint از نوع POST.
صفحههایی که با .staticPage() ساخته میشن فقط یه بار موقع build رندر میشن، ولی روی Node.js و Cloudflare Workers قبل از هر درخواست middlewareهای .use() اجرا میشن. یعنی چک کردن auth، فرستادن کاربر به یه آدرس دیگه و تنظیم headerها روی صفحههای استاتیک هم کار میکنه. یه نکتهٔ مهم: موقع vite build هم middleware اجرا میشه و اون درخواست هیچ اطلاعاتی از کاربر نداره، پس اگه middleware اون درخواست رو به جای دیگه بفرسته، build شکست میخوره.
امکانات دیگهاش شامل پشتیبانی از Model Context Protocol برای وصل کردن routeها به LLMها، استریم با Server-Sent Events، tracing داخلی با OpenTelemetry که وقتی خاموشه هیچ سرباری نداره، و تست مستقیم با vitest بدون مرورگر و build ـه. سازندهها میگن Hono و Elysia فقط فریمورک HTTP هستن و Next.js کش مبتنی بر App Router داره، ولی تو Spiceflow هر درخواست layoutهای مربوط رو دوباره اجرا میکنه و تفکیک static/dynamic نداره.
نکات کلیدی:
- روی Node.js، Bun و Cloudflare Workers با یه کد اجرا میشه
- هنوز پیشانتشاره و با spiceflow@rsc نصب میشه
- validation با Zod و fetch client تایپدار که تایپها رو از typeof app میگیره
- .staticPage() یه بار موقع build رندر میشه ولی middleware قبل از هر درخواست اجرا میشه
- پشتیبانی از MCP، OpenAPI، SSE و OpenTelemetry بهصورت داخلی




