my-cloud-devops-consulting 1.1.202507040120__tar.gz → 1.1.202507061218__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {my-cloud-devops-consulting-1.1.202507040120/my_cloud_devops_consulting.egg-info → my-cloud-devops-consulting-1.1.202507061218}/PKG-INFO +1 -1
  2. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
  3. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/index.css +18 -5
  4. my-cloud-devops-consulting-1.1.202507061218/static/js/main.js +179 -0
  5. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/typing.js +3 -3
  6. my-cloud-devops-consulting-1.1.202507040120/static/js/main.js +0 -91
  7. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/MANIFEST.in +0 -0
  8. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/README.md +0 -0
  9. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/app.py +0 -0
  10. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/SOURCES.txt +0 -0
  11. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
  12. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
  13. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
  14. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/setup.cfg +0 -0
  15. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/setup.py +0 -0
  16. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/about.css +0 -0
  17. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/assessment.css +0 -0
  18. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/contact-form.css +0 -0
  19. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/login.css +0 -0
  20. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/main.css +0 -0
  21. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/register.css +0 -0
  22. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/css/services.css +0 -0
  23. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/images/image.jpg +0 -0
  24. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/images/whatspp.jpeg +0 -0
  25. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/counter.js +0 -0
  26. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/index.js +0 -0
  27. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/login.js +0 -0
  28. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/register.js +0 -0
  29. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/static/js/services.js +0 -0
  30. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/about.html +0 -0
  31. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/assessment.html +0 -0
  32. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/base.html +0 -0
  33. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/contact-form.html +0 -0
  34. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/index.html +0 -0
  35. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/login.html +0 -0
  36. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/private-videos.html +0 -0
  37. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/register.html +0 -0
  38. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/templates/services.html +0 -0
  39. {my-cloud-devops-consulting-1.1.202507040120 → my-cloud-devops-consulting-1.1.202507061218}/test/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my-cloud-devops-consulting
3
- Version: 1.1.202507040120
3
+ Version: 1.1.202507061218
4
4
  Summary: This is my consulting website for Cloud & DevOps services.
5
5
  Home-page: https://github.com/Betrand1999/project-root
6
6
  Author: Betrand Mutagha
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my-cloud-devops-consulting
3
- Version: 1.1.202507040120
3
+ Version: 1.1.202507061218
4
4
  Summary: This is my consulting website for Cloud & DevOps services.
5
5
  Home-page: https://github.com/Betrand1999/project-root
6
6
  Author: Betrand Mutagha
@@ -177,10 +177,15 @@ footer {
177
177
  box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.1);
178
178
  }
179
179
 
