REST API that exposes real-time system health metrics via HTTP — monitor your server without accessing it directly.
I built this project to understand in practice how an automated API works end to end from writing the endpoints in Node.js, to containerizing with Docker, to having GitHub Actions build and publish the image automatically on every push.
It's the natural evolution of my Docker Bash Toolkit: the same server monitoring problems, now exposed via HTTP instead of manual scripts.
system-status-api/
├── .github/
│ └── workflows/
│ └── deploy.yml ← CI/CD pipeline
├── src/
│ ├── index.js ← server entry point
│ └── routes/
│ ├── health.js
│ ├── info.js
│ ├── disk.js
│ └── memory.js
├── Dockerfile
├── docker-compose.yml
└── package.json
Every push to main automatically:
- Builds the Docker image
- Logs in to Docker Hub
- Pushes the image
No manual steps needed.
- How to structure a Node.js API with Express and separate routes by file
- Docker Compose for local orchestration — new concept for me in this project
- How a full CI/CD pipeline works in practice: push code → build image → publish automatically
- The importance of
package.jsonand how Docker caches dependency layers separately from application code
The hardest parts were getting package.json to work correctly inside the container
and understanding Docker Compose for the first time — but both clicked once I saw them working together.
- Node.js + Express — REST API
- Docker + Alpine Linux — containerization
- Docker Compose — local orchestration
- GitHub Actions — CI/CD pipeline
- Docker Hub — image registry
Isac Andrade Software Engineering student at Universidade Católica de Brasília, learning DevOps hands-on.