ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
معلم افتراضي بالذكاء الاصطناعي لطلاب المرحلة الثانوية في العراق
Translation pending
EducationTypeScript · CSSGitHub @thabet191OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
معلم افتراضي بالذكاء الاصطناعي، ناطق بالعربية، لطلاب المرحلة الثانوية في العراق (سادس إعدادي / ثالث متوسط). تطبيق ويب مستقل (وليس داخل بيئة محادثة مقيّدة) يفتح المعلم فيه الجلسة بنفسه، يتحقق من المفهوم السابق تشخيصيًا، ثم يشرح — بصوت، وبرسوم توضيحية يولّدها بنفسه عند الحاجة.Read the full README ↗
معلم افتراضي بالذكاء الاصطناعي، ناطق بالعربية، لطلاب المرحلة الثانوية في العراق (سادس إعدادي / ثالث متوسط). تطبيق ويب مستقل (وليس داخل بيئة محادثة مقيّدة) يفتح المعلم فيه الجلسة بنفسه، يتحقق من المفهوم السابق تشخيصيًا، ثم يشرح — بصوت، وبرسوم توضيحية يولّدها بنفسه عند الحاجة.
trustHost: true مفعّل لأن Vercel (وأغلب مزوّدي الاستضافة) يمرّرون Host صحيحًاspeechSynthesis) للتحويل النصي-الصوتي من جهة المتصفح، بلا تبعية خارجية أو تكلفة إضافيةprisma/schema.prisma نماذج قاعدة البيانات
prisma/seed.ts يزرع 3 مواد أولية: كيمياء، رياضيات، إنكليزي
src/auth.config.ts إعداد NextAuth الآمن لبيئة Edge (بلا Prisma) — يستخدمه middleware فقط
src/auth.ts إعداد NextAuth الكامل (Credentials + bcrypt + Prisma) — يستخدمه كل شيء آخر
src/lib/teacher-prompt.ts الشخصية والأسلوب التربوي الكامل للمعلم (بالعربية) + أداة تحديث التقدّم
src/app/api/chat/route.ts المسار الرئيسي: يبني السياق (مادة + تقدّم + سجل حوار)، يبث رد المعلم، يحفظ التقدّم
src/hooks/use-teacher-voice.ts قراءة صوتية تختار الصوت العربي/الإنكليزي تلقائيًا حسب النص
src/lib/sanitize-svg.ts تعقيم صارم لأي رسم SVG يولّده المعلم قبل حقنه في الصفحة
src/components/chat-app.tsx التطبيق الرئيسي: اختيار المادة، الحوار، ملء الشاشة، الصوت
src/app/admin/* لوحة تحكم للمشرف: مواد جديدة، مصادر دائمة لكل مادة، قائمة الطلاب
update_progress) في نهاية كل رد، فيُفصل تمامًا عن النص المعروض/المنطوق للطالب.StudentMaterial (مكتبة كتب خاصة بالطالب لكل مادة، يختار أيها نشط عبر قائمة منسدلة) وMaterial (رفع المشرف، دائم ويظهر لكل الطلاب). عند عدم تفعيل أي كتاب طالب يُستخدم كتاب المشرف.[صفحة N] أثناء الاستخراج (src/lib/extract-pdf-text.ts)، فيستطيع المعلم إخبار الطالب فعليًا "نحن الآن في صفحة 42" بدل تخمين، ويُعرض هذا كشارة 📍 ثابتة أعلى المحادثة.fileData) عند الرفع، ويُعرض عبر GET /api/materials/file. العرض والتحويل إلى صورة (canvas) يحدثان بالكامل في متصفح الطالب عبر pdfjs-dist — لا خادم يُترجم الصفحات — لأن محاولة سابقة لعمل هذا على الخادم اصطدمت بنفس مشكلة تحميل عامل (worker) pdfjs التي واجهناها مع استخراج النص. لوحة LessonVisualPanel تعرض تبويبين: صفحة الكتاب الحالية، وآخر رسم توضيحي (SVG) ولّده المعلم — وتتنقّل تلقائيًا لأحدثهما.prisma db push يشغَّل ضمن npm run build نفسه، فكل نشر جديد على Vercel يهيّئ قاعدة البيانات ويزرع المواد الأولية تلقائيًا — مناسب لمشروع بمشرف واحد (أنت) بلا حاجة لتشغيل أوامر يدويًا في كل مرة.cp .env.example .env
# املأ DATABASE_URL (رابط Postgres، مثلاً من neon.tech)
# املأ ANTHROPIC_API_KEY، وولّد AUTH_SECRET بالأمر: npx auth secret
npm install
npm run dev
npm run dev لا يُنشئ الجداول تلقائيًا في وضع التطوير — شغّل مرة واحدة: npx prisma db push && npm run db:seed. أما npm run build (المستخدم في النشر) فيقوم بهذا تلقائيًا في كل مرة.
افتح http://localhost:3000، أنشئ حسابًا (أول حساب يصبح مشرفًا تلقائيًا ويرى رابط "لوحة التحكم" في الأعلى).
الكود جاهز للنشر مباشرة: عند البناء (npm run build) يقوم تلقائيًا بمزامنة جداول قاعدة البيانات وزرع المواد الأولية (prisma db push && seed) قبل بناء الموقع — لا حاجة لفتح أي طرفية (terminal).
DATABASE_URL = رابط Neon من الخطوة 1AUTH_SECRET = قيمة عشوائية طويلة (يمكن توليدها بالأمر openssl rand -base64 32 من أي طرفية، أو أطلب من المعلم/المساعد توليد واحدة)ANTHROPIC_API_KEY = مفتاحك من console.anthropic.comyour-project.vercel.app.| المتغير | الوصف |
|---|---|
DATABASE_URL | رابط اتصال Postgres (نفسه محليًا وفي الإنتاج) |
AUTH_SECRET | مفتاح توقيع الجلسات (npx auth secret أو openssl rand -base64 32) |
ANTHROPIC_API_KEY | مطلوب لتشغيل المعلم فعليًا |
ANTHROPIC_MODEL | افتراضيًا Haiku لتقليل التكلفة (~1-3$ لكل طالب نشط شهريًا)؛ بدّله بنموذج Sonnet لجودة أعلى وتكلفة أعلى |
export const maxDuration = 60) لتفادي حدّ الـ10 ثوانٍ الافتراضي لدوال Vercel المجانية أثناء استخراج نص كتاب كبير أو رد طويل من المعلم.MAX_PDF_BYTES في الكود — إن كان كتابك أكبر من ذلك، اضغطه بأداة مجانية لتصغير حجمه قبل الرفع. على خادم Node عادي (self-hosted) لا يوجد هذا القيد.[صفحة N] مأخوذة من ترتيب صفحات ملف الـPDF كما استخرجه pdf-parse؛ إن كان الكتاب صورًا ممسوحة ضوئيًا بلا طبقة نص (OCR)، لن يُستخرج نص ولن تظهر علامات صفحات (لكن صورة الصفحة نفسها تبقى تعمل، لأنها لا تعتمد على النص).weakPoints — موجودة بالفعل في Progress، تبقى بناء منطق الجدولة).SpeechRecognition في المتصفح — لم يكن يعمل في بيئة Artifacts المقيّدة سابقًا، ومن المتوقع أن يعمل بشكل طبيعي هنا كتطبيق مستقل؛ لم يُضف بعد لأنه لم يكن ضمن قائمة الميزات التي أثبتت نجاحها.