Event Handler is a Go-based service for tracking user activity events. It stores events in PostgreSQL, exposes Prometheus metrics, and supports visualization with Grafana. A simple React client allows creating and viewing events.
Details here: TASK.md
- REST API for events
- React client
- PostgreSQL
- Configurable event aggregation
Postman collection ./other/Events handler.json
config.yaml - already contains the correct parameters for run it in docker; do not change it for proper work.
localhost:8080 - backend
localhost:3001 - frontend (react client)
localhost:8081 - postgres web ui (username: user@domain.com password: password)
address: db
port: 5432
database: events
username: user
password: password
localhost:3000 - grafana (username: admin password: admin)
http://prometheus:9090
app:
port: 8080 # backend port
base_path: "/api" # base path for api call
db_url: "postgresql://user:password@db/events?sslmode=disable" # PostgreSQL connection url
aggregation_interval_seconds: "30" # Aggregation interval in seconds. If you wanna 4 hours, set 14400-
Specify parameters in
config.yaml(it is already set); -
Run docker compose:
docker compose up -d- Run database:
docker compose -f ./docker-compose-db.yaml up -d- Specify parameters in
config.yaml:
app:
port: 8080
base_path: "/api"
db_url: "postgresql://user:password@localhost/events?sslmode=disable"
aggregation_interval_seconds: "30"- Run backend:
make run- Run react client:
cd ./other/reactclient
PORT=3001 npm start