1. grpc - "google.golang.org/grpc"
2. goqu - "github.com/doug-martin/goqu/v9"
3. kafka - "github.com/IBM/sarama"
4. redis - "github.com/go-redis/redis/v8"
5. websocket - "github.com/gorilla/websocket"
6. gorm - "gorm.io/gorm" (post-service only)
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"
13. DSA: Trie - for violent comment rule checking
14. Nginx: for load balancing
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