Skip to content

Latest commit

History

History
131 lines (117 loc) 路 14.1 KB

File metadata and controls

131 lines (117 loc) 路 14.1 KB

Project Catalog

Machine-readable metadata lives in each top-level project-* directory as project.yaml and follows project.schema.json. The catalog distinguishes learning/reference material from projects that are deployable demos or templates, and flags cloud cost risk before anyone runs infrastructure commands.

Metadata Format

Required fields: schema_version, project.number, project.slug, project.name, classification, status, deployability, stack, cloud, iac, ci_cd, cost_risk, security_posture, validation.command, and notes.

Classification values are learning or deployable. Cost risk is low, medium, or high. Security posture is baseline, devsecops, hardened, or needs_review.

Optional learner fields live under learning and help students choose the right project without changing the deployability catalog:

learning:
  estimated_time: 2-4 hours
  prerequisites:
    - Docker basics
    - GitHub account
  learning_paths:
    - containers
    - ci-cd
  badges:
    - local-first
    - beginner-friendly

Supported learning paths are cloud-foundations, containers, ci-cd, infrastructure-as-code, kubernetes, devsecops, observability, serverless, platform-engineering, and security.

Supported learner badges are beginner-friendly, local-first, free-tier-aware, cloud-cost-risk, portfolio-ready, team-workflow, security-focused, needs-cloud-account, cleanup-required, and capstone.

Use LEARNING_TRACKER.md as a student worksheet for tracking selected projects, prerequisites, validation evidence, cleanup, and portfolio notes.

Projects

# Project Classification Status Deployability Cloud Cost Security Validation
1 Java Application on AWS 3-Tier Architecture deployable cloud_lab iac_ready aws high baseline terraform -chdir=terraform fmt -check
2 Scalable AWS VPC Architecture learning cloud_lab reference_only aws medium baseline test -f README.md
3 Linux Fundamentals for Cloud and DevOps learning reference reference_only none low baseline test -f README.md
4 Django Application on AWS ECS and ECR deployable cloud_lab container_ready aws medium baseline python3 -m compileall .
5 Java App with Docker, Jenkins, and Kubernetes deployable cloud_lab ci_cd_ready aws medium baseline kubectl apply --dry-run=client -f hello-world/regapp-deploy.yml -f hello-world/regapp-service.yml
6 Advanced CI/CD Pipeline with DevOps Tools deployable devsecops_lab ci_cd_ready aws medium devsecops mvn -q -DskipTests=false test
7 Azure DevOps Journey with AKS and Terraform learning cloud_lab ci_cd_ready azure high baseline test -f README.md
8 2048 Game on Amazon EKS deployable cloud_lab kubernetes_ready aws medium baseline kubectl apply --dry-run=client -f 2048-deployment.yaml -f mygame-svc.yaml
9 Netflix Clone DevSecOps CI/CD with Monitoring deployable devsecops_lab ci_cd_ready aws medium devsecops test -f jenkinsfile
10 .NET CI/CD with Azure App Service learning reference reference_only azure medium baseline test -f README.md
11 Two-Tier AWS Infrastructure with Terraform deployable cloud_lab iac_ready aws medium baseline terraform fmt -check
12 Super Mario on Kubernetes with Terraform learning reference reference_only aws medium baseline test -f README.md
13 Zomato Clone Secure DevSecOps Deployment learning reference reference_only aws medium devsecops test -f README.md
14 Android CI/CD with GitHub Actions deployable ci_lab ci_cd_ready none low baseline ./android-demo-app/gradlew -p android-demo-app tasks
15 E-Commerce Three-Tier App on EKS with Helm learning reference reference_only aws high baseline test -f README.md
16 Jenkins and Argo CD Kubernetes Deployment learning reference reference_only none medium baseline test -f README.md
17 Deploying an App to AKS with Azure DevOps learning reference reference_only azure medium baseline test -f README.md
18 Java Full CI/CD with Jenkins, SonarQube, Argo CD, Helm, and Kubernetes deployable devsecops_lab ci_cd_ready none medium devsecops mvn -q -f spring-boot-app/pom.xml test
19 EKS Cluster and App Delivery with Jenkins and Terraform deployable cloud_lab ci_cd_ready aws high baseline terraform -chdir=tf-aws-eks fmt -check
20 Azure DevOps Terraform Pipeline deployable cloud_lab ci_cd_ready azure medium baseline terraform -chdir=terraform fmt -check
21 AWS CodePipeline Video Streaming App deployable cloud_lab ci_cd_ready aws medium baseline npm run build
22 AWS Fully Serverless Architecture with CI/CD deployable cloud_lab iac_ready aws medium baseline terraform fmt -check
23 Swiggy Clone Blue-Green ECS Deployment deployable cloud_lab ci_cd_ready aws medium devsecops npm --prefix Swiggy_clone install --package-lock-only --ignore-scripts
24 DotNet Monitoring DevSecOps Pipeline deployable devsecops_lab ci_cd_ready none medium devsecops dotnet test DotNet-monitoring
25 Petshop Java DevSecOps Deployment learning reference reference_only none medium devsecops test -f README.md
26 AWS Infrastructure with Terraform and GitLab CI/CD deployable cloud_lab ci_cd_ready aws medium baseline terraform fmt -check -recursive
27 Reddit App on EKS with Argo CD and Monitoring learning reference reference_only aws medium devsecops test -f README.md
28 OpenAI Chatbot UI on EKS with Jenkins and Terraform deployable devsecops_lab ci_cd_ready aws high devsecops npm --prefix Chatbot-UI test
29 Three-Tier Voting App with Argo CD and Azure DevOps learning reference reference_only azure medium baseline test -f README.md
30 Blog App on EKS with Jenkins and Security Tools deployable devsecops_lab ci_cd_ready aws high devsecops mvn -q -f app/pom.xml test
31 Cloud Native Monitoring App deployable local_validated container_ready aws medium hardened make test
32 Tetris DevSecOps Kubernetes Pipeline deployable devsecops_lab ci_cd_ready aws high devsecops npm --prefix Tetris-V1 test --if-present
33 Node CI/CD to EKS with GitHub Actions deployable local_validated ci_cd_ready aws high hardened make test
34 Node CI/CD to ECS with Terraform and GitHub Actions deployable cloud_lab ci_cd_ready aws medium baseline terraform -chdir=terraform fmt -check
35 Progressive DevSecOps Pipeline Series deployable devsecops_lab ci_cd_ready aws medium devsecops mvn -q -f step-2-sast-sonarcloud/pom.xml test
36 AWS Real-Time Dev to Pre-Prod to Production Deployment deployable cloud_lab ci_cd_ready aws medium hardened test -f buildspec.yml -a -f appspec.yml
37 Provision EKS Cluster with Terraform deployable cloud_lab iac_ready aws high hardened terraform fmt -check
38 Docker and Terraform Three-Tier Architecture deployable cloud_lab iac_ready aws high hardened docker compose config
39 GitHub Actions with AWS and Terraform deployable cloud_lab ci_cd_ready aws medium baseline terraform fmt -check
40 Kubernetes Dashboard with Trivy deployable local_demo local_only none low devsecops node --check app.js && python3 -m py_compile systeminfo.py
41 Online Boutique Microservices Assignment deployable local_lab kubernetes_ready none low baseline kubectl apply --dry-run=client -f deploy
42 Serverless REST API with DynamoDB deployable cloud_lab iac_ready aws medium hardened terraform -chdir=terraform fmt -check
43 Scalable Web App on ECS Fargate with Terraform deployable cloud_lab iac_ready aws medium baseline terraform fmt -check
44 DevSecOps 101 Spring Boot Pipeline deployable devsecops_lab ci_cd_ready aws medium devsecops ./mvnw test
45 Jenkins CI/CD with Argo CD and Vault deployable devsecops_lab ci_cd_ready aws medium devsecops test -f Jenkinsfile
46 Advanced EKS Cluster with Terraform Modules deployable cloud_lab iac_ready aws high hardened terraform fmt -check
47 Django Multitenant SaaS Ecommerce deployable local_validated container_ready aws high hardened make test
48 Terraform AWS EKS Provisioning deployable cloud_lab iac_ready aws high hardened terraform fmt -check
49 Text Encryption Cybersecurity Demo learning local_demo local_only none low baseline node --check main.js
50 ArgoCD GitOps Home Lab learning local_lab kubernetes_ready none low baseline kubectl apply --dry-run=client -f k8s/
51 OpenTelemetry Observability Home Lab learning local_lab container_ready none low baseline docker compose config
52 OpenTofu AWS Free-Tier Lab learning cloud_lab iac_ready aws medium baseline test -f main.tf -a -f versions.tf
53 Supply Chain Security Lab learning ci_lab ci_cd_ready none low devsecops node --check app/server.js
54 Progressive Delivery Home Lab learning local_lab kubernetes_ready none low baseline kubectl apply --dry-run=client -f rollouts/

