diff --git a/kevingeorge@mulearn/FinalProject/Dockerfile b/kevingeorge@mulearn/FinalProject/Dockerfile
new file mode 100644
index 00000000..f18fb0d7
--- /dev/null
+++ b/kevingeorge@mulearn/FinalProject/Dockerfile
@@ -0,0 +1,5 @@
+# Use lightweight nginx image
+FROM nginx:alpine
+
+# Copy index.html into nginx default path
+COPY index.html /usr/share/nginx/html/index.html
\ No newline at end of file
diff --git a/kevingeorge@mulearn/FinalProject/README.md b/kevingeorge@mulearn/FinalProject/README.md
new file mode 100644
index 00000000..c3f55c7c
--- /dev/null
+++ b/kevingeorge@mulearn/FinalProject/README.md
@@ -0,0 +1,43 @@
+# π My First Scalable Web App
+
+## π Overview
+This project demonstrates deploying a containerized web application using Docker and Kubernetes (KIND), showcasing scalability and self-healing capabilities.
+
+## βοΈ Tech Stack
+- Docker
+- Kubernetes (KIND)
+- Nginx
+
+## π Features
+- Containerized web app using Docker
+- Kubernetes deployment with 3 replicas
+- Service exposure using NodePort
+- Environment variable injection (STUDENT_NAME)
+- Self-healing (auto pod recreation)
+
+## π Project Structure
+FinalProject/
+βββ Dockerfile
+βββ deployment.yaml
+βββ service.yaml
+βββ index.html
+βββ screenshots/
+
+## π§ͺ Steps Performed
+1. Built Docker image
+2. Loaded image into KIND cluster
+3. Deployed app with 3 replicas
+4. Exposed service using NodePort
+5. Verified scaling and self-healing
+
+## πΈ Screenshots
+- Pods running
+- Service details
+- Application in browser
+- Self-healing demonstration
+
+## π§ Key Learnings
+- Kubernetes deployment & scaling
+- Debugging image pull errors
+- Service exposure in KIND
+- Real-world DevOps workflow
\ No newline at end of file
diff --git a/kevingeorge@mulearn/FinalProject/deployment.yaml b/kevingeorge@mulearn/FinalProject/deployment.yaml
new file mode 100644
index 00000000..2d172a01
--- /dev/null
+++ b/kevingeorge@mulearn/FinalProject/deployment.yaml
@@ -0,0 +1,23 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: finalproject-deployment
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ app: final-app
+ template:
+ metadata:
+ labels:
+ app: final-app
+ spec:
+ containers:
+ - name: final-app
+ image: final-app
+ imagePullPolicy: Never
+ ports:
+ - containerPort: 80
+ env:
+ - name: STUDENT_NAME
+ value: "Kevin George"
\ No newline at end of file
diff --git a/kevingeorge@mulearn/FinalProject/index.html b/kevingeorge@mulearn/FinalProject/index.html
new file mode 100644
index 00000000..17f2d682
--- /dev/null
+++ b/kevingeorge@mulearn/FinalProject/index.html
@@ -0,0 +1,381 @@
+
+
+
+
+
+ Kevin George β DevOps Project
+
+
+
+
+
+
+
+
+
+
Live on Kubernetes
+
+
+ My First Scalable Web App
+
+
+
+ A containerised web application deployed to a local Kubernetes cluster using Docker + KIND β
+ demonstrating replicas, self-healing, and environment-variable injection.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM (1).jpeg b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM (1).jpeg
new file mode 100644
index 00000000..3d892a00
Binary files /dev/null and b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM (1).jpeg differ
diff --git a/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM.jpeg b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM.jpeg
new file mode 100644
index 00000000..e9c5b754
Binary files /dev/null and b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.40.25 AM.jpeg differ
diff --git a/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.44.11 AM.jpeg b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.44.11 AM.jpeg
new file mode 100644
index 00000000..04487a92
Binary files /dev/null and b/kevingeorge@mulearn/FinalProject/screenshots/WhatsApp Image 2026-04-08 at 11.44.11 AM.jpeg differ
diff --git a/kevingeorge@mulearn/FinalProject/service.yaml b/kevingeorge@mulearn/FinalProject/service.yaml
new file mode 100644
index 00000000..457f36da
--- /dev/null
+++ b/kevingeorge@mulearn/FinalProject/service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: final-app-service
+spec:
+ type: NodePort
+ selector:
+ app: final-app
+ ports:
+ - port: 80
+ targetPort: 80
+ nodePort: 30008
\ No newline at end of file
diff --git a/kevingeorge@mulearn/README.md b/kevingeorge@mulearn/README.md
new file mode 100644
index 00000000..cb7f2ce8
--- /dev/null
+++ b/kevingeorge@mulearn/README.md
@@ -0,0 +1,51 @@
+
+
+
+
+
+# π DevOps Learning Journey - Shipyard Foundations
+
+Hi, I'm Kevin George π
+This repository contains my hands-on work while learning DevOps concepts.
+
+---
+
+## π Tasks Overview
+
+### π³ Task-2: Docker & Containers
+- Created Dockerfile for Python app
+- Built Docker image
+- Ran container locally
+
+---
+
+### βοΈ Task-3: CI/CD with GitHub Actions
+- Created static website
+- Configured GitHub Actions workflow
+- Deployed using GitHub Pages
+
+---
+
+### βΈοΈ Task-4: Kubernetes (KIND)
+- Created Kubernetes cluster using KIND
+- Deployed application using Deployment
+- Exposed using NodePort Service
+- Verified using browser
+
+---
+
+## π οΈ Tech Stack
+- Docker
+- GitHub Actions (CI/CD)
+- Kubernetes (KIND)
+- Git & GitHub
+
+---
+
+## π Goal
+To become a Cloud/DevOps Engineer by building real-world projects.
+
+---
+
+## π Connect with me
+- GitHub: https://github.com/KevinGeorge100
diff --git a/kevingeorge@mulearn/Task-2/Dockerfile b/kevingeorge@mulearn/Task-2/Dockerfile
new file mode 100644
index 00000000..eb0a94ef
--- /dev/null
+++ b/kevingeorge@mulearn/Task-2/Dockerfile
@@ -0,0 +1,7 @@
+FROM python:3.9-slim
+
+WORKDIR /app
+
+COPY . .
+
+CMD ["python", "-u", "script.py"]
diff --git a/kevingeorge@mulearn/Task-2/script.py b/kevingeorge@mulearn/Task-2/script.py
new file mode 100644
index 00000000..e6d64ba0
--- /dev/null
+++ b/kevingeorge@mulearn/Task-2/script.py
@@ -0,0 +1,7 @@
+import time
+
+print("π Container Started")
+
+while True:
+ print("Hello World")
+ time.sleep(5)
diff --git a/kevingeorge@mulearn/Task-3/index.html b/kevingeorge@mulearn/Task-3/index.html
new file mode 100644
index 00000000..f05190ad
--- /dev/null
+++ b/kevingeorge@mulearn/Task-3/index.html
@@ -0,0 +1,620 @@
+
+
+
+
+
+ Kevin George Β· DevOps Portfolio
+
+
+
+
+
+
+
+
+
+
+
+
+
Assignment 3 Β· CI/CD Pipeline Basics
+
Kevin George.
+
+ B.Tech CSE Β· AJCE Β· 2027
+ Learning DevOps β one pipeline at a time. This page is auto-deployed
+ via GitHub Actions to GitHub Pages
+ on every push to main. Zero manual uploads. Pure automation.
+
+
+
+
+
+
+
+
+
+ bash β shipyard-foundations
+
+
+
+
+
+
+
CI/CD Pipeline Β· GitHub Actions
+
+
+
β¬οΈ
β
+
Checkout
+
actions/checkout@v4
+
2s
+
+
+
βοΈ
β
+
Setup Pages
+
configure-pages@v4
+
1s
+
+
+
π¦
β
+
Upload
+
upload-pages-artifact@v3
+
3s
+
+
+
π
β
+
Deploy
+
deploy-pages@v4 Β· live
+
5s
+
+
+
+
+
+
+
Stack Used
+
+
+
π
+
+
GitHub Actions
+
Workflow runner Β· YAML-based CI/CD automation on push events
+
+
+
+
π
+
+
GitHub Pages
+
Static site hosting Β· served from Actions artifact, not a branch
+
+
+
+
π
+
+
Git
+
Version control Β· push to main triggers the full pipeline
+
+
+
+
π
+
+
HTML / CSS
+
Single-file static site Β· the artifact being deployed
+
+
+
+
π
+
+
OIDC Permissions
+
id-token write + pages write Β· secure deploy without PATs