DevPulse is a DevOps logbook for collecting deployment logs, system alerts, and troubleshooting notes. The goal is to help a team quickly understand what happened during a failed deployment or incident by showing the raw information together with AI-generated summaries and suggested fixes.
-
Client:
client/- Dashboard UI for developers and operators.
- Shows logs, alerts, notes, and AI-generated insights.
-
Server microservices:
services/spring-*- Java 21 / Spring Boot 3 services.
- The server side is split into at least three microservices with separate responsibilities.
- Exposes REST APIs and coordinates persistent storage and GenAI analysis.
-
GenAI:
services/py-intelligence/- Separate Python service.
- Produces summaries, troubleshooting hints, and possible next steps from log content.
-
Infrastructure:
infra/- Place for Docker Compose, Kubernetes or Helm files, database setup, Prometheus, and Grafana.
repo/
├── api/ # Single source of truth
│ ├── openapi.yaml # Versioned spec (v1, v2...)
│ └── scripts/ # Helper scripts for code generation
├── services/
│ ├── spring-ingestion/ # Spring Boot service for receiving logs/events
│ ├── spring-logbook/ # Spring Boot service for stored logs and notes
│ ├── spring-alerts/ # Spring Boot service for alerts/incident state
│ └── py-intelligence/ # Python GenAI service
├── client/ # Client component
├── infra/ # Docker Compose, Kubernetes, database, monitoring
└── .github/workflows/ # CI pipelines
client sends requests to the Spring Boot backend services. The backend services manage logs, notes, alerts, and persistent storage. When AI analysis is needed, the backend calls py-intelligence through a defined JSON/HTTP interface. The OpenAPI file in api/ is the shared API contract.
Use this format for feature and bugfix branches:
(feat|fix)/(issue_id)/(name_of_issue)
Examples:
feat/12/add-log-ingestion
fix/18/handle-empty-ai-response
To run this project locally, you must have the following installed:
- Docker (Docker Desktop recommended for Mac/Windows)
- Docker Compose
(Note: You do not need Java, Python, or Node.js installed on your host machine to run the application, as everything runs inside the containers!)
cd infra
docker-compose up --buildRun all commands from the repository root unless noted otherwise.
cd services/spring-alerts
./gradlew :app:clean :app:test :app:build
./gradlew :app:bootRuncd services/spring-ingestion
./gradlew :app:clean :app:test :app:build
./gradlew :app:bootRuncd services/spring-logbook
./gradlew :app:clean :app:test :app:build
./gradlew :app:bootRuncd client
npm ci
npm run lint
npm run test -- --run
npm run build
npm run devUse these for non-watch runs in CI:
# Spring services (run per service directory)
./gradlew :app:test
# Client
npm run test -- --run