Validation

Run the parser below from the repository root to verify that every top-level project-* directory has valid metadata and that project numbers match directory names:

python3 - <<'PY'
from pathlib import Path
import re, yaml
projects = sorted(Path('.').glob('project-*'))
seen = set()
for d in projects:
    m = re.match(r'project-(\d{2})-(.+)$', d.name)
    if not m:
        raise SystemExit(f'bad directory name: {d}')
    metadata = d / 'project.yaml'
    if not metadata.exists():
        raise SystemExit(f'missing metadata: {metadata}')
    data = yaml.safe_load(metadata.read_text())
    required = ['schema_version', 'project', 'classification', 'status', 'deployability', 'stack', 'cloud', 'iac', 'ci_cd', 'cost_risk', 'security_posture', 'validation', 'notes']
    missing = [key for key in required if key not in data]
    if missing:
        raise SystemExit(f'{metadata}: missing {missing}')
    number = int(m.group(1))
    if data['schema_version'] != 1 or data['project']['number'] != number or data['project']['slug'] != m.group(2):
        raise SystemExit(f'{metadata}: project identity mismatch')
    if data['classification'] not in {'learning', 'deployable'}:
        raise SystemExit(f'{metadata}: invalid classification')
    if data['cost_risk'] not in {'low', 'medium', 'high'}:
        raise SystemExit(f'{metadata}: invalid cost_risk')
    if data['security_posture'] not in {'baseline', 'devsecops', 'hardened', 'needs_review'}:
        raise SystemExit(f'{metadata}: invalid security_posture')
    if not data['stack'] or not data['validation'].get('command'):
        raise SystemExit(f'{metadata}: stack and validation.command are required')
    seen.add(number)
expected = set(range(1, len(projects) + 1))
if seen != expected:
    raise SystemExit(f'project number gap: expected {sorted(expected)}, got {sorted(seen)}')
print(f'validated {len(projects)} project metadata files')
PY