1. grpc - "google.golang.org/grpc"
2. goqu - "github.com/doug-martin/goqu/v9"
3. gorm - "gorm.io/gorm" (post-service only)
4. kafka - "github.com/IBM/sarama"
5. redis - "github.com/go-redis/redis/v8"
6. websocket - "github.com/gorilla/websocket"
7. Elastic search - "github.com/elastic/go-elasticsearch/v8"
8. prometheus - "github.com/prometheus/client_golang/prometheus"
9. grafana for monitoring
10. email - "github.com/jordan-wright/email"
11. sms - "github.com/twilio/twilio-go"
12. template - "html/template" for notification form
13. DSA: Trie - for violent comment rule checking (post-service)
13.1. DSA: Trie - for address auto suggestion (in user-service)
14. Nginx: for load balancing
15. Post validator - "github.com/go-playground/validator/v10"
16. Regex - "regexp"
1. run `docker compose up`
2. Check status of services
3. Access prometheus: [http://localhost:9090/targets](http://localhost:9090/targets) to check is your service up successfully
4. Access grafana: [http://localhost:3000/login](http://localhost:3000/login) (user: admin - password: admin)
5. Access `localhost:3001` for web
6. Access `localhost:3001/comment_rule.html` for comment-rule
1. go to "cd deployments" and run "docker-compose up"
2. run http-gateway "cd http_gateway/" and "go run cmd/main.go"
3. run user-service "cd user-service/" and "go run cmd/main.go"
4. run post-service "cd post-service/" and "go run cmd/main.go"
5. run newsfeed-service "cd newsfeed-service/" and "go run cmd/main.go"
6. run message-service "cd message-service/" and "go run cmd/main.go"
7. run FE "cd web/" and "start index.html"
namnv - namnv
knm - knm
baobq - baobq
sql files location:
user-service\internal\database\migrations\mysql
go install github.com/google/wire/cmd/wire@latest
- Login / Register
- Newsfeed
- View and add new comment on post with comment rule
- View followers post
- Follow / Unfollow
- View your wall and your friends post
- Search another people
- Chat with friends
- Email / SMS OTP
- Notification- Login
- Register
- OTP
- View comment on post
- Comment violent rule checking
if namnv posted a post. knm and baobq will see it in their newsfeed.
if knm posted a post. Only namnv will see it in his newsfeed baobq will not. Because only namnv follow knm
if baobq posted a post. Only namnv will see it in his newsfeed knm will not. Because only namnv follow baobq
- View your wall
- View your friends post
- Search by name
- Act when search
- Chat room list
- Chat with friend
Support search by ward and district (will support city in the future)
prometheus read this link
Grafana custom
after login, you can setup dashboard for monitoringaccess to download dashboard template
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
import template by id or json
- add CDC for new post
- map reducing for postdata






























