A simple Task Manager web application built with Flask and Python, featuring a fully automated CI/CD pipeline using Jenkins and Docker.
Note: The main focus of this project is NOT the app itself — it's the DevOps pipeline that automatically builds, tests, and deploys it on every GitHub push.
| Layer | Technology |
|---|---|
| Application | Flask (Python) |
| Database | SQLite |
| Containerization | Docker |
| CI/CD | Jenkins |
| Source Control | GitHub |
| Testing | Pytest |
| Environment | WSL2 (Ubuntu) |
Task-Manager/
└── neon-zenith/
├── app.py # Flask application
├── requirements.txt # Python dependencies
├── Dockerfile # Container configuration
├── Jenkinsfile # CI/CD pipeline definition
├── tasks.db # SQLite database (auto-created)
├── templates/
│ └── index.html # Frontend UI
└── tests/
└── test_app.py # Pytest test suite
Every push to the main branch triggers the Jenkins pipeline automatically:
GitHub Push
↓
Stage 1: Clone — Pull latest code from GitHub
↓
Stage 2: Build — Build Docker image from Dockerfile
↓
Stage 3: Test — Run pytest test suite (4 tests)
↓
Stage 4: Deploy — Stop old container, start new one on port 5000
- Docker installed
- Jenkins running in Docker
- WSL2 (Ubuntu)
git clone https://github.com/Raunakmali08/task-manager.git
cd task-managerdocker run -d --name jenkins -p 8080:8080 -p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:ltsOpen http://localhost:8080 and configure a Pipeline job pointing to this repo.
Click Build Now in Jenkins — the app will be live at http://localhost:5000
| Method | Endpoint | Description |
|---|---|---|
| GET | / | Frontend UI |
| GET | /api/tasks | Get all tasks |
| POST | /api/tasks | Create a task |
| PUT | /api/tasks/:id | Update a task |
| DELETE | /api/tasks/:id | Delete a task |
Raunak Mali — Cloud/DevOps Engineer
GitHub: @Raunakmali08
Instagram: @raunakoncloud