تعليق بسيط
Simple Comment عبارة عن منصة للتعليق على أي موقع ويب. مجانية ومرنة ومفتوحة المصدر وخاصة وقابلة للتطوير.
شاهد العرض التوضيحي: https://simple-comment.netlify.app
حالة
ملاحظة: أدوات الإشراف ليست كافية بعد. لا يوجد إشعار عندما يقوم المستخدم بنشر تعليق، ولا توجد طريقة لإبقائه معتدلاً قبل الموافقة عليه. إذا أعجبك هذا المشروع وترغب في رؤيته يتطور بشكل أكبر في جدول زمني محدد، اتصل بي. وإلا فإن هذا المشروع لا يزال على الطريق، ولكن على الطريق البطيء.
اكتمل أفضل لاعب!
الحد الأدنى من الوظائف قيد التشغيل!
المهام المكتملة: (انقر للفتح)
- القدرة عبر المنشأ
- البرنامج النصي مع الواجهة الأمامية
- تستجيب جميع نقاط نهاية API كما هو متوقع
- يستجيب
Access-Control-Allow-Origin
لمتغيرات .env
- تعمل المصادقة وتحديد الهوية كما هو متوقع
- يمكن للمستخدمين والمسؤولين المعتمدين التفاعل مع Simple Comment كما هو متوقع
- يمكن للمستخدم المجهول إنشاء المواضيع
- وهذا مفيد للمواقع التي تحتوي على الكثير من الصفحات
- لأسباب أمنية، تنطبق القيود:
- يجب تعيين رأس
Referer
topicId
بشكل صحيح - يجب أن يكون
Origin
في قائمة Access-Control-Allow-Origin
- التحقق من جانب الخادم للبيانات المنشورة من قبل المستخدم
- تعليمات الإعداد
- معقدة ولكنها تعمل عند اتباعها
- يمكن للزائر نشر مجهول
- يتضمن التعليق مستخدمًا ضيفًا
- صممت شارة جميلة!
- يمكن للزوار قراءة التعليقات والرد عليها
الأولوية القصوى بعد MVP
- مصادقة المستخدم الاختيارية وتحديد الهوية
- مشرف يحمل المشاركات للموافقة عليها
- تدابير منع البريد العشوائي
- التكامل مع مصادقة الطرف الثالث
- إشعار البريد الإلكتروني والتكامل
- واجهات أمامية صديقة للإطار
- تعليقات مفيدة واسعة النطاق!
- اختبارات E2E
جميل أن يملك
- يقوم المشرف بتغيير سياسة الاحتفاظ بالمشاركات للموافقة عليها
- يمكن للزائر المطالبة بملكية المشاركات المجهولة
- زر التحرير
- حذف/تحرير النوافذ الزمنية في السياسة
- ملفات تعريف المستخدمين
- انظر التعليقات
- الصورة الرمزية
سمات
- سهل الاستخدام في أي مكان
- أمان متوافق مع معايير الصناعة
- مصممة لتكون قابلة للتخصيص بالكامل
- قابلة للتطوير، من الطبقة المجانية إلى المؤسسة!
- يستفيد من عروض الطبقة المجانية المقدمة من DBaaS ومضيفي مواقع الويب
- واجهة برمجة التطبيقات الموثقة بالكامل
- افتح واجهة برمجة التطبيقات 3
- تحكم أخلاقي، بدون تتبع، للزائر في البيانات
- مجتمع المطورين ودود ومرحب
الميزات القادمة
- CLI (واجهة سطر الأوامر) لـ
- التثبيت والإعداد
- الاعتدال في المحتوى
- إدارة المستخدم
- نقطة نهاية GraphQL
- الامتثال للناتج المحلي الإجمالي
- يمكن للمستخدمين عرض وحذف بياناتهم الخاصة دون وسيط
- يمكن للمشرفين تقييد وصول الزائر للقراءة والكتابة
- قوائم IP البيضاء والقوائم الرمادية والقوائم السوداء
- القوائم البيضاء والقوائم الرمادية والقوائم السوداء للمستخدم
- التحقق الذاتي للمستخدم
- اتصال اختياري بـ Fediverse
- دعم قواعد البيانات الأخرى (PostgreSQL، Firestore، CockroachDB، إلخ) وخدمات الاستضافة (Heroku، AWS Lambda، GCS)
- دعم واجهة برمجة تطبيقات مصادقة الويب https://w3c.github.io/webauthn/
- ملفات تعريف المستخدمين
- التصويت / ردود الفعل
يثبت
يمكن تشغيل Simple Comment على نفس الخادم مثل موقع الويب الخاص بك أو على خادم منفصل عبر النطاقات
من الضروري أن يتم تقديم التعليق البسيط عبر https:
اتبع هذه التعليمات. إذا كان هناك أي شيء غير واضح، يرجى إنشاء قضية جديدة
- شوكة هذا المستودع إلى حسابك الخاص
- استنساخ شوكة الخاص بك
- انسخ
example.env
إلى الدليل الجذر للمشروع نفسه وأعد تسميته ليصبح .env
- في
.env
، أدخل القيم السرية الخاصة بك (المكونة أو المولدة عشوائيًا) لهذه الإدخالات (أي استبدل كل شيء على يمين =
في كل سطر).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_SECRET
- قم بالتسجيل للحصول على حساب MongoDB Atlas مجاني
- اتبع هذه التعليمات
- في
.env
أضف DB_CONNECION_STRING
المناسب
- قم بالتسجيل للحصول على حساب Netlify، وابدأ موقع ويب جديدًا، واربط مستودعك بالموقع الجديد
- قم بمراجعة صفحة متغيرات بيئة البناء الخاصة بـ Netlify
- انتقل إلى "الإنشاء والنشر => البيئة".
- ضمن
Environmental Variables
انقر فوق الزر Edit Variables
- لكل إدخال في
.env
أضف المفتاح والقيمة المقابلة لجميع المتغيرات - بالنسبة إلى
IS_CROSS_SITE
أضف القيمة true
إذا كان نظام التعليق مستضافًا في المجال الخاص به والقيمة false
إذا كان هو نفس النطاق.
- تعديل موقع الويب الخاص بك. هذه تعليمات بسيطة، لكن لا تتردد في اختراقها
- في HTML لكل صفحة على موقع الويب الخاص بك حيث تريد تشغيل Simple Comment، أضف هاتين العلامتين:
-
<script src="[path-to]/simple-comment.js" defer></script>
(يجب أن يشير src
إلى ملف simple-comment.js
) -
<div id="simple-comment-display"></div>
- قم بتحميل ملف
simple-comment.js
إلى مجلد البرنامج النصي لموقع الويب الخاص بك
- ينبغي أن يكون من الممكن الآن ترك التعليقات وقراءتها على موقع الويب الخاص بك
استكشاف الأخطاء وإصلاحها
- خطأ:
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- أضف
https://<your-comment-app>.netlify.app
إلى رأس سياسة أمان المحتوى بجوار connect-src
(qv https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /سياسة أمان المحتوى/connect-src)
- خطأ:
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- أضف
<your-website>
إلى مفتاح ALLOW_ORIGIN
في .env
وكمتغير بيئي لـ Netlify
الاعتدال
- قم بزيارة صفحة
login.html
التي قمت بتحميلها في الإعداد و - قم بتسجيل الدخول باستخدام قيم
SIMPLE_COMMENT_MODERATOR_ID
و SIMPLE_COMMENT_MODERATOR_PASSWORD
في ملف .env
الخاص بك
البناء الافتراضي
يستخدم المكدس الافتراضي Netlify + MongoDB للواجهة الخلفية، وعميل يعتمد على الحد الأدنى fetch
للواجهة الأمامية، ولكن يمكن تكييفه بسهولة لاستخدام أي مكدس تكنولوجي، طالما نجحت الاختبارات وتوافق واجهة برمجة التطبيقات (API) مع ملف مخطط Open API 3
يمكنك الحصول على الطبقة المجانية MongoDB-in-the-cloud باتباع هذه التعليمات
التنمية المحلية
يفترض بيئة تشبه يونكس، مثل أوبونتو.
تثبيت
- قم بتثبيت nvm
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- قم بتثبيت وتشغيل إصدار مجتمع MongoDB
امتحان
-
yarn run test
-
yarn run test:e2e
الاستخدام
-
sudo systemctl start mongod
(qv Linux) -
yarn run start
- افتح http://localhost:7070/
واجهة برمجة التطبيقات
يتم وصف مواصفات واجهة برمجة التطبيقات (API) بواسطة الملف simple-comment-openapi3.json بتنسيق Open API 3، وهي مصممة لتكون قابلة للتبديل مع أي واجهة خلفية أو واجهة أمامية أو نظام تعريف
هذه نظرة عامة على نقاط نهاية Simple Comment API
/comment
comment
هو نص ينشره المستخدم ردًا على comment
آخر أو topic
، وتقديم هذه الردود هو السبب الوحيد لوجود هذا المشروع!
نقطة نهاية التعليق مخصصة لإنشاء التعليقات الفردية وقراءتها وتحديثها وحذفها (CRUD). كل التعليقات يجب أن يكون لها أصل، أي شيء ترد عليه، سواء topic
أو comment
/topic
الموضوع هو نوع خاص من التعليقات التي يمكن إنشاؤها افتراضيًا بواسطة المستخدمين الإداريين فقط، ويشكل مجموعة تنظيمية للتعليقات التي ترد. إنه نوع من التعليق الجذري، وبالتالي ليس له أصل
تعالج نقطة النهاية /topic CRUD لهذه التعليقات الجذرية. ستحصل عملية GET لـ /topic
على قائمة بالموضوعات وستحصل GET on /topic/{topicId}
على جميع التعليقات ردًا على هذا الموضوع وأحفاده
/user
افتراضيًا، يمكن نشر التعليقات بواسطة مستخدمين مجهولين، ولكن التعليق البسيط لديه نظام تعريف بسيط بحيث يمكن للمعلقين الذين يختارون القيام بذلك التحكم في تعليقاتهم بعد نشرها، وفقًا للسياسة
/auth
المصادقة هي نقطة النهاية لنظام المصادقة وتحديد الهوية. يرسل المستخدم اسم المستخدم وكلمة المرور الخاصة به إلى نقطة نهاية المصادقة، ويتلقى رمز ويب JSON (JWT) الذي يصادق عليه باعتباره ذلك المستخدم لعمليات CRUD الأخرى
/verify
إرجاع معرف المستخدم الذي قام بتسجيل الدخول أو 401
سياسة
policy
عبارة عن كائن يحتوي على أزواج من القيمة الرئيسية والتي تتحكم في كيفية تصرف التعليق البسيط ، وتحدد على سبيل المثال الحد الأقصى لطول التعليق أو ما إذا كان بإمكان المستخدمين العاديين حذف أنفسهم.
{
isGuestAccountAllowed : boolean , // if true, a visitor can post anonymously using a guest account. if false, only authenticated users can comment.
canFirstVisitCreateTopic : boolean , // if a discussion does not exist for a page, shall it be created when visited for the first time, or does admin create all topics?
canGuestCreateUser : boolean , // can a user with guest credentials create (their own) user profile? if 'canPublicCreateUser' is set to 'true' this setting is ignored
canGuestReadDiscussion : boolean , // can a user with guest credentials browse and read discussions? if 'canPublicReadDiscussion' is set to 'true' this setting is ignored
canGuestReadUser : boolean , // can a user with guest credentials view user profiles? if 'canPublicReadUser' is true, this setting is ignored
canPublicCreateUser : boolean , // can a user with no credentials create (their own) user profile?
canPublicReadDiscussion : boolean , // can a user with no credentials browse and read discussions?
canPublicReadUser : boolean , // can an anonymous visitor view any user's profile?
canUserDeleteSelf : boolean , // can a user delete their own profile?
maxCommentLengthChars : number , // Attempting to post a comment longer than this number of characters will be rejected by the API
}
البدائل
هناك 34 حلاً غير مدرجة في التعليق البسيط هنا. جميعها تقريبًا أكثر نضجًا من Simple Comment، وأوصي بالتفكير في واحدة إذا كنت لا تبحث على وجه التحديد عن حل بدون خادم ومفتوح المصدر ومستضاف ذاتيًا. المدرجة أدناه هي الإيجابيات والسلبيات التي تميزها عن التعليق البسيط. إذا تم إدراج الثقة مطلوبة ، فهذا يعني أن استخدام الخدمة يتطلب الثقة في الشركة، لأنها ستقدم تعليمات برمجية مغلقة المصدر لمستخدميك لا يمكنك التحكم فيها ولا يمكنك فحصها بسهولة؛ بالإضافة إلى ذلك، سيتم الاحتفاظ ببيانات المستخدم على الخوادم التي يتحكمون فيها. تستند هذه القائمة على الوثائق العامة، وليس الخبرة. إذا كان هناك أي شيء غير صحيح أو مفقود، واسمحوا لي أن أعرف.
- صندوق التعليقات https://commentbox.io/
- الطبقة المجانية
- تركز على الخصوصية
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- الثقة مطلوبة
- التعليقات https://www.commentics.org/
- المصدر المفتوح: جي بي إل
- طبقة مجانية مع الشعار
- يتطلب خادمًا يقوم بتشغيل PHP وMySQL
- التعليق https://commento.io/
- تركز الخصوصية
- المصدر المفتوح: معهد ماساتشوستس للتكنولوجيا
- المضيف الذاتي أو الدفع للمضيف
- الخطاب https://www.discourse.org/
- المصدر المفتوح: جي بي إل
- مميزة بالكامل
- المضيف الذاتي أو النسخة المدفوعة
- لا يوجد طبقة مجانية
- Disqus https://disqus.com/ - غوريلا e
- الطبقة المجانية
- مميزة بالكامل
- مصدر مغلق
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- يتطلب تسجيل دخول المستخدم
- بيع بيانات المستخدم
- الثقة مطلوبة
- البرنامج المساعد لتعليقات الفيسبوك https://developers.facebook.com/docs/plugins/comments/
- الطبقة المجانية
- مميزة بالكامل
- مصدر مغلق
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- يتطلب الفيسبوك
- يتطلب تسجيل دخول المستخدم
- بيع بيانات المستخدم
- الثقة مطلوبة
- التعليقات السريعة https://fastcomments.com/
- مميزة بالكامل
- تركز الخصوصية
- الدردشة في الوقت الحقيقي
- مصادقة HMAC
- لا يوجد طبقة مجانية
- الثقة مطلوبة
- تعليق الرسم البياني https://graphcomment.com/
- مميزة بالكامل
- الطبقة المجانية
- مصدر مغلق
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- يضمن "الملكية الكاملة والكاملة" للبيانات
- الخوادم في أوروبا (فرنسا)
- يتطلب تسجيل دخول المستخدم
- الثقة مطلوبة
- مربع تعليق HTML https://www.htmlcommentbox.com/
- الطبقة المجانية
- مصدر مغلق
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- الثقة مطلوبة
- سياسة الخصوصية؟ مجهول.
- هاش أوفر https://www.barkdull.org/software/hashover
- المصدر المفتوح: AGPL
- يتطلب خادمًا يقوم بتشغيل PHP وMySQL
- هيفور توك https://talk.hyvor.com/
- تركز الخصوصية
- لا يوجد طبقة مجانية
- يتطلب تسجيل دخول المستخدم
- الثقة مطلوبة
- مناقشة مكثفة https://intensedebate.com/
- مميزة بالكامل
- مصدر مغلق
- يتم الاحتفاظ بالبيانات على خادم الطرف الثالث
- يتطلب تسجيل دخول المستخدم
- الثقة مطلوبة
- إيسو https://posativ.org/isso/
- التوثيق واسع النطاق
- المصدر المفتوح: معهد ماساتشوستس للتكنولوجيا
- يتطلب خادم Linux يعمل بنظام Python وSQLite3
- مجرد تعليقات https://just-comments.com/
- البائد https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html
- موت https://muut.com
- صديقة للمطورين https://muut.io
- مميزة بالكامل
- لا يوجد طبقة مجانية
- الثقة مطلوبة
- ريمارك42 https://remark42.com/
- مميزة بالكامل
- المصدر المفتوح: معهد ماساتشوستس للتكنولوجيا
- يتطلب الخادم
- يقوم بتشغيل ملف تنفيذي مستقل مكتوب بلغة Go
- تالكيارد https://www.talkyard.io/
- المصدر المفتوح: AGPL
- استضافة ذاتية أو استضافة مدفوعة
- طبقة مجانية تقريبًا (1.90 يورو شهريًا + إضافات اختيارية)
- خصومات للمؤسسات غير الربحية والدول النامية
- فالين https://valine.js.org/en/index.html
- المصدر المفتوح: جي بي إل
- بدون خادم
- يتطلب حساب Leancloud
- الخوادم في الصين
- سلامة البيانات / الخصوصية غير واضحة
- شناك! https://schnack.cool/
- مفتوح المصدر: ترخيص ليل v1
- يتطلب خادمًا يقوم بتشغيل Node وSQLite3
- المزيد: قائمة بأنظمة التعليق التي لم أقم بتقييمها
- تعليقات الصبار https://gitlab.com/cactus-comments
- المعلق https://github.com/mcorbin/commentator
- كومنتر https://github.com/comntr
- مشروع المرجان https://github.com/coralproject/talk
- تعليقات جيثب http://donw.io/post/github-comments/
- جلوسا https://github.com/glosa
- التعليقات الفائقة https://www.hypercomments.com/
- المستادون https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
- نماذج Netlify https://bsdnerds.org/comments-static-site/
- https://www.remarkbox.com/
- صندوق الرد https://getreplybox.com/
- وسائل التواصل الاجتماعي https://brid.gy/
- Staticman https://github.com/eduardoboucas/staticman
- إشارة الويب https://webmention.io/
- مزيد من التفاصيل https://news.ycombinator.com/item?id=25571253
- الكلام https://github.com/utterance/utterances