06919c1ae7a2ddf134993a6a1c0953033b8227ff
remark 
Comment engine
Install
Backend
- copy provided docker-compose.yml and customize for your needs
- make sure you don't keep
DEV=truefor any non-development deployments - pull and start
docker compose pull && docker compose up
Run modes
serveractivates regular, server modeimportperforms import from external providers (disqus and internal json, see/api/v1/admin/export)
Register oauth2 providers
TBD
Frontend
TBD
API
Authorization
GET /login/{provider}?from=http://url- perform "social" login with one of supported providers and redirect tourlGET /logout- logoutGET /api/v1/user- get user info, auth required
type User struct {
Name string `json:"name"`
ID string `json:"id"`
Picture string `json:"picture"`
Profile string `json:"profile"`
Admin bool `json:"admin"`
}
currently supported providers are google and github
Commenting
POST /api/v1/comment- add a comment. auth required
type Comment struct {
ID string `json:"id"` // comment ID, read only
ParentID string `json:"pid"` // parent ID
Text string `json:"text"` // comment text
User User `json:"user"` // user info, read only
Locator Locator `json:"locator"` // post locator
Score int `json:"score"` // comment score, read only
Votes map[string]bool `json:"votes"` // comment votes, read only
Timestamp time.Time `json:"time"` // time stamp, read only
Pin bool `json:"pin"` // pinned status, read only
}
type Locator struct {
SiteID string `json:"site"`
URL string `json:"url"`
}
GET /api/v1/find?url=post-url&sort=fld&format=tree- find all comments for given post
This is the primary call used by UI to show comments for given post. It can return two formats - plain and tree. In plain
format result will be sorted list of Comment. In tree format this is going to be tree-like structure with this structure:
type Tree struct {
Nodes []Node `json:"comments"`
}
type Node struct {
Comment store.Comment `json:"comment"`
Replies []Node `json:"replies,omitempty"`
}
Sort can be time or score. Supported sort order with prefix -/+, i.e. -time. For tree mode sort will be applied to top-level comments only and all replies always sorted by time.
GET /api/v1/last/{max}- get up to{max}last commentsGET /api/v1/id/{id}- get comment byidGET /api/v1/count?url=post-url- get comment's count for{url}PUT /api/v1/vote/{id}?url=post-url&vote=1- vote for comment.vote=1 will increase score, -1 decreases. auth requiredDELETE /api/v1/admin/comment/{id}?url=post-url- delete comment byid. auth and admin requiredPUT /api/v1/admin/user/{userid}?site=side-id&block=1- block or unblock user. auth and admin requiredGET /api/v1/admin/export?site=side-id&block=1- export all comments. auth and admin requiredPUT /api/v1/admin/pin/{id}?site=side-id&pin=1- pin or unpin comment. auth and admin required
Languages
Go
69.4%
TypeScript
22.8%
CSS
3.2%
HTML
1.3%
JavaScript
1.3%
Other
2%