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"
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
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 region and ward to search
- add trie build for search location
- add CDC for new post
- map reducing for postdata