A production-style DevOps project demonstrating how to build, containerize, and deploy a backend application using a fully automated CI/CD pipeline.
SkyForge API is a simple Node.js backend service designed to showcase real-world DevOps practices.
This project goes beyond just building an application — it demonstrates how to:
- Containerize applications with Docker
- Automate testing and builds using GitHub Actions
- Push Docker images to Docker Hub
- Deploy applications automatically to AWS Elastic Beanstalk
- Use environment variables in production
- Implement a branch-based workflow
- Backend: Node.js (Express)
- Containerization: Docker
- CI/CD: GitHub Actions
- Container Registry: Docker Hub
- Cloud Platform: AWS Elastic Beanstalk
Developer → GitHub → GitHub Actions → Docker Hub → AWS Elastic Beanstalk → Users
- ✅ Run automated tests
- 🐳 Build Docker image
- 📦 Push image to Docker Hub
- ☁️ Deploy automatically to AWS Elastic Beanstalk
Once deployed, the API exposes the following endpoints:
GET /→ API statusGET /health→ Health checkGET /api/info→ App metadata (name, version, environment)GET /api/time→ Server time
skyforge-api/
│
├── src/
│ ├── app.js
│ └── server.js
│
├── tests/
│ └── app.test.js
│
├── .github/
│ └── workflows/
│ └── ci.yml
│
├── Dockerfile
├── Dockerrun.aws.json
├── .dockerignore
├── .gitignore
├── package.json
└── README.md
git clone https://github.com/Kennethidisi/skyforge-api.git
cd skyforge-api
npm install
npm run dev
npm test
docker build -t skyforge-api .
docker run -p 3000:3000 \
-e PORT=3000 \
-e APP_NAME="SkyForge API" \
-e APP_VERSION=1.0.0 \
-e NODE_ENV=production \
skyforge-api
Deployment is fully automated via GitHub Actions.
Dockerrun.aws.json→ tells AWS which Docker image to run- GitHub Actions → handles build, push, and deploy
- AWS Elastic Beanstalk → hosts the application
Configured in AWS Elastic Beanstalk:
PORT=3000
APP_NAME=SkyForge API
APP_VERSION=1.0.0
NODE_ENV=production
main→ production (triggers deployment)dev→ integration
- CI/CD pipelines require precision — small mistakes can break the entire workflow
- Docker image tagging (latest vs SHA) is critical for traceability
- AWS deployment involves more than just pushing code — understanding the platform matters
- Debugging pipelines is where real DevOps learning happens
- Use image SHA for deployments instead of
latest - Add staging environment
- Implement AWS OIDC (remove static credentials)
- Add logging and monitoring (CloudWatch)
- Optimize Docker image with multi-stage builds
This project represents a complete DevOps workflow:
From writing code → to deploying it in the cloud automatically.
Kenneth Idisi
- GitHub: https://github.com/Kennethidisi
- LinkedIn: https://www.linkedin.com/in/idisi
Give it a star and feel free to fork 🚀