This project is a simple user authentication API built with Python (Flask) and extended with a modern Bootstrap-based frontend UI.
The application supports user registration, login, password change, deletion, and listing all users.
The goal of this project is to demonstrate essential DevOps practices, including:
- Dockerization
- Continuous Integration (CI)
- Artifact creation
- Automated Docker image build
- Uploading the image to a public container registry
- Using GitHub Actions to automate everything
This project fulfills the requirements of the university DevOps assignment.
- User registration
- Secure password hashing (SHA-256)
- Login authentication
- Password change
- User deletion
- List all registered users
- Lightweight JSON storage
- Clean, modern Bootstrap 5 UI
- Docker/Local runtime status badge
- Real-time API response viewer
- Responsive card-based layout
| Category | Technology |
|---|---|
| Backend | Python 3.12, Flask |
| Frontend | HTML, CSS, Bootstrap 5, JavaScript |
| Testing | Pytest |
| Containerization | Docker |
| CI/CD | GitHub Actions |
| Registry | GitHub Container Registry (GHCR) |
| Storage | JSON file |
Create virtual environment:
python -m venv venvActivate it:
Windows PowerShell:
.\venv\Scripts\Activate.ps1Install dependencies:
pip install -r requirements.txtRun the application:
python -m app.mainOpen in browser:
Build the image:
docker build -t auth-api-devops .Run the container:
docker run -p 8080:8080 auth-api-devopsThen visit:
The UI will automatically detect that it is running inside Docker.
Tests are written using pytest.
Run manually:
pytestThe CI pipeline also creates an artifact:
pytest-report.txt
This file is uploaded in every pipeline run.
The project contains a full CI workflow located at:
.github/workflows/ci.yml
The pipeline performs:
- Install Python dependencies
- Run pytest
- Upload test report as an artifact
- Build Docker image using the project’s Dockerfile
- Log in to GHCR
- Push image automatically to a public registry:
ghcr.io/nemodamark/auth-api-devops:latest
This fully satisfies the assignment requirements of:
- test execution
- artifact generation
- Docker build
- public Docker registry push
You can pull the image using:
docker pull ghcr.io/nemodamark/auth-api-devops:latestauth-api-devops/
│
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── routes.py
│ ├── storage.py
│ └── tests/
│ └── test_auth.py
│
├── frontend/
│ ├── index.html
│ ├── app.js
│ └── style.css
│
├── users.json
├── Dockerfile
├── requirements.txt
└── .github/workflows/ci.yml
| Requirement | Status |
|---|---|
| CI pipeline created | ✔ |
| Unit test executed in pipeline | ✔ |
| Artifact produced | ✔ |
| Docker image built | ✔ |
| Docker image pushed to public registry | ✔ |
| Dockerfile included | ✔ |
| Working application | ✔ |
All requirements of the university DevOps assignment are completed.
Nemoda Márk Levente
2025 – DevOps University Assignment
GitHub Profile: https://github.com/NemodaMark
This project demonstrates real DevOps CI/CD practices in a practical, understandable way.
The automated GitHub Actions pipeline and Docker integration make this app fully production-ready.