MahaSyllabus

Mauli

 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">

          Email

        </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=