Internal tool for assessing team DevOps maturity and readiness, focusing on the highest-impact practices that directly affect software delivery quality and velocity.
This MVP focuses on 20 highest-impact questions covering three core domains:
- Source Control & Development Practices (7 questions) - 35% weight
- Security & Compliance (6 questions) - 30% weight
- CI/CD & Deployment (7 questions) - 35% weight
- Fast assessment completion (~15-20 minutes)
- Clear scoring and maturity levels (1-5)
- Actionable recommendations
- Track progress over time
- Simple internal authentication
Backend:
- Python 3.11+ with FastAPI
- PostgreSQL 15+
- SQLAlchemy ORM
- JWT Authentication
- Poetry for dependency management
Frontend:
- React 18 + TypeScript
- Vite build tool
- Tailwind CSS
- React Query for data fetching
- React Hook Form + Zod validation
- Recharts for visualizations
Infrastructure:
- Docker + Docker Compose
- Containerized development environment
- Docker Desktop (with WSL2 support on Windows)
- Git
-
Clone the repository
git clone <repository-url> cd devops-maturity-model
-
Start all services
docker-compose up -d
This will start:
- PostgreSQL database on port 5432
- Backend API on port 8000
- Frontend app on port 5173
-
Access the application
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
-
Initialize the database (first time only)
# Run migrations inside the backend container docker-compose exec backend alembic upgrade head # Create an admin user (optional - for development) docker-compose exec backend python -c "
from app.database import SessionLocal from app.models import User from app.core.security import get_password_hash
db = SessionLocal() admin = User( email='admin@example.com', full_name='Admin User', hashed_password=get_password_hash('admin123'), is_admin=True ) db.add(admin) db.commit() print('Admin user created: admin@example.com / admin123') "
### Stop Services
```bash
docker-compose down
To remove all data (including database):
docker-compose down -v
devops-maturity-model/
βββ backend/ # FastAPI backend
β βββ app/
β β βββ api/ # API endpoints
β β βββ core/ # Business logic (security, scoring)
β β βββ models.py # Database models
β β βββ schemas.py # Pydantic schemas
β β βββ main.py # FastAPI app
β βββ alembic/ # Database migrations
β βββ tests/ # Backend tests
β βββ Dockerfile
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ services/ # API client
β β βββ types/ # TypeScript types
β βββ Dockerfile
βββ docs/ # Project documentation
β βββ progress-tracker.md
β βββ lessons-learned.md
βββ docker-compose.yml # Docker services configuration
βββ README.md
# Enter backend container
docker-compose exec backend bash
# Run tests
pytest
# Create database migration
alembic revision --autogenerate -m "description"
# Apply migrations
alembic upgrade head
# Format code
black .
# Lint code
ruff check .
# Enter frontend container
docker-compose exec frontend sh
# Install new dependency
npm install <package-name>
# Run linter
npm run lint
# Format code
npm run format
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres
Once the backend is running, visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /api/auth/login
- User loginGET /api/auth/me
- Get current userGET /api/assessments/
- List assessmentsPOST /api/assessments/
- Create assessmentPOST /api/assessments/{id}/responses
- Save responsesPOST /api/assessments/{id}/submit
- Submit for scoringGET /api/assessments/{id}/report
- Get report
- Level 1: Initial (0-20%) - Ad-hoc, manual processes
- Level 2: Developing (21-40%) - Some automation, inconsistent
- Level 3: Defined (41-60%) - Standardized, documented
- Level 4: Managed (61-80%) - Metrics-driven, comprehensive automation
- Level 5: Optimizing (81-100%) - Industry-leading, continuous improvement
- Each question scored 0-5 points
- Domain score = (total points / max possible) Γ 100
- Overall score = weighted average of domain scores
- Spec Document:
devops-maturity-spec-MVP.md
- Progress Tracker:
docs/progress-tracker.md
- Lessons Learned:
docs/lessons-learned.md
- Backend README:
backend/README.md
- Frontend README:
frontend/README.md
# Run all automated tests
./tests/run-all-tests.sh
# Run individual test phases
./tests/scripts/infrastructure.sh # Verify containers and services
./tests/scripts/backend-api.sh # Test all API endpoints
./tests/scripts/frontend-build.sh # Verify frontend builds correctly
./tests/scripts/integration.sh # Test complete workflows
For comprehensive testing including actual user interactions:
# Follow the detailed browser testing guide
cat tests/manual/browser-testing.md
# Use debugging guide if issues found
cat tests/manual/debugging-guide.md
- Complete Test Guide:
tests/EXECUTION-GUIDE.md
- Browser Testing:
tests/manual/browser-testing.md
- Debugging Guide:
tests/manual/debugging-guide.md
- Test Results:
tests/results/
(auto-generated)
# Run infrastructure tests to check system health
./tests/scripts/infrastructure.sh
# Check all container status
docker-compose ps
# View recent logs for all services
docker-compose logs --tail 50
# Check if PostgreSQL is running
docker-compose ps postgres
# Restart database
docker-compose restart postgres
# View database logs
docker-compose logs postgres
# Rebuild backend container
docker-compose build backend
docker-compose up -d backend
# Check logs
docker-compose logs backend
# Restart frontend container
docker-compose restart frontend
# If issue persists, rebuild
docker-compose build frontend
docker-compose up -d frontend
If you can't login after setup:
- Run backend API tests:
./tests/scripts/backend-api.sh
- Check browser console for JavaScript errors
- Follow browser testing guide:
tests/manual/browser-testing.md
- Use debugging guide:
tests/manual/debugging-guide.md
DATABASE_URL
- PostgreSQL connection stringSECRET_KEY
- JWT secret keyACCESS_TOKEN_EXPIRE_MINUTES
- Token expiration
VITE_API_URL
- Backend API URL
See .env.example
files in backend/ and frontend/ directories.
See docs/progress-tracker.md
for detailed development status.
- Project structure setup
- Docker configuration
- Backend API skeleton
- Frontend structure
- Database migrations
- Authentication implementation
- Basic CRUD operations
- Assessment form implementation
- Scoring engine
- Response persistence
- Results visualization
- PDF reports
- Analytics
- Polish & deployment
This is an internal tool. For questions or issues, contact the platform team.
Internal use only - All rights reserved