|
1 | 1 | <!DOCTYPE html>
|
2 | 2 | <html xmlns:th="http://www.thymeleaf.org">
|
3 | 3 | <head>
|
4 | | - <title>Dashboard - DevOps Tutorials</title> |
| 4 | + <title>DevOps Dashboard</title> |
| 5 | + <!-- Font Awesome for icons --> |
| 6 | + <link |
| 7 | + rel="stylesheet" |
| 8 | + href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" |
| 9 | + integrity="sha512-papbK/Ce/kZCHuKqaWmFxXlI4Rg6e+QONSh3pHklE2BvmX/k9o1kCFJrcBvM6e9hYuGgwFY9nV7Hdt4tYk0V6g==" |
| 10 | + crossorigin="anonymous" |
| 11 | + referrerpolicy="no-referrer" |
| 12 | + /> |
5 | 13 | <style>
|
6 | 14 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap');
|
| 15 | + |
| 16 | + /* Reset */ |
| 17 | + * { |
| 18 | + box-sizing: border-box; |
| 19 | + } |
| 20 | + |
7 | 21 | body {
|
8 | 22 | font-family: 'Poppins', sans-serif;
|
9 | | - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
10 | 23 | margin: 0;
|
11 | 24 | padding: 0;
|
12 | | - color: #333; |
| 25 | + color: #222; |
| 26 | + min-height: 100vh; |
| 27 | + /* DevOps-themed background image from Unsplash - free to use */ |
| 28 | + background: url('https://images.unsplash.com/photo-1504384308090-c894fdcc538d?ixlib=rb-4.0.3&auto=format&fit=crop&w=1470&q=80') no-repeat center center fixed; |
| 29 | + background-size: cover; |
| 30 | + display: flex; |
| 31 | + flex-direction: column; |
| 32 | + } |
| 33 | + |
| 34 | + /* Overlay to darken background for text readability */ |
| 35 | + body::before { |
| 36 | + content: ""; |
| 37 | + position: fixed; |
| 38 | + top: 0; left: 0; right: 0; bottom: 0; |
| 39 | + background: rgba(25, 25, 40, 0.75); |
| 40 | + z-index: 0; |
13 | 41 | }
|
14 | | - .navbar { |
15 | | - background-color: #2e0854; |
16 | | - padding: 18px 40px; |
| 42 | + |
| 43 | + /* Top navigation bar container */ |
| 44 | + .topbar { |
| 45 | + position: fixed; |
| 46 | + top: 0; |
| 47 | + width: 100%; |
| 48 | + height: 60px; |
| 49 | + background-color: rgba(30, 30, 50, 0.85); |
17 | 50 | color: white;
|
18 | 51 | display: flex;
|
19 | | - justify-content: space-between; |
20 | 52 | align-items: center;
|
21 | | - box-shadow: 0 4px 15px rgba(46, 8, 84, 0.7); |
| 53 | + justify-content: center; /* center the title */ |
| 54 | + z-index: 10; |
| 55 | + box-shadow: 0 3px 15px rgba(0,0,0,0.4); |
| 56 | + user-select: none; |
22 | 57 | }
|
23 | | - .navbarh2 { |
24 | | - margin:0; |
25 | | - font-size:28px; |
26 | | - letter-spacing:0.1em; |
| 58 | + |
| 59 | + /* Title centered */ |
| 60 | + .topbarh1 { |
| 61 | + font-size:2.4rem; |
27 | 62 | font-weight: 700;
|
28 | | - text-shadow: 0 0 5px rgba(255,255,255,0.3); |
| 63 | + letter-spacing: 0.18em; |
| 64 | + margin: 0; |
| 65 | + flex-grow: 1; |
| 66 | + text-align: center; |
| 67 | + color: #FFD43B; /* DevOps yellow */ |
| 68 | + text-shadow: 0 0 6px #FFC107; |
29 | 69 | }
|
30 | | - .logout-button { |
31 | | - background-color: #b33a3a; |
32 | | - color: white; |
33 | | - padding: 10px 22px; |
34 | | - border: none; |
35 | | - border-radius: 30px; |
36 | | - font-size: 14px; |
| 70 | + |
| 71 | + /* User info at right corner */ |
| 72 | + .user-info { |
| 73 | + position: absolute; |
| 74 | + right: 20px; |
| 75 | + top: 50%; |
| 76 | + transform: translateY(-50%); |
| 77 | + display: flex; |
| 78 | + align-items: center; |
| 79 | + font-size: 15px; |
37 | 80 | font-weight: 600;
|
38 | | - cursor: pointer; |
39 | | - transition: background-color 0.3s ease; |
40 | | - text-decoration: none; |
41 | | - box-shadow: 0 5px 15px rgba(179, 58, 58, 0.6); |
| 81 | + background: rgba(255, 255, 255, 0.15); |
| 82 | + padding: 8px 14px; |
| 83 | + border-radius: 50px; |
| 84 | + box-shadow: 0 0 10px rgba(255, 196, 0, 0.6); |
| 85 | + cursor: default; |
42 | 86 | }
|
43 | | - .logout-button:hover { |
44 | | - background-color: #7f2828; |
45 | | - box-shadow: 0 7px 20px rgba(127, 40, 40, 0.8); |
| 87 | + |
| 88 | + .user-info i { |
| 89 | + margin-right: 10px; |
| 90 | + color: #FFD43B; |
| 91 | + font-size: 18px; |
46 | 92 | }
|
| 93 | + |
| 94 | + /* Main container */ |
47 | 95 | .container {
|
48 | | - margin: 40px auto 70px auto; |
49 | | - max-width: 960px; |
50 | | - background: white; |
51 | | - padding:40px50px; |
52 | | - border-radius:20px; |
| 96 | + margin: 90px auto 60px auto; |
| 97 | + max-width: 900px; |
| 98 | + background: rgba(255,255,255,0.95); |
| 99 | + border-radius:18px; |
| 100 | + padding:40px45px; |
53 | 101 | box-shadow: 0 20px 50px rgba(0,0,0,0.15);
|
| 102 | + z-index: 5; |
| 103 | + position: relative; |
54 | 104 | }
|
| 105 | + |
55 | 106 | h3 {
|
56 | | - color: #4b2a8a; |
| 107 | + color: #444; |
57 | 108 | margin-bottom: 25px;
|
58 | 109 | font-weight: 700;
|
59 | | - letter-spacing: 0.05em; |
60 | | - border-bottom: 3px solid #764ba2; |
| 110 | + border-bottom: 3px solid #FFD43B; |
61 | 111 | padding-bottom: 8px;
|
| 112 | + letter-spacing: 0.06em; |
| 113 | + font-size: 1.6rem; |
62 | 114 | }
|
| 115 | + |
63 | 116 | ul {
|
64 | | - padding-left:22px; |
65 | | - list-style-type: disc; |
66 | | - color: #444; |
| 117 | + list-style: none; |
| 118 | + padding-left:0; |
| 119 | + color: #333; |
67 | 120 | font-size: 17px;
|
68 | | - line-height: 1.75; |
69 | | - margin-bottom: 40px; |
| 121 | + line-height: 1.8; |
| 122 | + margin-bottom: 45px; |
70 | 123 | }
|
| 124 | + |
71 | 125 | ul li {
|
72 | | - margin-bottom: 12px; |
73 | | - transition: color 0.3s ease; |
| 126 | + padding: 8px 0; |
| 127 | + display: flex; |
| 128 | + align-items: center; |
| 129 | + gap: 12px; |
74 | 130 | cursor: default;
|
| 131 | + transition: color 0.3s ease; |
75 | 132 | }
|
| 133 | + |
| 134 | + ul li i { |
| 135 | + color: #FFD43B; |
| 136 | + min-width: 22px; |
| 137 | + text-align: center; |
| 138 | + } |
| 139 | + |
76 | 140 | ul li:hover {
|
77 | | - color: #764ba2; |
| 141 | + color: #bf9100; |
78 | 142 | font-weight: 600;
|
79 | 143 | }
|
80 | | - .userinfo { |
81 | | - margin-bottom: 40px; |
82 | | - background-color: #f0f0ff; |
83 | | - padding: 25px 30px; |
84 | | - border-left: 7px solid #764ba2; |
85 | | - border-radius: 12px; |
86 | | - font-size: 17px; |
87 | | - color: #222; |
88 | | - box-shadow: 0 6px 18px rgba(118, 75, 162, 0.2); |
89 | | - } |
| 144 | + |
90 | 145 | table {
|
91 | 146 | width: 100%;
|
92 | 147 | border-collapse: collapse;
|
93 | | - margin-top: 15px; |
94 | 148 | font-size: 15.5px;
|
95 | | - box-shadow:0010pxrgba(0,0,0,0.05); |
96 | | - border-radius: 12px; |
| 149 | + margin-top:10px; |
| 150 | + border-radius: 10px; |
97 | 151 | overflow: hidden;
|
| 152 | + box-shadow: 0 0 12px rgba(0,0,0,0.08); |
98 | 153 | }
|
| 154 | + |
99 | 155 | table th, table td {
|
100 | 156 | border: 1px solid #ddd;
|
101 | 157 | padding: 14px 18px;
|
102 | 158 | text-align: left;
|
103 | 159 | }
|
| 160 | + |
104 | 161 | table th {
|
105 | | - background-color: #7f56d9; |
106 | | - color: white; |
107 | | - font-weight: 600; |
| 162 | + background-color: #FFD43B; |
| 163 | + color: #3c3c3c; |
| 164 | + font-weight: 700; |
108 | 165 | letter-spacing: 0.03em;
|
109 | 166 | }
|
| 167 | + |
110 | 168 | table tr:nth-child(even) {
|
111 | | - background-color: #faf7ff; |
| 169 | + background-color: #fef8d8; |
112 | 170 | }
|
| 171 | + |
113 | 172 | table tr:hover {
|
114 | | - background-color: #dcd4ff; |
| 173 | + background-color: #ffe763; |
115 | 174 | }
|
| 175 | + |
116 | 176 | /* About Me Section */
|
117 | 177 | .about-me {
|
118 | | - margin-top: 60px; |
119 | | - background: #4b2a8a; |
120 | | - color: white; |
121 | | - padding: 35px40px; |
122 | | - border-radius: 20px; |
123 | | - box-shadow: 0 15px 40px rgba(75,42,138, 0.7); |
| 178 | + margin-top: 50px; |
| 179 | + background: #3e2a00; |
| 180 | + color: #fff9d1; |
| 181 | + padding: 32px38px; |
| 182 | + border-radius: 18px; |
| 183 | + box-shadow: 0 14px 40px rgba(255,212,59, 0.6); |
124 | 184 | font-size: 16.8px;
|
125 | 185 | line-height: 1.6;
|
126 | 186 | }
|
| 187 | + |
127 | 188 | .about-me h3 {
|
128 | | - color: #f8e8ff; |
129 | | - margin-bottom: 20px; |
| 189 | + color: #fff4a3; |
| 190 | + margin-bottom: 18px; |
130 | 191 | font-size: 26px;
|
131 | 192 | }
|
| 193 | + |
132 | 194 | .about-me p {
|
133 | | - max-width: 700px; |
| 195 | + max-width: 720px; |
134 | 196 | margin-bottom: 12px;
|
135 | 197 | }
|
| 198 | + |
136 | 199 | .contact-info {
|
137 | | - margin-top: 15px; |
| 200 | + margin-top: 14px; |
138 | 201 | }
|
| 202 | + |
139 | 203 | .contact-info strong {
|
140 | 204 | display: inline-block;
|
141 | 205 | width: 90px;
|
142 | | - color: #d6bcfa; |
| 206 | + color: #ffe97a; |
143 | 207 | }
|
| 208 | + |
144 | 209 | .contact-info a {
|
145 | | - color: #e4d4ff; |
| 210 | + color: #fff9d1; |
146 | 211 | text-decoration: underline;
|
147 | 212 | transition: color 0.3s ease;
|
148 | 213 | }
|
| 214 | + |
149 | 215 | .contact-info a:hover {
|
150 | | - color: #f2e7ff; |
| 216 | + color: #ffffb0; |
| 217 | + } |
| 218 | + |
| 219 | + /* Responsive */ |
| 220 | + @media (max-width: 700px) { |
| 221 | + .container { |
| 222 | + margin: 100px 20px 60px 20px; |
| 223 | + padding: 30px 25px; |
| 224 | + } |
| 225 | + h3 { |
| 226 | + font-size: 1.3rem; |
| 227 | + } |
| 228 | + .topbar h1 { |
| 229 | + font-size: 1.7rem; |
| 230 | + letter-spacing: 0.1em; |
| 231 | + } |
| 232 | + .user-info { |
| 233 | + font-size: 14px; |
| 234 | + padding: 6px 10px; |
| 235 | + right: 12px; |
| 236 | + } |
151 | 237 | }
|
152 | 238 | </style>
|
153 | 239 | </head>
|
154 | 240 | <body>
|
155 | | - <div class="navbar"> |
156 | | - <h2>DevOps Dashboard</h2> |
157 | | - <a href="/logout" class="logout-button">Logout</a> |
| 241 | + <div class="topbar"> |
| 242 | + <h1>DEVOPS DASHBOARD</h1> |
| 243 | + <div class="user-info"> |
| 244 | + <i class="fa-solid fa-user-gear"></i> |
| 245 | + <span th:text="${username}">Username</span> |
| 246 | + <a href="/logout" class="logout-button">Logout</a> |
| 247 | + </div> |
158 | 248 | </div>
|
159 | 249 |
|
160 | | - <div class="container"> |
161 | | - <div class="userinfo"> |
162 | | - <p><strong>Logged-in User:</strong></p> |
163 | | - <p>Username: <span th:text="${username}">[username]</span></p> |
164 | | - <p>Email: <span th:text="${email}">[email]</span></p> |
165 | | - </div> |
166 | 250 |
|
| 251 | + <div class="container"> |
167 | 252 | <h3>DevOps Tutorials & Tools</h3>
|
168 | 253 | <ul>
|
169 | | - <li th:each="item : ${materials}" th:text="${item}">Sample tutorial/tool</li> |
170 | | - <!-- Added more items for content richness --> |
171 | | - <li>CI/CD with Jenkins and GitHub Actions</li> |
172 | | - <li>Containerization using Docker and Best Practices</li> |
173 | | - <li>Microservices Architecture with Spring Boot and Kubernetes</li> |
174 | | - <li>Infrastructure as Code with Terraform & CloudFormation</li> |
175 | | - <li>Monitoring and Alerting with Prometheus & Grafana</li> |
176 | | - <li>Cloud Providers: AWS, Azure, GCP Fundamentals</li> |
177 | | - <li>Security and Compliance in DevOps Pipelines</li> |
178 | | - <li>Automated Testing and Quality Gates with SonarQube</li> |
| 254 | + <li><i class="fa-brands fa-jenkins"></i> CI/CD with Jenkins and GitHub Actions</li> |
| 255 | + <li><i class="fa-brands fa-docker"></i> Containerization using Docker and Best Practices</li> |
| 256 | + <li><i class="fa-solid fa-network-wired"></i> Microservices Architecture with Spring Boot and Kubernetes</li> |
| 257 | + <li><i class="fa-solid fa-code-branch"></i> Infrastructure as Code with Terraform & CloudFormation</li> |
| 258 | + <li><i class="fa-solid fa-chart-line"></i> Monitoring and Alerting with Prometheus & Grafana</li> |
| 259 | + <li><i class="fa-brands fa-aws"></i> Cloud Providers: AWS, Azure, GCP Fundamentals</li> |
| 260 | + <li><i class="fa-solid fa-shield-halved"></i> Security and Compliance in DevOps Pipelines</li> |
| 261 | + <li><i class="fa-solid fa-vial-virus"></i> Automated Testing and Quality Gates with SonarQube</li> |
179 | 262 | </ul>
|
180 | 263 |
|
181 | 264 | <h3>All Registered Users</h3>
|
@@ -207,5 +290,13 @@ <h3>About Me</h3>
|
207 | 290 | </div>
|
208 | 291 | </section>
|
209 | 292 | </div>
|
| 293 | + |
| 294 | + <footer> |
| 295 | + © 2025 — Made by <strong>Deepak Sagar</strong> | |
| 296 | + Contact: <a href="mailto:sagardeepak@example.com">sagardeepak@example.com</a> | All Rights Reserved. |
| 297 | + </footer> |
| 298 | + |
| 299 | + |
| 300 | + |
210 | 301 | </body>
|
211 | 302 | </html>
|
0 commit comments