Komentar Sederhana
Simple Comment adalah platform berkomentar untuk situs web apa pun. Gratis, fleksibel, sumber terbuka, pribadi, dan terukur.
Lihat demonya: https://simple-comment.netlify.app
Status
NB: Alat moderasi belum memadai. Tidak ada pemberitahuan ketika pengguna telah memposting komentar, atau cara apa pun untuk menahannya dalam moderasi sebelum disetujui. Jika Anda menyukai proyek ini dan ingin melihatnya dikembangkan lebih lanjut dalam jangka waktu tertentu, hubungi saya. Jika tidak, proyek ini masih berjalan, tetapi dalam perjalanan yang lambat.
MVP selesai!
Fungsionalitas minimum sudah aktif dan berjalan!
Tugas yang diselesaikan: (klik untuk membuka)
- Kemampuan lintas asal
- Skrip dengan frontend
- Semua titik akhir API merespons seperti yang diharapkan
-
Access-Control-Allow-Origin
merespons variabel .env
- Otentikasi dan Identifikasi berfungsi seperti yang diharapkan
- Pengguna dan admin yang diautentikasi dapat berinteraksi dengan Simple Comment seperti yang diharapkan
- Pengguna anonim dapat membuat topik
- Ini berguna untuk situs dengan banyak halaman
- Untuk alasan keamanan, pembatasan berlaku:
- Header
Referer
dan topicId
harus dipetakan dengan benar -
Origin
harus ada dalam daftar Access-Control-Allow-Origin
- Validasi sisi server atas data yang diposting pengguna
- Petunjuk pengaturan
- Rumit tetapi berhasil jika diikuti
- Pengunjung dapat memposting secara anonim
- Komentar termasuk pengguna tamu
- Merancang lencana yang indah!
- Pengunjung dapat membaca dan membalas komentar
Prioritas utama setelah MVP
- Otentikasi dan identifikasi pengguna opsional
- Moderator memegang postingan untuk disetujui
- Langkah-langkah pencegahan spam
- Integrasi dengan otentikasi pihak ketiga
- Pemberitahuan & integrasi email
- Frontend yang ramah kerangka kerja
- Komentar bermanfaat yang luas!
- tes E2E
Senang memilikinya
- Moderator mengubah kebijakan dalam menahan postingan untuk mendapatkan persetujuan
- Pengunjung dapat mengklaim kepemilikan atas postingan anonim
- tombol edit
- Hapus/edit jangka waktu dalam kebijakan
- Profil pengguna
Fitur
- Mudah digunakan di mana saja
- Keamanan standar industri
- Dirancang untuk dapat disesuaikan sepenuhnya
- Dapat diskalakan, dari tingkat gratis hingga perusahaan!
- Memanfaatkan penawaran tingkat gratis dari DBaaS dan host situs web
- API yang terdokumentasi sepenuhnya
- Kontrol pengunjung yang etis, tanpa jalur, atas data
- Komunitas pengembang yang ramah dan bersahabat
Fitur yang akan datang
- CLI (antarmuka baris perintah) untuk
- instalasi dan pengaturan
- moderasi konten
- administrasi pengguna
- Titik akhir GraphQL
- kepatuhan terhadap GDPR
- Pengguna dapat melihat dan menghapus data mereka sendiri tanpa moderator
- Moderator dapat membatasi akses baca dan tulis pengunjung
- Daftar putih IP, daftar abu-abu, dan daftar hitam
- Daftar putih pengguna, daftar abu-abu, dan daftar hitam
- Verifikasi diri pengguna
- Koneksi opsional ke Fediverse
- Dukungan untuk database lain (PostgreSQL, Firestore, CockroachDB, dll) dan layanan hosting (Heroku, AWS Lambda, GCS)
- Mendukung API Otentikasi Web https://w3c.github.io/webauthn/
- Profil pengguna
- Suara positif / Reaksi
Pengaturan
Simple Comment dapat dijalankan di server yang sama dengan situs web Anda atau di server lintas domain terpisah
Komentar Sederhana perlu disajikan melalui https:
Ikuti petunjuk ini. Jika ada yang kurang jelas, silakan buat terbitan baru
- Garpu repositori ini ke akun Anda sendiri
- Kloning garpu Anda
- Salin
example.env
ke direktori root proyek yang sama dan ganti namanya menjadi .env
- Di
.env
, masukkan nilai rahasia Anda sendiri (dibuat atau dibuat secara acak), untuk entri ini (yaitu ganti semuanya di sebelah kanan =
di setiap baris).- SIMPLE_COMMENT_MODERATOR_CONTACT_EMAIL
- SIMPLE_COMMENT_MODERATOR_ID
- SIMPLE_COMMENT_MODERATOR_PASSWORD
- JWT_RAHASIA
- daftar untuk mendapatkan akun MongoDB Atlas gratis
- Ikuti petunjuk ini
- Di
.env
tambahkan DB_CONNECION_STRING
yang tepat
- Daftar akun Netlify, mulai situs web baru, dan tautkan repositori Anda ke situs web baru
- Tinjau halaman Variabel lingkungan build Netlify
- Navigasikan ke 'Bangun & Terapkan => Lingkungan`
- Di bawah
Environmental Variables
klik tombol Edit Variables
- Untuk setiap entri di
.env
tambahkan kunci dan nilai yang sesuai untuk semua variabel - Untuk
IS_CROSS_SITE
tambahkan nilai true
jika sistem komentar dihosting di domainnya sendiri dan false
jika domainnya sama.
- Ubah situs web Anda. Ini adalah instruksi sederhana, tetapi jangan ragu untuk meretasnya
- Dalam HTML untuk setiap laman di situs web tempat Anda ingin menjalankan Komentar Sederhana, tambahkan dua tag berikut:
-
<script src="[path-to]/simple-comment.js" defer></script>
( src
harus mengarah ke file simple-comment.js
) -
<div id="simple-comment-display"></div>
- Unggah file
simple-comment.js
ke folder skrip situs web Anda
- Sekarang Anda dapat meninggalkan dan membaca komentar di situs web Anda
Pemecahan masalah
- Kesalahan:
Refused to connect to 'api/auth' because it violates the following Content Security Policy directive: connect-src 'self'
- Tambahkan
https://<your-comment-app>.netlify.app
ke header Kebijakan Keamanan Konten Anda di sebelah connect-src
(qv https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers /Kebijakan-Keamanan-Konten/koneksi-src)
- Kesalahan:
Access to fetch at 'https://<your-comment-app>.netlify.app/.netlify/functions/' from origin '<your-website>' has been blocked by CORS policy...
- Tambahkan
<your-website>
ke kunci ALLOW_ORIGIN
di .env
dan sebagai variabel lingkungan Netlify
Memoderasi
- Kunjungi halaman
login.html
yang Anda upload di Setup dan - Masuk menggunakan nilai
SIMPLE_COMMENT_MODERATOR_ID
dan SIMPLE_COMMENT_MODERATOR_PASSWORD
di file .env
Anda
Bangunan bawaan
Tumpukan default menggunakan Netlify + MongoDB untuk backend, dan klien berbasis fetch
minimal untuk frontend, namun dapat dengan mudah diadaptasi untuk menggunakan tumpukan teknologi apa pun, selama pengujian berhasil dan API sesuai dengan file skema Open API 3
Anda bisa mendapatkan MongoDB-in-the-cloud tingkat gratis Anda sendiri dengan mengikuti petunjuk berikut
Pembangunan lokal
Mengasumsikan lingkungan seperti unix, seperti Ubuntu.
Instalasi
- Instal nvm
-
nvm install
-
npm install -g yarn
-
yarn install
-
yarn run build
- Instal dan jalankan Edisi Komunitas MongoDB
Tes
-
yarn run test
-
yarn run test:e2e
Penggunaan
-
sudo systemctl start mongod
(qv Linux) -
yarn run start
- buka http://localhost:7070/
API
Spesifikasi API dijelaskan oleh file simple-comment-openapi3.json dalam format Open API 3 dan dirancang agar dapat dipertukarkan dengan sistem backend, frontend, dan identifikasi apa pun
Ini adalah ikhtisar titik akhir Simple Comment API
/comment
comment
adalah teks yang diposkan pengguna sebagai balasan terhadap comment
atau topic
lain, dan menampilkan balasan ini adalah satu-satunya alasan keberadaan proyek ini!
Titik akhir komentar adalah untuk membuat, membaca, memperbarui, dan menghapus (CRUD) komentar individual. Semua komentar harus mempunyai induk, yaitu sesuatu yang dibalasnya, baik itu topic
atau comment
/topic
Topik adalah jenis komentar khusus yang secara default hanya dapat dibuat oleh pengguna admin, dan membentuk wadah organisasi untuk komentar yang membalas. Ini adalah semacam komentar root, dan karenanya tidak memiliki induk
Titik akhir /topic menangani CRUD untuk komentar root ini. Operasi GET pada /topic
akan mendapatkan daftar topik dan GET pada /topic/{topicId}
akan mendapatkan semua komentar sebagai balasan untuk topik tersebut dan turunannya
/user
Secara default, komentar dapat diposting oleh pengguna anonim, namun Simple Comment memiliki skema identifikasi minimal sehingga pemberi komentar yang memilih untuk melakukannya dapat memiliki kontrol atas komentar mereka setelah diposting, sesuai dengan kebijakan
/auth
Auth adalah titik akhir untuk skema otentikasi dan identifikasi. Seorang pengguna mengirimkan nama pengguna dan kata sandinya ke titik akhir autentikasi, dan menerima JSON Web Token (JWT) yang mengautentikasi mereka sebagai pengguna tersebut untuk operasi CRUD lainnya
/verify
Mengembalikan id pengguna yang masuk atau 401
kebijakan
policy
adalah objek yang menyimpan pasangan nilai kunci yang mengatur bagaimana Komentar Sederhana berperilaku, misalnya menentukan panjang maksimum komentar atau apakah pengguna biasa dapat menghapus dirinya sendiri.
{
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
}
Alternatif
Ada 34 solusi yang bukan Komentar Sederhana yang tercantum di sini. Hampir semuanya lebih matang daripada Simple Comment, dan saya akan merekomendasikan untuk mempertimbangkannya jika Anda tidak mencari solusi khusus tanpa server, sumber terbuka, dan dihosting sendiri. Di bawah ini tercantum pro dan kontra yang membedakannya dari Simple Comment. Jika Kepercayaan diperlukan tercantum, artinya penggunaan layanan memerlukan kepercayaan pada perusahaan, karena mereka akan menyajikan kode sumber tertutup kepada pengguna Anda yang tidak Anda kendalikan dan tidak dapat diperiksa dengan mudah; selain itu, data pengguna akan disimpan di server yang mereka kendalikan. Daftar ini didasarkan pada dokumentasi publik, bukan pengalaman. Jika ada yang salah atau hilang, harap beri tahu saya.
- Kotak Komentar https://commentbox.io/
- Tingkat gratis
- Fokus pada privasi
- Data disimpan di server pihak ketiga
- Kepercayaan diperlukan
- Komentar https://www.commentics.org/
- Sumber Terbuka: GPL
- Tingkat gratis dengan logo
- Membutuhkan server yang menjalankan PHP dan MySQL
- Komentar https://commento.io/
- Fokus pada privasi
- Sumber Terbuka: MIT
- Tuan rumah mandiri ATAU bayar ke tuan rumah
- Wacana https://www.discourse.org/
- Sumber terbuka: GPL
- Berfitur lengkap
- Versi self-host ATAU berbayar
- Tidak ada tingkat gratis
- Disqus https://disqus.com/ - Gorila e
- Tingkat gratis
- Berfitur lengkap
- Sumber Tertutup
- Data disimpan di server pihak ketiga
- Membutuhkan login pengguna
- Menjual data pengguna
- Kepercayaan diperlukan
- Plugin Komentar Facebook https://developers.facebook.com/docs/plugins/comments/
- Tingkat gratis
- Berfitur lengkap
- Sumber Tertutup
- Data disimpan di server pihak ketiga
- Membutuhkan Facebook
- Membutuhkan login pengguna
- Menjual data pengguna
- Kepercayaan diperlukan
- Komentar Cepat https://fastcomments.com/
- Berfitur lengkap
- Fokus pada privasi
- Obrolan waktu nyata
- Otentikasi HMAC
- Tidak ada tingkat gratis
- Kepercayaan diperlukan
- Komentar Grafik https://graphcomment.com/
- Berfitur lengkap
- Tingkat gratis
- Sumber Tertutup
- Data disimpan di server pihak ketiga
- Menjamin "kepemilikan penuh dan lengkap" atas data
- Server di Eropa (Prancis)
- Membutuhkan login pengguna
- Kepercayaan diperlukan
- Kotak Komentar HTML https://www.htmlcommentbox.com/
- Tingkat gratis
- Sumber Tertutup
- Data disimpan di server pihak ketiga
- Kepercayaan diperlukan
- Kebijakan privasi? Tidak dikenal.
- HashOver https://www.barkdull.org/software/hashover
- Sumber Terbuka: AGPL
- Membutuhkan server yang menjalankan PHP dan MySQL
- Bicara Hyvor https://talk.hyvor.com/
- Fokus pada privasi
- Tidak ada tingkat gratis
- Membutuhkan login pengguna
- Kepercayaan diperlukan
- Debat Intens https://intensedebate.com/
- Berfitur lengkap
- Sumber Tertutup
- Data disimpan di server pihak ketiga
- Membutuhkan login pengguna
- Kepercayaan diperlukan
- Begitu https://posativ.org/isso/
- Dokumentasi sangat luas
- Sumber terbuka: MIT
- Membutuhkan server Linux yang menjalankan Python dan SQLite3
- Hanya Komentar https://just-comments.com/
- https://just-comments.com/blog/2020-03-06-just-comments-is-shutting-down.html tidak berfungsi
- Muut https://muut.com
- https://muut.io yang ramah pengembang
- Berfitur lengkap
- Tidak ada tingkat gratis
- Kepercayaan diperlukan
- Komentar42 https://remark42.com/
- Berfitur lengkap
- Sumber terbuka: MIT
- Membutuhkan server
- Menjalankan executable mandiri yang ditulis dalam Go
- Tempat bincang-bincang https://www.talkyard.io/
- Sumber terbuka: AGPL
- Hosting mandiri ATAU hosting berbayar
- Tingkat hampir gratis (€1,90/bln + add-on opsional)
- Diskon untuk organisasi nirlaba dan negara berkembang
- Valin https://valine.js.org/en/index.html
- Sumber terbuka: GPL
- Tanpa server
- Membutuhkan akun leancloud
- Server ada di Cina
- Keamanan/privasi data tidak jelas
- camilan! https://schnack.cool/
- Sumber terbuka: Lil License v1
- Membutuhkan server yang menjalankan Node dan SQLite3
- Lebih lanjut: daftar sistem komentar yang belum saya evaluasi
- Komentar kaktus https://gitlab.com/cactus-comments
- Komentator https://github.com/mcorbin/commentator
- Komunikasi https://github.com/comntr
- Proyek Karang https://github.com/coralproject/talk
- Komentar Github http://donw.io/post/github-comments/
- Glosa https://github.com/glosa
- Hiperkomentar https://www.hypercomments.com/
- Mastadon https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
- Formulir Netlify https://bsdnerds.org/comments-static-site/
- Kotak Komentar https://www.remarkbox.com/
- Kotak Balasan https://getreplybox.com/
- Media sosial https://brid.gy/
- Ahli Statis https://github.com/eduardoboucas/staticman
- Sebutan web https://webmention.io/
- lebih detail https://news.ycombinator.com/item?id=25571253
- ucapan https://github.com/utterance/utterances