يحتوي هذا المستودع على البرامج النصية وتطبيق الويب الخاص بـ search.nixos.org
.
كانت الفكرة الأولية هي استبدال بحث خيارات وحزم NixOS الذي كان يجلب ملف JSON واحدًا يحتوي على جميع الحزم (أو الخيارات). يعد هذا الأسلوب جيدًا لإعداده البسيط، ولكنه بدأ يظهر مشاكله عندما أصبح عدد الحزم أكبر وأكبر. أنا متأكد من أنه يمكننا تحسينه بشكل أكبر، ولكن الأفكار حول ما يمكننا فعله إذا كانت هناك بعض قواعد البيانات في الخلف كانت مغرية بعدم المحاولة.
بالنسبة للواجهة الخلفية، نستخدم مثيل Elasticsearch الذي ترعاه bonsai.io. في الواجهة الأمامية نستخدم Elm.
حالة الاستخدام التي نريد حلها هي أن الزائر يريد معرفة ما إذا كانت هناك حزمة موجودة أو البحث عن تفاصيل حزمة معينة.
يريد المستخدم أن يتقارب مع نتيجة واحدة إن أمكن. كلما تمت إضافة المزيد من الأحرف إلى استعلام البحث، أصبح البحث ضيقًا ويجب أن نعرض نتائج أقل.
من المهم جدًا أيضًا ترتيب نتائج البحث. سيؤدي هذا إلى جلب المزيد من نتائج البحث ذات الصلة إلى الأعلى، لأنه في كثير من الأحيان يكون من الصعب إنتاج استعلام بحث ينتج عنه عنصر نتيجة واحد فقط.
أقل أهمية، ولكنها توفر تجربة أفضل للمستخدم. هي اقتراحات لكتابة استعلام بحث أفضل. يجب أن ترشد ميزة الاقتراح المستخدم إلى كتابة استعلامات أفضل والتي بدورها ستؤدي إلى نتائج أفضل.
لبدء التطوير، افتح الوحدة الطرفية وقم بتشغيلها:
env --chdir=frontend nix develop -c yarn dev
يمكنك توجيه متصفحك إلى http://localhost:3000
والبدء في التطوير. أي تغييرات على الملفات المصدر ( ./frontend/src
) ستؤدي إلى إعادة تحميل سريعة للتطبيق.
main
، يتم تشغيل إجراء GitHub.yarn prod
../dist
) على Netlify.لإضافة رقائقك الخاصة إلى فهرس البحث، قم بتحرير ./flakes/manual.toml.
الأنواع المحتملة هي github
و gitlab
و sourcehut
و git
(وهو البديل لأي نوع من مستودعات git ولكنه يتطلب تعيين مفتاح مراجعة يدويًا اعتبارًا من الآن).
لاختبار ما إذا كانت رقائقك متوافقة مع nix flake-info، يمكنك تجربة تشغيل flake-info
عليها
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>