کلاینت وب
Next.js 14 (App Router)، سروررندرشده، احراز هویت SSR-اول، بدون جاوااسکریپت کلاینتیِ غیرضروری.
صفحهبندی توسط موتور داخلی سند انجام میشود و فایل PDF مستقیماً ساخته میشود.
یک موتور طبقهبندی ثابت، یک خط تولید محتوای مبتنی بر عاملهای هوش مصنوعی، و یک لایهٔ تحویل بلادرنگ — سه سامانه که پیش از نوشتن نخستین صفحهٔ محصول، بهطور کامل مستند و قفل شدند.
وب، موبایل و هر نگرانی مشترک — توکنهای طراحی، فید و کلاینتهای Supabase — زیر یک مونوریپوی واحد با Turborepo مدیریت میشوند.
Next.js 14 (App Router)، سروررندرشده، احراز هویت SSR-اول، بدون جاوااسکریپت کلاینتیِ غیرضروری.
Expo (React Native، SDK 51) با Expo Router؛ توکنهای طراحی و تایپهای دامنه را با وب به اشتراک میگذارد.
Supabase (PostgreSQL 15+)؛ Row-Level Security روی هر جدول؛ پسوند ltree برای سلسلهمراتب طبقهبندی.
Tailwind CSS از طریق یک پریست مشترک (@agadari/ui) که سیستم طراحیِ Spatial Minimalism را اجرا میکند.
صفی بومیِ PostgreSQL (FOR UPDATE SKIP LOCKED) بههمراه LISTEN/NOTIFY — orchestration عاملهای هوش مصنوعی و رویدادهای انتشار، بدون بروکر بیرونی.
عاملهای Node.js دیرپا (Railway/Render)، ردیابیشده از طریق جدول صف ai_agent_jobs.
TypeScript در همهجا، حالت strict، یک tsconfig.base.json مشترک برای کل مونوریپو.
کل گراف محتوا در یک جدول categories خودارجاع مدل شده — نه سه جدول جدا — با استفاده از پسوند ltree پستگرس برای پرسوجوهای نیا/نواده.
پیامد این یک تصمیم معماری است: خوانندهای که کل یک دستهٔ اصلی را دنبال میکند (مثلاً «سیاست»)، بهطور خودکار هر نیچ زیر آن را نیز میبیند — یک پرسوجوی ltree زندهٔ subscribed.path @> news.path، نه فهرستی که دستی نگهداری شود.
supabase/migrations/0001_taxonomy_schema.sql — تعریف جدول خودارجاعِ categories با ستون ltree برای مسیر سلسلهمراتبی هر موضوع.
supabase/migrations/0010_feed_query_function.sql — تابع پستگرسی که فید هر کاربر را مستقیماً از مسیرهای دنبالشده در ltree میسازد.
عاملهای خودمختار، خامترین منابع را میکاوند، راستیآزمایی، ترجمه و در نقشهٔ ۱٬۷۲۸ موضوعی طبقهبندی میکنند — پیش از آنکه چیزی به فید برسد. هر کار از طریق جدول صف ai_agent_jobs ردیابی میشود.
منابع خام را از سراسر عراق و اقلیم کوردستان جمعآوری میکند — نخستین گام خط تولید.
هر خبر خام را پیش از عبور به مرحلهٔ بعد، در برابر منابع دیگر راستیآزمایی میکند.
محتوای راستیآزماییشده را میان زبانهای منطقه برمیگرداند — بدون از دست دادن ظرافت زمینهای.
هر خبر ترجمهشده را در نقشهٔ ۱۲×۱۲×۱۲ جای میدهد — آمادهٔ رسیدن به هر خوانندهای که دقیقاً همان مسیر را دنبال میکند.
محصول یک جریان پیوسته و نهگانه است — نه مجموعهای از صفحات جدا.
یک میکرو-تعامل کوتاه از برند، در همان لحظهٔ باز شدن اپ.
معرفی بصری و کمینهگرا به پلتفرم، پیش از ورود.
موبایل + کد پیامکی، ایمیل + کد، گوگل یا فیسبوک — بهطور کامل سروررندرشده، بدون منطق احراز هویت در کلاینت.
نام، جنسیت، تاریخ تولد و یک هندل الفباعددیِ دائمی و آزادانهقابلویرایش.
هر حساب تازه بهطور خودکار سطح «Legend» نامحدود میگیرد؛ هیچچیز کشف هفتهٔ اول را محدود نمیکند.
سطح اصلی، با چهار حالت نمایش قابلتعویض (Pill، Thumbnail، Cover، List)؛ همه از یک تابع پستگرسیِ واحد تغذیه میشوند.
کل درخت طبقهبندی ۱۲×۱۲×۱۲، برای کشف فراتر از دنبالشدههای فعلیِ کاربر.
مرکز شخصی: موضوعات دنبالشده، کیفپول، و برای تولیدکنندگان محتوا، آمار درآمدزایی.
اشتراک، اعلانها، زبان و کنترلهای حساب.
Free، Pro، Premium و Legend — با یک جدول subscription_tiers و یک تریگر دفاعی پایگاهداده اجرا میشوند، نه شرطهای پراکنده در منطق برنامه؛ یعنی حدود اشتراک میتوانند بدون هیچ استقراری تغییر کنند.
سطح ورودی — دسترسی کامل به فید و نقشهٔ طبقهبندی، با محدودیتهای استاندارد.
حدود بالاتر برای خوانندگان و تولیدکنندگان محتوای فعالتر.
دسترسی گستردهتر، برای بنگاهها و سازمانهای رسانهای.
سطح نامحدود — هر حساب تازه بهمدت ۱۵ روز بهطور خودکار آن را دریافت میکند.