CloudTasker Pro is a cloud-native Kubernetes monitoring and task management dashboard. It combines a modern SaaS-style interface with containerized backend services, Kubernetes deployment manifests, live infrastructure metrics, and task management features.
The UI is inspired by modern cloud platforms such as Vercel, Datadog, and Grafana, with a dark glassmorphism design, animated components, and real-time monitoring visuals.
-
Live Infrastructure Metrics
Monitor CPU usage, memory usage, pod count, request volume, and API latency with auto-refreshing metrics. -
Task Management
Create, complete, delete, and prioritize deployment or infrastructure-related tasks. -
Interactive Charts
Visualize CPU, memory, and latency trends using responsive charts. -
Activity Log
View a simulated live Kubernetes event stream for deployments, scaling events, health checks, and alerts. -
Architecture Diagram
Display a visual overview of the application’s Kubernetes-based architecture. -
Cloud-Native Deployment
Includes Dockerfiles, Docker Compose configuration, and Kubernetes manifests. -
Modern SaaS UI
Dark theme, glassmorphism cards, gradients, icons, and smooth animations.
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite, Tailwind CSS |
| Animations | Framer Motion |
| Charts | Recharts |
| HTTP Client | Axios |
| Icons | Lucide React |
| Backend | Python Flask, Flask-CORS |
| Production Server | Gunicorn, Nginx |
| Containerization | Docker, Docker Compose |
| Orchestration | Kubernetes |
| Local Cluster | Minikube |
cloudtasker-pro/
├── frontend/ # React + Vite + Tailwind CSS frontend
│ ├── src/
│ │ ├── components/
│ │ │ ├── Navbar.jsx
│ │ │ ├── MetricCard.jsx
│ │ │ ├── TaskManager.jsx
│ │ │ ├── ActivityLog.jsx
│ │ │ ├── CloudMonitoring.jsx
│ │ │ └── ArchitectureDiagram.jsx
│ │ ├── hooks/
│ │ │ ├── useMetrics.js
│ │ │ └── useTasks.js
│ │ ├── utils/
│ │ │ └── api.js
│ │ ├── App.jsx
│ │ ├── main.jsx
│ │ └── index.css
│ ├── Dockerfile
│ ├── nginx.conf
│ └── package.json
├── backend/ # Python Flask API
│ ├── app.py
│ ├── requirements.txt
│ └── Dockerfile
├── k8s/ # Kubernetes manifests
│ ├── 00-namespace.yaml
│ ├── 01-configmap.yaml
│ ├── 02-backend.yaml
│ └── 03-frontend.yaml
├── docker-compose.yml
└── README.md
graph TB
USER[User Browser] --> UI[React Dashboard<br/>Vite + Tailwind CSS]
UI --> NGINX[Nginx Frontend Server]
NGINX --> API[Flask REST API<br/>Gunicorn]
API --> HEALTH[Health Check API<br/>/api/health]
API --> METRICS[Metrics API<br/>/api/metrics]
API --> TASKS[Task API<br/>/api/tasks]
METRICS --> MONITOR[Cloud Monitoring Panel]
TASKS --> TASKMANAGER[Task Manager]
HEALTH --> STATUS[System Status Cards]
API --> DATA[In-Memory App Data<br/>Tasks + Simulated Metrics]
UI --> CHARTS[Charts Layer<br/>Recharts]
UI --> ACTIVITY[Activity Log<br/>Kubernetes Event Stream]
UI --> ARCH[Architecture Diagram]
DOCKER[Docker Compose] --> FRONTEND_CONTAINER[Frontend Container]
DOCKER --> BACKEND_CONTAINER[Backend Container]
FRONTEND_CONTAINER --> NGINX
BACKEND_CONTAINER --> API
K8S[Kubernetes Cluster] --> NS[cloudtasker Namespace]
NS --> FE_DEPLOY[Frontend Deployment]
NS --> BE_DEPLOY[Backend Deployment]
NS --> CONFIG[ConfigMap]
FE_DEPLOY --> FE_SVC[Frontend Service<br/>NodePort 30080]
BE_DEPLOY --> BE_SVC[Backend Service<br/>ClusterIP]
FE_SVC --> NGINX
BE_SVC --> API
CONFIG --> API
USER --> FE_SVC
style UI fill:#1e40af,stroke:#3b82f6,stroke-width:2px,color:#fff
style API fill:#065f46,stroke:#10b981,stroke-width:2px,color:#fff
style NGINX fill:#7c2d12,stroke:#f97316,stroke-width:2px,color:#fff
style K8S fill:#1e3a8a,stroke:#6366f1,stroke-width:2px,color:#fff
style DOCKER fill:#0f766e,stroke:#14b8a6,stroke-width:2px,color:#fff
style METRICS fill:#581c87,stroke:#a855f7,stroke-width:2px,color:#fff
style TASKS fill:#92400e,stroke:#f59e0b,stroke-width:2px,color:#fff
style HEALTH fill:#064e3b,stroke:#22c55e,stroke-width:2px,color:#fff
| Component | Responsibility |
|---|---|
| React Dashboard | Main user interface for metrics, tasks, activity logs, and architecture view |
| Nginx Frontend Server | Serves the production React build and forwards API traffic |
| Flask REST API | Provides health, metrics, and task management endpoints |
| Metrics API | Supplies simulated CPU, memory, pod, request, and latency metrics |
| Task API | Handles task creation, deletion, completion toggling, and priority labels |
| Activity Log | Displays simulated Kubernetes deployment and cluster events |
| Docker Compose | Runs frontend and backend containers together for local deployment |
| Kubernetes Manifests | Deploy the application using namespace, services, deployments, and config maps |
| Frontend Service | Exposes the React/Nginx frontend through a NodePort service |
| Backend Service | Exposes the Flask backend internally through a ClusterIP service |
Make sure the following tools are installed:
- Node.js 18+
- Python 3.10+
- Docker
- Docker Compose
- kubectl
- Minikube or another Kubernetes cluster
You can run the frontend and backend separately during development.
cd backend
pip install -r requirements.txt
python app.pyThe backend will run at:
http://localhost:5000
Open a new terminal:
cd frontend
npm install
npm run devThe frontend will run at:
http://localhost:5173
The frontend proxies API requests from /api to the Flask backend running on port 5000.
Docker Compose is the recommended way to run the full application locally.
docker compose up --buildAfter the containers start, open:
http://localhost:3000
To stop the containers:
docker compose downCloudTasker Pro includes Kubernetes manifests for deploying the frontend and backend into a local or remote Kubernetes cluster.
minikube start --driver=docker --cpus=2 --memory=4geval $(minikube docker-env)docker build -t cloudtasker-backend:latest ./backend
docker build -t cloudtasker-frontend:latest ./frontendkubectl apply -f k8s/00-namespace.yaml
kubectl apply -f k8s/01-configmap.yaml
kubectl apply -f k8s/02-backend.yaml
kubectl apply -f k8s/03-frontend.yamlAlternatively, apply all manifests at once:
kubectl apply -f k8s/kubectl get pods -n cloudtasker
kubectl get svc -n cloudtasker
kubectl get deployments -n cloudtaskerUsing the Minikube IP:
minikube ipThen open:
http://<minikube-ip>:30080
Or use the Minikube service command:
minikube service cloudtasker-frontend-svc -n cloudtasker| Method | Endpoint | Description |
|---|---|---|
| GET | /api/health |
Returns backend health status |
| GET | /api/metrics |
Returns simulated cluster metrics |
| GET | /api/tasks |
Returns all tasks |
| POST | /api/tasks |
Creates a new task |
| DELETE | /api/tasks/:id |
Deletes a task |
| PATCH | /api/tasks/:id/toggle |
Toggles task completion status |
{
"title": "Deploy backend service",
"priority": "high"
}The dashboard displays simulated cloud and Kubernetes metrics, including:
- CPU usage
- Memory usage
- Active pods
- API latency
- Request count
- Deployment status
- Cluster activity events
This makes the project useful as a cloud computing, DevOps, or Kubernetes demonstration project.
| Service | Image Name |
|---|---|
| Backend | cloudtasker-backend:latest |
| Frontend | cloudtasker-frontend:latest |
kubectl get all -n cloudtaskerkubectl logs -n cloudtasker deployment/cloudtasker-backendkubectl logs -n cloudtasker deployment/cloudtasker-frontendkubectl delete namespace cloudtaskerdocker compose down
docker compose up --buildAdd screenshots of the dashboard here after running the application.
Suggested screenshots:
- Dashboard overview
- Task manager
- Metrics charts
- Kubernetes architecture diagram
This project is licensed under the MIT License. See the LICENSE file for details.