180
- /* Responsive Design */
180
+
181
181
  @media (max-width: 768px) {
182
- .services-highlight .service-cards {
182
+ /* 🔧 Fix navigation links hidden on mobile */
183
+ nav ul {
184
+ display: flex !important; /* ✅ Force nav to show */
183
185
  flex-direction: column;
186
+ align-items: center;
187
+ gap: 10px;
188
+ margin-top: 10px;
184
189
  }
185
190
 
186
191
  .header-container {
@@ -188,12 +193,20 @@ footer {
188
193
  align-items: center;
189
194
  }
190
195
 
191
- nav ul {
196
+ .logo {
197
+ margin-bottom: 15px;
198
+ }
199
+
200
+ /* ✅ Make service cards responsive */
201
+ .services-highlight .service-cards {
192
202
  flex-direction: column;
203
+ align-items: center;
193
204
  }
194
205
 
195
- .logo {
196
- margin-bottom: 15px;
206
+ .services-highlight .card {
207
+ max-width: 90%;
208
+ width: 100%;
209
+ margin: 10px 0;
197
210
  }
198
211
  }
199
212
 
@@ -0,0 +1,179 @@
1
+ // document.addEventListener("DOMContentLoaded", () => {
2
+ // // Smooth scrolling for all internal links
3
+ // const smoothScrollLinks = document.querySelectorAll("a[href^='#']");
4
+ // smoothScrollLinks.forEach(link => {
5
+ // link.addEventListener("click", (event) => {
6
+ // event.preventDefault();
7
+ // const targetId = link.getAttribute("href").substring(1);
8
+ // const targetElement = document.getElementById(targetId);
9
+ // if (targetElement) {
10
+ // targetElement.scrollIntoView({ behavior: "smooth" });
11
+ // }
12
+ // });
13
+ // });
14
+
15
+ // // Back to top button functionality
16
+ // const backToTopButton = document.createElement("button");
17
+ // backToTopButton.innerText = "↑ Top";
18
+ // backToTopButton.className = "scroll-to-top";
19
+ // document.body.appendChild(backToTopButton);
20
+
21
+ // backToTopButton.style.display = "none";
22
+ // backToTopButton.addEventListener("click", () => {
23
+ // window.scrollTo({ top: 0, behavior: "smooth" });
24
+ // });
25
+
26
+ // window.addEventListener("scroll", () => {
27
+ // backToTopButton.style.display = window.pageYOffset > 300 ? "block" : "none";
28
+ // });
29
+
30
+ // // Modular function to reveal elements on scroll
31
+ // const revealOnScroll = () => {
32
+ // const sections = document.querySelectorAll("section");
33
+ // const viewportHeight = window.innerHeight;
34
+ // sections.forEach(section => {
35
+ // const sectionTop = section.getBoundingClientRect().top;
36
+ // if (sectionTop < viewportHeight - 100) {
37
+ // section.classList.add("visible");
38
+ // }
39
+ // });
40
+ // };
41
+ // window.addEventListener("scroll", revealOnScroll);
42
+ // revealOnScroll(); // ✅ <-- this line fixes the issue
43
+
44
+ // // Inject dynamic styles for section reveal effect
45
+ // const styleSheet = document.createElement("style");
46
+ // // styleSheet.type = "text/css"; // Deprecated, no longer needed
47
+ // styleSheet.innerText = `
48
+ // section {
49
+ // opacity: 0;
50
+ // transform: translateY(20px);
51
+ // transition: opacity 0.5s ease, transform 0.5s ease;
52
+ // }
53
+ // section.visible {
54
+ // opacity: 1;
55
+ // transform: translateY(0);
56
+ // }
57
+ // .scroll-to-top {
58
+ // position: fixed;
59
+ // bottom: 20px;
60
+ // right: 20px;
61
+ // padding: 10px 15px;
62
+ // background: #007bff;
63
+ // color: white;
64
+ // border: none;
65
+ // border-radius: 5px;
66
+ // display: none;
67
+ // cursor: pointer;
68
+ // }
69
+ // .scroll-to-top:hover {
70
+ // background: #0056b3;
71
+ // }
72
+ // `;
73
+ // document.head.appendChild(styleSheet);
74
+ // });
75
+
76
+
77
+
78
+ // document.addEventListener("DOMContentLoaded", () => {
79
+ // const testimonials = document.querySelectorAll(".testimonial");
80
+ // let index = 0;
81
+
82
+ // function rotateTestimonials() {
83
+ // testimonials[index].classList.remove("active");
84
+ // index = (index + 1) % testimonials.length;
85
+ // testimonials[index].classList.add("active");
86
+ // }
87
+
88
+ // if (testimonials.length > 1) {
89
+ // setInterval(rotateTestimonials, 2000);
90
+ // }
91
+ // });
92
+
93
+ document.addEventListener("DOMContentLoaded", () => {
94
+ // Smooth scrolling for all internal links
95
+ const smoothScrollLinks = document.querySelectorAll("a[href^='#']");
96
+ smoothScrollLinks.forEach(link => {
97
+ link.addEventListener("click", (event) => {
98
+ event.preventDefault();
99
+ const targetId = link.getAttribute("href").substring(1);
100
+ const targetElement = document.getElementById(targetId);
101
+ if (targetElement) {
102
+ targetElement.scrollIntoView({ behavior: "smooth" });
103
+ }
104
+ });
105
+ });
106
+
107
+ // Back to top button functionality
108
+ const backToTopButton = document.createElement("button");
109
+ backToTopButton.innerText = "↑ Top";
110
+ backToTopButton.className = "scroll-to-top";
111
+ document.body.appendChild(backToTopButton);
112
+
113
+ backToTopButton.style.display = "none";
114
+ backToTopButton.addEventListener("click", () => {
115
+ window.scrollTo({ top: 0, behavior: "smooth" });
116
+ });
117
+
118
+ window.addEventListener("scroll", () => {
119
+ backToTopButton.style.display = window.pageYOffset > 300 ? "block" : "none";
120
+ });
121
+
122
+ // Modular function to reveal elements on scroll
123
+ const revealOnScroll = () => {
124
+ const sections = document.querySelectorAll("section");
125
+ const viewportHeight = window.innerHeight;
126
+ sections.forEach(section => {
127
+ const sectionTop = section.getBoundingClientRect().top;
128
+ if (sectionTop < viewportHeight - 100) {
129
+ section.classList.add("visible");
130
+ }
131
+ });
132
+ };
133
+ window.addEventListener("scroll", revealOnScroll);
134
+ revealOnScroll(); // ✅ Reveal sections immediately on page load
135
+
136
+ // Inject dynamic styles for section reveal effect
137
+ const styleSheet = document.createElement("style");
138
+ styleSheet.innerText = `
139
+ section {
140
+ opacity: 0;
141
+ transform: translateY(20px);
142
+ transition: opacity 0.5s ease, transform 0.5s ease;
143
+ }
144
+ section.visible {
145
+ opacity: 1;
146
+ transform: translateY(0);
147
+ }
148
+ .scroll-to-top {
149
+ position: fixed;
150
+ bottom: 20px;
151
+ right: 20px;
152
+ padding: 10px 15px;
153
+ background: #007bff;
154
+ color: white;
155
+ border: none;
156
+ border-radius: 5px;
157
+ display: none;
158
+ cursor: pointer;
159
+ }
160
+ .scroll-to-top:hover {
161
+ background: #0056b3;
162
+ }
163
+ `;
164
+ document.head.appendChild(styleSheet);
165
+
166
+ // Testimonials auto-rotation
167
+ const testimonials = document.querySelectorAll(".testimonial");
168
+ let index = 0;
169
+
170
+ function rotateTestimonials() {
171
+ testimonials[index].classList.remove("active");
172
+ index = (index + 1) % testimonials.length;
173
+ testimonials[index].classList.add("active");
174
+ }
175
+
176
+ if (testimonials.length > 1) {
177
+ setInterval(rotateTestimonials, 2000);
178
+ }
179
+ });
@@ -1,8 +1,8 @@
1
1
  document.addEventListener("DOMContentLoaded", () => {
2
2
  const text = [
3
- "Empowering Your Cloud Journey 🚀",
4
- "Automate. Scale. Secure. 🔐",
5
- "From Dev to Ops — Faster ⚙️",
3
+ "Empowering Your Cloud Journey ",
4
+ "Automate. Scale. Secure. ",
5
+ "From Dev to Ops — Faster ",
6
6
  ];
7
7
  let i = 0;
8
8
  let j = 0;
@@ -1,91 +0,0 @@
1
- document.addEventListener("DOMContentLoaded", () => {
2
- // Smooth scrolling for all internal links
3
- const smoothScrollLinks = document.querySelectorAll("a[href^='#']");
4
- smoothScrollLinks.forEach(link => {
5
- link.addEventListener("click", (event) => {
6
- event.preventDefault();
7
- const targetId = link.getAttribute("href").substring(1);
8
- const targetElement = document.getElementById(targetId);
9
- if (targetElement) {
10
- targetElement.scrollIntoView({ behavior: "smooth" });
11
- }
12
- });
13
- });
14
-
15
- // Back to top button functionality
16
- const backToTopButton = document.createElement("button");
17
- backToTopButton.innerText = "↑ Top";
18
- backToTopButton.className = "scroll-to-top";
19
- document.body.appendChild(backToTopButton);
20
-
21
- backToTopButton.style.display = "none";
22
- backToTopButton.addEventListener("click", () => {
23
- window.scrollTo({ top: 0, behavior: "smooth" });
24
- });
25
-
26
- window.addEventListener("scroll", () => {
27
- backToTopButton.style.display = window.pageYOffset > 300 ? "block" : "none";
28
- });
29
-
30
- // Modular function to reveal elements on scroll
31
- const revealOnScroll = () => {
32
- const sections = document.querySelectorAll("section");
33
- const viewportHeight = window.innerHeight;
34
- sections.forEach(section => {
35
- const sectionTop = section.getBoundingClientRect().top;
36
- if (sectionTop < viewportHeight - 100) {
37
- section.classList.add("visible");
38
- }
39
- });
40
- };
41
- window.addEventListener("scroll", revealOnScroll);
42
-
43
- // Inject dynamic styles for section reveal effect
44
- const styleSheet = document.createElement("style");
45
- // styleSheet.type = "text/css"; // Deprecated, no longer needed
46
- styleSheet.innerText = `
47
- section {
48
- opacity: 0;
49
- transform: translateY(20px);
50
- transition: opacity 0.5s ease, transform 0.5s ease;
51
- }
52
- section.visible {
53
- opacity: 1;
54
- transform: translateY(0);
55
- }
56
- .scroll-to-top {
57
- position: fixed;
58
- bottom: 20px;
59
- right: 20px;
60
- padding: 10px 15px;
61
- background: #007bff;
62
- color: white;
63
- border: none;
64
- border-radius: 5px;
65
- display: none;
66
- cursor: pointer;
67
- }
68
- .scroll-to-top:hover {
69
- background: #0056b3;
70
- }
71
- `;
72
- document.head.appendChild(styleSheet);
73
- });
74
-
75
-
76
-
77
- document.addEventListener("DOMContentLoaded", () => {
78
- const testimonials = document.querySelectorAll(".testimonial");
79
- let index = 0;
80
-
81
- function rotateTestimonials() {
82
- testimonials[index].classList.remove("active");
83
- index = (index + 1) % testimonials.length;
84
- testimonials[index].classList.add("active");
85
- }
86
-
87
- if (testimonials.length > 1) {
88
- setInterval(rotateTestimonials, 2000);
89
- }
90
- });
91
-