ความคิดเห็นง่ายๆ
Simple Comment เป็นแพลตฟอร์มแสดงความคิดเห็นสำหรับเว็บไซต์ต่างๆ ฟรี ยืดหยุ่น โอเพ่นซอร์ส เป็นส่วนตัว และปรับขนาดได้
ดูการสาธิต: https://simple-comment.netlify.app
สถานะ
หมายเหตุ: เครื่องมือการกลั่นกรองยังไม่เพียงพอ ไม่มีการแจ้งเตือนเมื่อผู้ใช้โพสต์ความคิดเห็น หรือวิธีใดๆ ที่จะระงับความคิดเห็นไว้ก่อนที่จะอนุมัติ หากคุณชอบโปรเจ็กต์นี้และอยากเห็นการพัฒนาเพิ่มเติมตามไทม์ไลน์ที่เฉพาะเจาะจง โปรดติดต่อฉัน ไม่เช่นนั้นโครงการนี้ยังติดถนนแต่เป็นทางช้า
MVP จบแล้ว!
ฟังก์ชันขั้นต่ำพร้อมใช้งานแล้ว!
งานที่เสร็จสมบูรณ์: (คลิกเพื่อเปิด)
- ความสามารถข้ามแหล่งกำเนิด
- สคริปต์ที่มีส่วนหน้า
- ตำแหน่งข้อมูล API ทั้งหมดตอบสนองตามที่คาดไว้
-
Access-Control-Allow-Origin
ตอบสนองต่อตัวแปร .env
- การรับรองความถูกต้องและการระบุตัวตนทำงานได้ตามที่คาดไว้
- ผู้ใช้และผู้ดูแลระบบที่ได้รับการรับรองความถูกต้องสามารถโต้ตอบกับ Simple Comment ได้ตามต้องการ
- ผู้ใช้ที่ไม่ระบุชื่อสามารถ สร้างหัวข้อ ได้
- สิ่งนี้มีประโยชน์สำหรับไซต์ที่มีหน้าจำนวนมาก
- ด้วยเหตุผลด้านความปลอดภัย จึงมีข้อจำกัดดังนี้:
- ส่วนหัว
Referer
และ topicId
ต้องแมปอย่างถูกต้อง -
Origin
ต้องอยู่ในรายการ Access-Control-Allow-Origin
- การตรวจสอบฝั่งเซิร์ฟเวอร์ของข้อมูลที่ผู้ใช้โพสต์
- คำแนะนำในการตั้งค่า
- มีความซับซ้อนแต่ก็ใช้งานได้เมื่อปฏิบัติตาม
- ผู้เข้าชมสามารถโพสต์โดยไม่ระบุชื่อ
- ความคิดเห็นรวมถึงผู้ใช้ทั่วไป
- ออกแบบป้ายสวยงาม!
- ผู้เข้าชมสามารถอ่านและตอบกลับความคิดเห็น
ความสำคัญสูงสุดรองจาก MVP
- การรับรองความถูกต้องและการระบุตัวตนผู้ใช้เพิ่มเติม
- ผู้ดูแลจะเก็บโพสต์ไว้เพื่อขออนุมัติ
- มาตรการป้องกันสแปม
- บูรณาการกับการรับรองความถูกต้องของบุคคลที่สาม
- การแจ้งเตือนทางอีเมลและการรวมระบบ
- ส่วนหน้าเป็นมิตรกับกรอบงาน
- ความคิดเห็นที่เป็นประโยชน์อย่างกว้างขวาง!
- การทดสอบ E2E
ยินดีที่มี
- ผู้ดูแลเปลี่ยนแปลงนโยบายการถือโพสต์เพื่อขออนุมัติ
- ผู้เยี่ยมชมสามารถอ้างสิทธิ์ความเป็นเจ้าของโพสต์ที่ไม่ระบุชื่อได้
- ปุ่มแก้ไข
- ลบ / แก้ไขกรอบเวลาในนโยบาย
- โปรไฟล์ผู้ใช้
คุณสมบัติ
- ใช้งานง่ายทุกที่
- ความปลอดภัยมาตรฐานอุตสาหกรรม
- ออกแบบให้ปรับแต่งได้เต็มที่
- ปรับขนาดได้ตั้งแต่ระดับฟรีไปจนถึงระดับองค์กร!
- ใช้ประโยชน์จากข้อเสนอระดับฟรีจาก DBaaS และโฮสต์เว็บไซต์
- API ที่มีเอกสารครบถ้วน
- การควบคุมข้อมูลของผู้เยี่ยมชมอย่างมีจริยธรรม ไม่มีการติดตาม
- ชุมชนนักพัฒนาที่เป็นมิตรและยินดีต้อนรับ
คุณสมบัติที่จะเกิดขึ้น
- CLI (อินเทอร์เฟซบรรทัดคำสั่ง) สำหรับ
- การติดตั้งและการตั้งค่า
- การกลั่นกรองเนื้อหา
- การดูแลระบบผู้ใช้
- จุดสิ้นสุด GraphQL
- การปฏิบัติตาม GDPR
- ผู้ใช้สามารถดูและลบข้อมูลของตนเองได้โดยไม่ต้องมีผู้ดูแล
- ผู้ดูแลสามารถจำกัดการเข้าถึงการอ่านและเขียนของผู้เยี่ยมชมได้
- บัญชีขาวของ IP บัญชีสีเทา และบัญชีดำ
- บัญชีขาวของผู้ใช้ บัญชีสีเทา และบัญชีดำ
- การตรวจสอบตนเองของผู้ใช้
- การเชื่อมต่อเสริมกับ Fediverse
- รองรับฐานข้อมูลอื่นๆ (PostgreSQL, Firestore, CockroachDB ฯลฯ) และบริการโฮสติ้ง (Heroku, AWS Lambda, GCS)
- รองรับ API การตรวจสอบสิทธิ์เว็บ https://w3c.github.io/webauthn/
- โปรไฟล์ผู้ใช้
- การโหวตขึ้น/การโต้ตอบ
ตั้งค่า
Simple Comment สามารถทำงานบนเซิร์ฟเวอร์เดียวกันกับเว็บไซต์ของคุณหรือบนเซิร์ฟเวอร์ข้ามโดเมนที่แยกต่างหาก
จำเป็น ที่ 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 เริ่มต้นเว็บไซต์ใหม่และเชื่อมโยงพื้นที่เก็บข้อมูลของคุณกับเว็บไซต์ใหม่
- ตรวจสอบหน้าตัวแปรสภาพแวดล้อม Build ของ 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 ระดับฟรีของคุณเองได้โดยทำตามคำแนะนำเหล่านี้
การพัฒนาท้องถิ่น
ถือว่ามีสภาพแวดล้อมที่เหมือนยูนิกซ์ เช่น Ubuntu
การติดตั้ง
- ติดตั้ง nvm
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- ติดตั้งและรัน MongoDB Community Edition
ทดสอบ
-
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 ใน /topic/{topicId}
จะได้รับความคิดเห็นทั้งหมดในการตอบกลับหัวข้อนั้นและผู้สืบทอด
/user
ตามค่าเริ่มต้น ผู้ใช้ที่ไม่ระบุชื่อสามารถโพสต์ความคิดเห็นได้ แต่ Simple Comment มีรูปแบบการระบุตัวตนขั้นต่ำ เพื่อให้ผู้แสดงความคิดเห็นที่เลือกทำเช่นนั้นสามารถควบคุมความคิดเห็นของตนได้หลังจากโพสต์แล้ว ตามนโยบาย
/auth
การรับรองความถูกต้องเป็นจุดสิ้นสุดสำหรับรูปแบบการรับรองความถูกต้องและการระบุตัวตน ผู้ใช้ส่งชื่อผู้ใช้และรหัสผ่านไปยังจุดสิ้นสุดการตรวจสอบสิทธิ์ และรับ JSON Web Token (JWT) ที่รับรองความถูกต้องว่าเป็นผู้ใช้นั้นสำหรับการดำเนินการ CRUD อื่นๆ
/verify
ส่งกลับรหัสผู้ใช้ที่เข้าสู่ระบบหรือ 401
นโยบาย
policy
เป็นออบเจ็กต์ที่เก็บคู่คีย์-ค่าที่ควบคุมวิธีการทำงานของ Simple Comment โดยกำหนดความยาวความคิดเห็นสูงสุดของอินสแตนซ์ หรือว่าผู้ใช้ทั่วไปสามารถลบตัวเองได้หรือไม่
{
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 ที่แสดงไว้ที่นี่ สิ่งเหล่านี้เกือบทั้งหมดมีความเป็นผู้ใหญ่มากกว่า Simple Comment และฉันขอแนะนำให้พิจารณาหนึ่งรายการ หากคุณไม่ได้มองหาโซลูชันแบบโอเพ่นซอร์สที่โฮสต์เองแบบไร้เซิร์ฟเวอร์โดยเฉพาะ รายการด้านล่างนี้คือข้อดีและข้อเสียที่แตกต่างจาก Simple Comment หาก จำเป็นต้องมีความน่าเชื่อถือ แสดงว่าการใช้บริการจำเป็นต้องได้รับความไว้วางใจในบริษัท เนื่องจากพวกเขาจะให้บริการโค้ดแบบปิดแก่ผู้ใช้ของคุณที่คุณไม่ได้ควบคุมและไม่สามารถตรวจสอบได้โดยง่าย ข้อมูลผู้ใช้จะถูกเก็บไว้ในเซิร์ฟเวอร์ที่พวกเขาควบคุมเช่นกัน รายการนี้อิงตามเอกสารสาธารณะ ไม่ใช่ประสบการณ์ หากมีสิ่งใดไม่ถูกต้องหรือขาดหายไปโปรดแจ้งให้เราทราบ
- กล่องแสดงความคิดเห็น https://commentbox.io/
- ฟรีเทียร์
- เน้นความเป็นส่วนตัว
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- จำเป็นต้องมีความไว้วางใจ
- ความเห็น https://www.commentics.org/
- โอเพ่นซอร์ส: GPL
- ฟรีเทียร์พร้อมโลโก้
- ต้องมีเซิร์ฟเวอร์ที่ใช้ PHP และ MySQL
- ความคิดเห็น https://commento.io/
- เน้นความเป็นส่วนตัว
- โอเพ่นซอร์ส: เอ็มไอที
- โฮสต์เองหรือจ่ายให้กับโฮสต์
- วาทกรรม https://www.discourse.org/
- โอเพ่นซอร์ส: GPL
- โดดเด่นอย่างครบครัน
- โฮสต์เองหรือเวอร์ชันที่ต้องชำระเงิน
- ไม่มีชั้นฟรี
- Disqus https://disqus.com/ - กอริลลา 400 ปอนด์ของ e
- ฟรีเทียร์
- โดดเด่นอย่างครบครัน
- แหล่งที่มาปิด
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- จำเป็นต้องเข้าสู่ระบบของผู้ใช้
- ขายข้อมูลผู้ใช้
- จำเป็นต้องมีความไว้วางใจ
- ปลั๊กอินความคิดเห็นของ Facebook https://developers.facebook.com/docs/plugins/comments/
- ฟรีเทียร์
- โดดเด่นอย่างครบครัน
- แหล่งที่มาปิด
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- ต้องใช้เฟสบุ๊ค
- จำเป็นต้องเข้าสู่ระบบของผู้ใช้
- ขายข้อมูลผู้ใช้
- จำเป็นต้องมีความไว้วางใจ
- ความคิดเห็นด่วน https://fastcomments.com/
- โดดเด่นอย่างครบครัน
- เน้นความเป็นส่วนตัว
- การสนทนาแบบเรียลไทม์
- การรับรองความถูกต้อง HMAC
- ไม่มีชั้นฟรี
- จำเป็นต้องมีความไว้วางใจ
- GraphComment https://graphcomment.com/
- โดดเด่นอย่างครบครัน
- ฟรีเทียร์
- แหล่งที่มาปิด
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- รับประกัน "ความเป็นเจ้าของข้อมูลโดยสมบูรณ์และครบถ้วน"
- เซิร์ฟเวอร์ในยุโรป (ฝรั่งเศส)
- จำเป็นต้องเข้าสู่ระบบของผู้ใช้
- จำเป็นต้องมีความไว้วางใจ
- ช่องแสดงความคิดเห็น HTML https://www.htmlcommentbox.com/
- ฟรีเทียร์
- แหล่งที่มาปิด
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- จำเป็นต้องมีความไว้วางใจ
- นโยบายความเป็นส่วนตัว? ไม่ทราบ
- HashOver https://www.barkdull.org/software/hashover
- โอเพ่นซอร์ส: AGPL
- ต้องมีเซิร์ฟเวอร์ที่ใช้ PHP และ MySQL
- Hyvor พูดคุย https://talk.hyvor.com/
- เน้นความเป็นส่วนตัว
- ไม่มีชั้นฟรี
- จำเป็นต้องเข้าสู่ระบบของผู้ใช้
- จำเป็นต้องมีความไว้วางใจ
- เข้มข้นดีเบต https://intensedebate.com/
- โดดเด่นอย่างครบครัน
- แหล่งที่มาปิด
- ข้อมูลถูกเก็บไว้บนเซิร์ฟเวอร์บุคคลที่สาม
- จำเป็นต้องเข้าสู่ระบบของผู้ใช้
- จำเป็นต้องมีความไว้วางใจ
- Isso 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
- โอเพ่นซอร์ส: GPL
- ไร้เซิร์ฟเวอร์
- ต้องมีบัญชีแบบลีนคลาวด์
- เซิร์ฟเวอร์อยู่ในประเทศจีน
- ความปลอดภัยของข้อมูล/ความเป็นส่วนตัวไม่ชัดเจน
- ของว่าง! https://schnack.cool/
- โอเพ่นซอร์ส: Lil License v1
- ต้องมีเซิร์ฟเวอร์ที่ใช้ Node และ SQLite3
- เพิ่มเติม: รายการระบบแสดงความคิดเห็นที่ฉันยังไม่ได้ประเมิน
- ความเห็นกระบองเพชร https://gitlab.com/cactus-comments
- ผู้วิจารณ์ https://github.com/mcorbin/commentator
- Comntr https://github.com/comntr
- โครงการคอรัล https://github.com/coralproject/talk
- ความคิดเห็น Github 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/
- สแตติกแมน https://github.com/eduardoboucas/staticman
- เว็บเมนชั่น https://webmention.io/
- รายละเอียดเพิ่มเติม https://news.ycombinator.com/item?id=25571253
- คำพูด https://github.com/utterance/utterances