عن المشروع

GitHub Languages Card هي خدمة ويب مبنية على Node.js/Express تولّد بطاقات SVG تعرض أكثر لغات البرمجة استخدامًا لدى مستخدم GitHub، وهي مصممة للتضمين في ملفات README الشخصية ومعارض الأعمال والوثائق. يتوفر عرض توضيحي مستضاف على github-languages-card.vercel.app، ويمكن أيضًا استضافة المشروع ذاتيًا. الوظائف الأساسية: يقبل نقطة النهاية GET /api/top-languages معامل username المطلوب ومعامل theme الاختياري (الافتراضي pink)، ويعيد صورة SVG يمكن تضمينها مباشرة في Markdown. تعرض البطاقة أهم اللغات مع النسب المئوية، بالإضافة إلى إحصاءات GitHub مثل المستودعات والمتابعين والنجوم والتفرعات، واختياريًا الصورة الرمزية للمستخدم. يذكر ملف README أنه لا يتم تخزين أي بيانات وأن الطلبات تذهب مباشرة إلى GitHub API. السمات: يسرد ملف README أكثر من 18 سمة مسمّاة، بما في ذلك pink وdark وmint وpurple وocean وsunset وgraphite وcoffee وlavender وpeach وneon وstrawberry وdarkNeon وfire وsnow وhacker وwhite وgolden. يعرض ملف README قائمة "أفضل الاختيارات" مرتبة للسمات، وهي عرض من المؤلف نفسه وليست تقييمًا مستقلًا. الاستضافة الذاتية: تتطلب Node.js 18+ وnpm/yarn. تتمثل الخطوات في استنساخ المستودع، وتشغيل npm install، ونسخ .env.example إلى .env، والبدء باستخدام node server.js، وبعد ذلك يصبح التطبيق متاحًا على localhost:3000. يتم توفير ملف Dockerfile نموذجي مبني على node:18-alpine. تشمل متغيرات البيئة PORT (الافتراضي 3000)، وGITHUB_TOKEN (اختياري، لحدود API أعلى)، وNODE_ENV، وRENDER_EXTERNAL_URL. بنية المشروع: server.js هو خادم Express الرئيسي؛ ويحتوي public/ على صفحة الهبوط وصور الوثائق؛ ويحتوي utils/ على github.js (تكامل GitHub API)، وsvgBuilder.js (منشئ بطاقات SVG)، وhelpers.js؛ ويحتوي themes/ على تعريفات كل سمة. مجموعة التقنيات المذكورة هي Node.js وExpress وAxios وتوليد SVG. القيود المعروفة التي أشار إليها المؤلفون: GitHub API محدود المعدل (60 طلبًا/ساعة بدون رمز، و5000/ساعة مع GITHUB_TOKEN)، وقد يكون الطلب الأول بطيئًا بسبب زمن استجابة GitHub API. المشروع مرخّص بموجب MIT ويرحّب بالمساهمات عبر سير عمل fork/branch/pull-request. يذكر ملف README أيضًا أن المستخدمين في المناطق المقيّدة قد يحتاجون إلى VPN للوصول إلى العرض التوضيحي المستضاف على Vercel.