my-cloud-devops-consulting 1.1.202507060227__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.202507060227/my_cloud_devops_consulting.egg-info → my-cloud-devops-consulting-1.1.202507061218}/PKG-INFO +1 -1
  2. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
  3. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/index.css +0 -19
  4. my-cloud-devops-consulting-1.1.202507061218/static/js/main.js +179 -0
  5. my-cloud-devops-consulting-1.1.202507060227/static/js/main.js +0 -91
  6. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/MANIFEST.in +0 -0
  7. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/README.md +0 -0
  8. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/app.py +0 -0
  9. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/SOURCES.txt +0 -0
  10. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
  11. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
  12. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
  13. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/setup.cfg +0 -0
  14. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/setup.py +0 -0
  15. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/about.css +0 -0
  16. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/assessment.css +0 -0
  17. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/contact-form.css +0 -0
  18. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/login.css +0 -0
  19. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/main.css +0 -0
  20. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/register.css +0 -0
  21. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/css/services.css +0 -0
  22. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/images/image.jpg +0 -0
  23. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/images/whatspp.jpeg +0 -0
  24. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/counter.js +0 -0
  25. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/index.js +0 -0
  26. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/login.js +0 -0
  27. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/register.js +0 -0
  28. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/services.js +0 -0
  29. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/static/js/typing.js +0 -0
  30. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/about.html +0 -0
  31. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/assessment.html +0 -0
  32. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/base.html +0 -0
  33. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/contact-form.html +0 -0
  34. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/index.html +0 -0
  35. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/login.html +0 -0
  36. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/private-videos.html +0 -0
  37. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/register.html +0 -0
  38. {my-cloud-devops-consulting-1.1.202507060227 → my-cloud-devops-consulting-1.1.202507061218}/templates/services.html +0 -0
  39. {my-cloud-devops-consulting-1.1.202507060227 → 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.202507060227
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.202507060227
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,25 +177,6 @@ footer {
177
177
  box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.1);
178
178
  }
179
179
 
180
- /* Responsive Design */
181
- /* @media (max-width: 768px) {
182
- .services-highlight .service-cards {
183
- flex-direction: column;
184
- }
185
-
186
- .header-container {
187
- flex-direction: column;
188
- align-items: center;
189
- }
190
-
191
- nav ul {
192
- flex-direction: column;
193
- }
194
-
195
- .logo {
196
- margin-bottom: 15px;
197
- }
198
- } */
199
180
 
200
181
  @media (max-width: 768px) {
201
182
  /* 🔧 Fix navigation links hidden on mobile */
@@ -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,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
-