Jump to content

مقدمة

T3 Stack

الـ T3 Stack هو Stack لتطوير تطبيقات الويب بُني علي فَلسفة البساطة، قابلية إعادة الاستخدام (فصل المركبات وإعادة استخدامها) و الحصول على typesafety في جميع أزكان التطبيق.

الأجزاء الأساسية هم Next.js، و TypeScript، و Tailwind CSS ودائما ما تَكون مُضافة، إذا كان مشروعك يتطلب Backend فَيُمكنك إضافة tRPC، و Prisma، و NextAuth.js.

لعلك لاحظت أن هناك الكثير من… الأجزاء. هذا ما رغبنا بتصميمه, لك مُطلق الحرية أن تُضف جزء وتَحذف أُخرى كما تحتاج - يكون أساس Stack خاضع لاحتياجاتك.

حسنا… ما هو create-t3-app؟ أهو قالب (template)؟

نوعا من. أُنشئ create-t3-app بواسطة مطورون متمرسون ليبسط CLI إعداد تطبيق T3 قَدر الإمكان. فَكُل جزء اختياري، هذا يعني أنك تنشئ قالبك حسب احتياجك.

بعد أنشاء العديد من المشروعات وممارسة تلك الأدوات لسنين، كسبنا العديد من الخبرات والآراء، وفعلنا قدر المستطاع لوضعهم داخل CLI.

أنه ليس بقالب شامل علي كل ما تحتاجة، نتوقع منك أن تُضيف مكتباتك الخاصة لحل ما سيواجهك من مشكلات في تطبيقك. علي الرغم من أننا نريد أن نترك لك مُطلق الحرية في حل المشاكل مثل state management ونشر التطبيق، لكن لدينا بعض الترشيحات لك.

T3 Axioms

لنكون شفافون - هذا مشروع متعدد الآراء. نتشارك جميعاََ في عدد قليل من المعتقدات الأساسية حَول كيفية البناء ونتخذها كأساس قراراتنا.

Solve Problems

من السهل أن تَقع في فخ فتُضيف “كل شيئ” - لكننا لا نريد ذَلك صراحتاً، يَجب أن يكون لكل شيئ مَغزي وهدف مُحدد كما هو الحال في ما أضفناه مُسبقا ويَترتب علي ذلك عدم إضافة مكتبات مِثل (zustand, redux)، لكننا نُضيف مكتبات أُخري مُثل NextAuth.js, و Prisma و tRPC.

غامر، لكن علي مسؤوليتك

نحن نحب التقنيات الحديثة، تجرِبة الأشياء الجديدة تجلب السعادة، لكن عليك تَوخى الحذر فلا تَستخدام التقنيات الغير مستقرة في الأماكن الحساسة، فمثلا نحن لا نراهن ⛔️ على قواعد بيانات حديثة (فإن SQL رائعة)، لكننا نراهن ✅ علي tRPC لأنها مجرد Functions ومن السهل الاستغناء عنها.

Typesafety ليس خياراََ

قد حددنا مُسبقاَ أن الهدف الأوحد من create-t3-app هو أن نوفر بِداية سَريعة لتطوير تطبيقات full-stack مع اتخاذ typesafe كأولوية, فهو أمر لابد منه لتحسين فاعليتك كمطور بواسطة تقليل عدد Bugs قدر الإمكان. أي حل وسط يضر typesafe في create-t3-app يَجب اتخاذه في مشروع مختلف.