عن المشروع

Free AP Practice أداة دراسية مفتوحة المصدر مبنية بـ SvelteKit وSvelte 5، أنشأها ويصونها Ajay Saravanan. تستهدف التحضير لامتحانات AP، وتهدف إلى جعل التدريب أسرع وأكثر تخصيصًا ومتاحًا دون اشتراك تحضيري مدفوع. تشمل الميزات الأساسية أسئلة اختيار من متعدد مولّدة بالذكاء الاصطناعي مع مدرّس داخل التطبيق، وإشارات مرجعية، وسجل محاولات. يحتوي التطبيق على صفحات تسويقية عامة (الصفحة الرئيسية، حول، المواد، دليل الدراسة الصيفي، المدونة، الإحصاءات، الخصوصية، الشروط، سجل التغييرات) بالإضافة إلى منطقة موثّقة على /app تغطي لوحة التحكم، والتدريب، والتقدم، وسجل الأسئلة، والموارد، والإعدادات. توجد صفحات هبوط للتدريب موجهة لتحسين محركات البحث تحت /practice/[...slug]، وتُعرض عدادات التوليد العامة على /stats. تضيف عضوية Super الاختيارية تدريسًا مخصصًا للأسئلة متعددة الخيارات/الأسئلة ذات الإجابة الحرة، ومدربًا، وخطة دراسية أسبوعية. تستخدم المصادقة Better Auth لتسجيل الدخول بالبريد الإلكتروني/كلمة المرور وGoogle، بما في ذلك Google One Tap عند تهيئته. تقنيًا، يستخدم المشروع TypeScript، وTailwind CSS، وNeon PostgreSQL مع Drizzle ORM عبر مشغل HTTPS بلا خادم، وVercel AI SDK مع واجهة برمجة تطبيقات متوافقة مع OpenAI (OpenAI أو LM Studio المحلي)، وResend للبريد الإلكتروني، وStripe مع إضافة Better Auth Stripe للاشتراكات، وMem0 لذاكرة المدرّس الاختيارية، وUpstash Redis لضوابط الذكاء الاصطناعي قصيرة الأجل، وVercel للنشر. يُخزَّن محتوى الأسئلة في Neon PostgreSQL للتدريب والإشارات المرجعية والسجل؛ أما منشورات المدونة فهي ملفات Markdown في src/content/blog/. يتطلب الإعداد Node.js 20+، وBun، ومشروع Neon PostgreSQL. تشمل الأوامر bun install، وbun dev، وbun run build، وbun run db:apply لترحيلات Drizzle، وbun test:unit لـ Vitest، واختبار دخاني منشور لتوليد الأسئلة. يمكن لـ compose.yaml تشغيل PostgreSQL وRedis محليًا لأغراض الفحص وأعمال الترحيل، رغم أن وقت التشغيل يجب أن يستخدم رابط فرع Neon. تشمل متغيرات البيئة المطلوبة DATABASE_URL، وBETTER_AUTH_SECRET، وBETTER_AUTH_URL، وOPEN_AI_KEY، وOPENAI_BASE_URL؛ أما المتغيرات الاختيارية فتغطي Google OAuth، وResend، وعمليات استيراد S3 القديمة، وتقارير أخطاء GitHub، وأمان cron. تُصدَّر خيارات النماذج كثوابت في src/lib/ai/ai-models-config.ts. تشمل مسارات API تحت src/routes/api تدفقات Better Auth على /api/auth/*، وبيانات المستخدم المسجّل على /api/me/* (الإحصاءات، التقدم، السجل، record-attempt، الإشارات المرجعية)، واختيار الأسئلة على POST /api/question، وإحصاءات التوليد العامة، ونقاط نهاية دردشة المدرّس والترحيب، وتقارير الأخطاء التي تنشئ GitHub Issues مع تحديد معدل لكل IP، وفحص /health. لا تُحمَّل Vercel Analytics وSpeed Insights إلا بعد موافقة المستخدم. يتم النشر إلى Vercel كتطبيق SvelteKit؛ وتطبّق CI الترحيلات عند الدفع إلى main أو staging قبل النشر. اسم Freeappractice والشعار والعلامة التجارية مملوكة ومحجوزة للمؤسس، بينما الكود المصدري مفتوح للتشعب والمساهمات تحت اسم مختلف.