Sidebar.jsx
import {
LayoutDashboard,
FolderKanban,
Rocket,
Activity,
GitBranch,
FileText,
Wrench,
Shield,
Terminal,
Settings,
} from "lucide-react";
const menuItems = [
{ name: "Dashboard", icon: LayoutDashboard },
{ name: "Projects", icon: FolderKanban },
{ name: "Deployments", icon: Rocket },
{ name: "Monitoring", icon: Activity },
{ name: "CI/CD", icon: GitBranch },
{ name: "Logs", icon: FileText },
{ name: "Self-Healing", icon: Wrench },
{ name: "Security", icon: Shield },
{ name: "Terminal", icon: Terminal },
{ name: "Settings", icon: Settings },
];
const Sidebar = () => {
return (
<aside className="w-64 min-h-screen bg-slate-900 text-white hidden md:block">
<div className="p-6">
<h1 className="text-2xl font-bold text-blue-400">
Opsify
</h1>
</div>
<nav className="px-3">
{menuItems.map((item) => (
<div
key={item.name}
className="flex items-center gap-3 px-4 py-3 rounded-lg cursor-pointer hover:bg-slate-800 transition"
>
<item.icon size={18} />
<span>{item.name}</span>
</div>
))}
</nav>
</aside>
);
};
export default Sidebar;
Topbar.jsx
import { Bell, UserCircle } from "lucide-react";
const Topbar = () => {
return (
<header className="bg-white border-b px-6 py-4 flex justify-between items-center">
<div>
<h2 className="text-2xl font-bold">
Dashboard
</h2>
<p className="text-gray-500 text-sm">
Overview of your DevOps environment
</p>
</div>
<div className="flex items-center gap-4">
<Bell className="cursor-pointer" />
<div className="flex items-center gap-2">
<UserCircle size={35} />
<div>
<p className="font-semibold">John Doe</p>
<p className="text-xs text-gray-500">
Admin
</p>
</div>
</div>
</div>
</header>
);
};
export default Topbar;
Statcard.jsx
const StatCard = ({
title,
value,
growth,
}) => {
return (
<div className="bg-white p-5 rounded-xl shadow-sm border">
<h3 className="text-gray-500 text-sm">
{title}
</h3>
<p className="text-3xl font-bold mt-2">
{value}
</p>
<p className="text-green-600 text-sm mt-2">
{growth}
</p>
</div>
);
};
export default StatCard;
Layout.jsx
import Sidebar from "./Sidebar";
import Topbar from "./Topbar";
const Layout = ({ children }) => {
return (
<div className="flex bg-gray-100 min-h-screen">
<Sidebar />
<div className="flex-1">
<Topbar />
<main className="p-6">
{children}
</main>
</div>
</div>
);
};
export default Layout;
[08/06, 10:12 pm] Mauli Tcs: src/pages/LandingPage.jsx
import { Bot, Rocket, Shield, Activity } from "lucide-react";
const LandingPage = () => {
return ( <div className="min-h-screen bg-white"> <nav className="flex justify-between items-center px-8 py-5 border-b"> <h1 className="text-2xl font-bold text-blue-600">
Opsify </h1>
```
<div className="hidden md:flex gap-6">
<a href="#">Features</a>
<a href="#">Pricing</a>
<a href="#">Docs</a>
<a href="#">About</a>
</div>
<button className="bg-blue-600 text-white px-5 py-2 rounded-lg">
Get Started
</button>
</nav>
<section className="container mx-auto px-6 py-20">
<div className="grid md:grid-cols-2 gap-10 items-center">
<div>
<h1 className="text-5xl font-bold leading-tight">
AI Powered
<span className="text-blue-600">
{" "}DevOps Platform
</span>
</h1>
<p className="text-gray-600 mt-6">
Build, Deploy, Monitor and Heal applications
using AI-powered automation.
</p>
<div className="flex gap-4 mt-8">
<button className="bg-blue-600 text-white px-6 py-3 rounded-lg">
Start Building
</button>
<button className="border px-6 py-3 rounded-lg">
View Demo
</button>
</div>
</div>
<img
src="https://placehold.co/600x400"
alt="hero"
className="rounded-xl shadow"
/>
</div>
</section>
<section className="bg-gray-50 py-16">
<div className="container mx-auto px-6 grid md:grid-cols-4 gap-6">
<FeatureCard icon={<Bot />} title="AI Blueprint" />
<FeatureCard icon={<Rocket />} title="Deployments" />
<FeatureCard icon={<Activity />} title="Monitoring" />
<FeatureCard icon={<Shield />} title="Self Healing" />
</div>
</section>
</div>
```
);
};
const FeatureCard = ({ icon, title }) => (
<div className="bg-white p-6 rounded-xl shadow">
<div className="text-blue-600">{icon}</div>
<h3 className="font-bold mt-4">{title}</h3>
</div>
);
export default LandingPage;
[08/06, 10:12 pm] Mauli Tcs: src/pages/LoginPage.jsx
const LoginPage = () => {
return ( <div className="min-h-screen flex items-center justify-center bg-slate-100"> <div className="bg-white p-8 rounded-xl shadow w-full max-w-md"> <h1 className="text-3xl font-bold mb-6">
Login </h1>
```
<form className="space-y-4">
<input
type="email"
placeholder="Email"
className="w-full border p-3 rounded-lg"
/>
<input
type="password"
placeholder="Password"
className="w-full border p-3 rounded-lg"
/>
<button
className="w-full bg-blue-600 text-white py-3 rounded-lg"
>
Login
</button>
</form>
</div>
</div>
```
);
};
export default LoginPage;
[08/06, 10:12 pm] Mauli Tcs: const RegisterPage = () => {
return ( <div className="min-h-screen flex items-center justify-center bg-slate-100"> <div className="bg-white p-8 rounded-xl shadow w-full max-w-lg"> <h1 className="text-3xl font-bold mb-6">
Create Account </h1>
```
<form className="space-y-4">
<input
type="text"
placeholder="Name"
className="w-full border p-3 rounded-lg"
/>
<input
type="email"
placeholder="Email"
className="w-full border p-3 rounded-lg"
/>
<input
type="password"
placeholder="Password"
className="w-full border p-3 rounded-lg"
/>
<input
type="password"
placeholder="Confirm Password"
className="w-full border p-3 rounded-lg"
/>
<button
className="w-full bg-blue-600 text-white py-3 rounded-lg"
>
Register
</button>
</form>
</div>
</div>
```
);
};
export default RegisterPage;
[08/06, 10:14 pm] Mauli Tcs: src/pages/DashboardPage.jsx
import Layout from "../components/common/Layout";
import StatCard from "../components/common/StatCard";
const DashboardPage = () => {
return ( <Layout> <div className="grid md:grid-cols-4 gap-6"> <StatCard
title="Total Projects"
value="12"
growth="+12%"
/>
```
<StatCard
title="Deployments"
value="28"
growth="+18%"
/>
<StatCard
title="Running Containers"
value="15"
growth="+8%"
/>
<StatCard
title="Success Rate"
value="98%"
growth="+2%"
/>
</div>
<div className="mt-8 bg-white rounded-xl shadow p-6">
<h2 className="text-xl font-bold mb-4">
Recent Activity
</h2>
<div className="space-y-4">
<div className="border-b pb-3">
🚀 Deployment Started
</div>
<div className="border-b pb-3">
✅ Docker Build Success
</div>
<div className="border-b pb-3">
🔥 AI Generated Blueprint
</div>
<div>
📊 Monitoring Enabled
</div>
</div>
</div>
</Layout>
```
);
};
export default DashboardPage;
[08/06, 10:14 pm] Mauli Tcs: src/pages/ProjectsPage.jsx
import Layout from "../components/common/Layout";
const projects = [
{
id: 1,
name: "EstateFind",
tech: "React + Spring Boot",
status: "Running",
},
{
id: 2,
name: "Opsify",
tech: "React + Django",
status: "Development",
},
];
const ProjectsPage = () => {
return ( <Layout> <div className="flex justify-between items-center mb-6"> <h1 className="text-3xl font-bold">
Projects </h1>
```
<button className="bg-blue-600 text-white px-5 py-2 rounded-lg">
New Project
</button>
</div>
<div className="bg-white rounded-xl shadow overflow-hidden">
<table className="w-full">
<thead className="bg-slate-100">
<tr>
<th className="p-4 text-left">Project</th>
<th className="p-4 text-left">Stack</th>
<th className="p-4 text-left">Status</th>
</tr>
</thead>
<tbody>
{projects.map((project) => (
<tr
key={project.id}
className="border-t"
>
<td className="p-4">
{project.name}
</td>
<td className="p-4">
{project.tech}
</td>
<td className="p-4">
{project.status}
</td>
</tr>
))}
</tbody>
</table>
</div>
</Layout>
```
);
};
export default ProjectsPage;
[08/06, 10:14 pm] Mauli Tcs: src/pages/CreateProjectPage.jsx
import Layout from "../components/common/Layout";
const CreateProjectPage = () => {
return ( <Layout> <div className="max-w-3xl mx-auto bg-white p-8 rounded-xl shadow"> <h1 className="text-3xl font-bold mb-6">
Create New Project </h1>
```
<form className="space-y-5">
<div>
<label className="block mb-2">
Project Name
</label>
<input
type="text"
className="w-full border p-3 rounded-lg"
placeholder="Opsify"
/>
</div>
<div>
<label className="block mb-2">
Description
</label>
<textarea
rows="4"
className="w-full border p-3 rounded-lg"
placeholder="Enter project description"
/>
</div>
<div>
<label className="block mb-2">
Repository URL
</label>
<input
type="text"
className="w-full border p-3 rounded-lg"
placeholder="https://github.com/user/repo"
/>
</div>
<div>
<label className="block mb-2">
Tech Stack
</label>
<select className="w-full border p-3 rounded-lg">
<option>React</option>
<option>Spring Boot</option>
<option>Django</option>
<option>Node.js</option>
</select>
</div>
<button
type="submit"
className="bg-blue-600 text-white px-6 py-3 rounded-lg"
>
Generate AI Blueprint
</button>
</form>
</div>
</Layout>
```
);
};
export default CreateProjectPage;
[08/06, 10:15 pm] Mauli Tcs: src/pages/ProjectDetailsPage.jsx
import Layout from "../components/common/Layout";
const FilesPage = () => {
return ( <Layout>
```
<div className="grid md:grid-cols-4 gap-6">
<div className="bg-white rounded-xl shadow p-4">
<h2 className="font-bold mb-4">
Project Files
</h2>
<ul className="space-y-3">
<li>Dockerfile</li>
<li>docker-compose.yml</li>
<li>Jenkinsfile</li>
<li>README.md</li>
<li>application.yml</li>
</ul>
</div>
<div className="md:col-span-3 bg-white rounded-xl shadow p-4">
<h2 className="font-bold mb-4">
Dockerfile
</h2>
<textarea
rows="20"
className="w-full border rounded-lg p-4 font-mono"
defaultValue={`FROM node:20
```
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm","start"]`}
/>
```
</div>
</div>
</Layout>
```
);
};
export default FilesPage;
[08/06, 10:16 pm] Mauli Tcs: src/pages/DeploymentPage.jsx
import Layout from "../components/common/Layout";
const DeploymentPage = () => {
return ( <Layout>
```
<div className="bg-white rounded-xl shadow p-6">
<div className="flex justify-between items-center mb-6">
<h1 className="text-3xl font-bold">
Deployments
</h1>
<button className="bg-blue-600 text-white px-5 py-2 rounded-lg">
Deploy Now
</button>
</div>
<div className="grid md:grid-cols-3 gap-6">
<div className="border rounded-xl p-5">
<h3 className="font-bold">
Frontend
</h3>
<p className="text-green-600 mt-2">
Running
</p>
<p className="text-gray-500 text-sm mt-2">
React Container
</p>
</div>
<div className="border rounded-xl p-5">
<h3 className="font-bold">
Backend
</h3>
<p className="text-green-600 mt-2">
Running
</p>
<p className="text-gray-500 text-sm mt-2">
Django Container
</p>
</div>
<div className="border rounded-xl p-5">
<h3 className="font-bold">
Database
</h3>
<p className="text-green-600 mt-2">
Running
</p>
<p className="text-gray-500 text-sm mt-2">
PostgreSQL
</p>
</div>
</div>
<div className="mt-8 flex gap-4 flex-wrap">
<button className="bg-green-600 text-white px-5 py-2 rounded-lg">
Start
</button>
<button className="bg-yellow-500 text-white px-5 py-2 rounded-lg">
Restart
</button>
<button className="bg-red-600 text-white px-5 py-2 rounded-lg">
Stop
</button>
<button className="bg-slate-800 text-white px-5 py-2 rounded-lg">
Rollback
</button>
</div>
</div>
</Layout>
```
);
};
export default DeploymentPage;
[08/06, 10:17 pm] Mauli Tcs: src/pages/MonitoringPage.jsx
import Layout from "../components/common/Layout";
const MonitoringPage = () => {
return ( <Layout> <div className="space-y-6">
```
<h1 className="text-3xl font-bold">
Monitoring
</h1>
<div className="grid md:grid-cols-4 gap-6">
<div className="bg-white p-6 rounded-xl shadow">
<h3 className="text-gray-500">CPU Usage</h3>
<p className="text-3xl font-bold mt-2">42%</p>
</div>
<div className="bg-white p-6 rounded-xl shadow">
<h3 className="text-gray-500">Memory</h3>
<p className="text-3xl font-bold mt-2">68%</p>
</div>
<div className="bg-white p-6 rounded-xl shadow">
<h3 className="text-gray-500">Network</h3>
<p className="text-3xl font-bold mt-2">120 Mbps</p>
</div>
<div className="bg-white p-6 rounded-xl shadow">
<h3 className="text-gray-500">Uptime</h3>
<p className="text-3xl font-bold mt-2">99.9%</p>
</div>
</div>
<div className="bg-white rounded-xl shadow p-6">
<h2 className="text-xl font-bold mb-4">
Active Containers
</h2>
<table className="w-full">
<thead>
<tr className="border-b">
<th className="text-left py-3">Container</th>
<th className="text-left py-3">Status</th>
<th className="text-left py-3">CPU</th>
</tr>
</thead>
<tbody>
<tr>
<td className="py-3">frontend</td>
<td className="text-green-600">Running</td>
<td>25%</td>
</tr>
<tr>
<td className="py-3">backend</td>
<td className="text-green-600">Running</td>
<td>38%</td>
</tr>
<tr>
<td className="py-3">postgres</td>
<td className="text-green-600">Running</td>
<td>18%</td>
</tr>
</tbody>
</table>
</div>
</div>
</Layout>
```
);
};
export default MonitoringPage;
[08/06, 10:17 pm] Mauli Tcs: src/pages/PipelinePage.jsx
import Layout from "../components/common/Layout";
const stages = [
"Git Checkout",
"Build",
"Test",
"Docker Build",
"Security Scan",
"Deploy"
];
const PipelinePage = () => {
return ( <Layout>
```
<h1 className="text-3xl font-bold mb-6">
CI/CD Pipeline
</h1>
<div className="bg-white p-8 rounded-xl shadow">
<div className="grid md:grid-cols-6 gap-4">
{stages.map((stage) => (
<div
key={stage}
className="bg-green-100 border border-green-300 p-5 rounded-xl text-center"
>
<h3 className="font-semibold">
{stage}
</h3>
<p className="text-green-600 mt-2">
Success
</p>
</div>
))}
</div>
<div className="mt-8">
<h2 className="font-bold text-xl mb-4">
Pipeline Information
</h2>
<p>
Last Execution: 10 Minutes Ago
</p>
<p>
Duration: 4m 35s
</p>
<p>
Status: Successful
</p>
</div>
</div>
</Layout>
```
);
};
export default PipelinePage;
[08/06, 10:17 pm] Mauli Tcs: src/pages/LogsPage.jsx
import Layout from "../components/common/Layout";
const LogsPage = () => {
return ( <Layout>
```
<div className="bg-white rounded-xl shadow p-6">
<h1 className="text-3xl font-bold mb-6">
System Logs
</h1>
<div className="mb-4 flex gap-3 flex-wrap">
<button className="bg-blue-600 text-white px-4 py-2 rounded">
Application Logs
</button>
<button className="bg-gray-200 px-4 py-2 rounded">
Build Logs
</button>
<button className="bg-gray-200 px-4 py-2 rounded">
Deployment Logs
</button>
</div>
<div className="bg-black text-green-400 rounded-lg p-5 font-mono text-sm overflow-auto h-[500px]">
```
{`[INFO] Starting application... [INFO] Database connected. [INFO] Redis connected. [INFO] Jenkins pipeline started. [INFO] Docker image built successfully. [INFO] Deployment completed. [SUCCESS] Service running on port 8000.`}
```
</div>
</div>
</Layout>
```
);
};
export default LogsPage;
[08/06, 10:18 pm] Mauli Tcs: src/pages/SecurityPage.jsx
import Layout from "../components/common/Layout";
const AiBlueprintPage = () => {
return ( <Layout>
```
<h1 className="text-3xl font-bold mb-6">
AI Blueprint Generator
</h1>
<div className="grid md:grid-cols-2 gap-6">
<div className="bg-white p-6 rounded-xl shadow">
<h2 className="font-bold mb-4">
Project Requirements
</h2>
<textarea
rows="15"
className="w-full border rounded-lg p-3"
placeholder="Describe your application..."
/>
<button className="bg-blue-600 text-white px-5 py-3 rounded-lg mt-4">
Generate Blueprint
</button>
</div>
<div className="bg-white p-6 rounded-xl shadow">
<h2 className="font-bold mb-4">
Generated Architecture
</h2>
<div className="space-y-3">
<div>Frontend → React</div>
<div>Backend → Django</div>
<div>Database → PostgreSQL</div>
<div>CI/CD → Jenkins</div>
<div>Deployment → Docker</div>
<div>Monitoring → Prometheus</div>
</div>
</div>
</div>
</Layout>
```
);
};
export default AiBlueprintPage;
[08/06, 10:19 pm] Mauli Tcs: src/pages/CodeGeneratorPage.jsx
import Layout from "../components/common/Layout";
const CodeGeneratorPage = () => {
return ( <Layout>
```
<h1 className="text-3xl font-bold mb-6">
AI Code Generator
</h1>
<div className="grid md:grid-cols-2 gap-6">
<div className="bg-white p-6 rounded-xl shadow">
<textarea
rows="12"
className="w-full border rounded-lg p-3"
placeholder="Generate Employee Management System..."
/>
<button className="bg-blue-600 text-white px-5 py-3 rounded-lg mt-4">
Generate Code
</button>
</div>
<div className="bg-white p-6 rounded-xl shadow">
<h2 className="font-bold mb-4">
Generated Output
</h2>
<pre className="bg-slate-900 text-green-400 p-4 rounded-lg overflow-auto">
```
{`public class Employee {
private Long id;
private String name;
}`} </pre>
```
</div>
</div>
</Layout>
```
);
};
export default CodeGeneratorPage;
[08/06, 10:19 pm] Mauli Tcs: src/pages/SettingsPage.jsx
import Layout from "../components/common/Layout";
const SettingsPage = () => {
return ( <Layout>
```
<h1 className="text-3xl font-bold mb-6">
Settings
</h1>
<div className="bg-white rounded-xl shadow p-6">
<div className="space-y-5">
<div>
<label className="block mb-2">
Username
</label>
<input
type="text"
className="w-full border p-3 rounded-lg"
defaultValue="admin"
/>
</div>
<div>
<label className="block mb-2">
</label>
<input
type="email"
className="w-full border p-3 rounded-lg"
defaultValue="admin@opsify.com"
/>
</div>
<div>
<label className="block mb-2">
Jenkins URL
</label>
<input
type="text"
className="w-full border p-3 rounded-lg"
placeholder="http://localhost:8080"
/>
</div>
<div>
<label className="block mb-2">
Docker Host
</label>
<input
type="text"
className="w-full border p-3 rounded-lg"
placeholder="localhost"
/>
</div>
<button className="bg-blue-600 text-white px-6 py-3 rounded-lg">
Save Settings
</button>
</div>
</div>
</Layout>
```
);
};
export default SettingsPage;
[08/06, 10:20 pm] Mauli Tcs: src/routes/AppRoutes.jsx
import { Routes, Route } from "react-router-dom";
import LandingPage from "../pages/LandingPage";
import LoginPage from "../pages/LoginPage";
import RegisterPage from "../pages/RegisterPage";
import DashboardPage from "../pages/DashboardPage";
import ProjectsPage from "../pages/ProjectsPage";
import CreateProjectPage from "../pages/CreateProjectPage";
import ProjectDetailsPage from "../pages/ProjectDetailsPage";
import FilesPage from "../pages/FilesPage";
import DeploymentPage from "../pages/DeploymentPage";
import MonitoringPage from "../pages/MonitoringPage";
import PipelinePage from "../pages/PipelinePage";
import LogsPage from "../pages/LogsPage";
import SecurityPage from "../pages/SecurityPage";
import TerminalPage from "../pages/TerminalPage";
import AiBlueprintPage from "../pages/AiBlueprintPage";
import CodeGeneratorPage from "../pages/CodeGeneratorPage";
import SettingsPage from "../pages/SettingsPage";
const AppRoutes = () => {
return ( <Routes>
<Route path="/" element={<LandingPage />} />
<Route path="/login" element=