A Twitter clone created with Golang, PostgreSQL, Redis, VueJS, Vite and element-plus integrated Prometheus, Grafana and Jaeger.
- Clean Architecture
- Metrics and alerting with Prometheus
- Monitor metrics with Grafana
- Monitor and troubleshoot transactions with Jaeger
- Backend features
- Users
- Create User
- Get User Info By User ID, User Name
- Update User Info
- Delete User
- Search User By Name, Email, User Name
- Tweets
- Create Tweet With Image
- Get Tweet By Tweet ID, User ID (Author), Reply
- Delete Tweet
- Like
- Like Tweet
- Get User-Liked Tweets
- Get Liked-Tweet Users
- Cancel Like Tweet
- Follow
- Follow User
- Get Followers Of User
- Get Following Of User
- Unfollow User
- Middleware
- Role Management
- Verify Admin or Owner
- Verify CSRF token
- Verify Session
- Log
- Rolling Log Files Automatically
# Clone the project
git clone
# Enter project directory
cd go-twitter
# Install dependencies
make tidy
# Run database environment by docker-compose
# Jaeger UI localhost:16686
# Prometheus UI localhost:9090
# Grafana UI localhost:3000
make local
# Run backend
make run
# Enter frontend directory
cd web/ui
# Install
yarn
# Run frontend
yarn run dev