my-cloud-devops-consulting 1.1.202507022308__tar.gz → 1.1.202507040019__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 (41) hide show
  1. {my-cloud-devops-consulting-1.1.202507022308/my_cloud_devops_consulting.egg-info → my-cloud-devops-consulting-1.1.202507040019}/PKG-INFO +1 -1
  2. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
  3. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/my_cloud_devops_consulting.egg-info/SOURCES.txt +2 -0
  4. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/index.css +16 -0
  5. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/main.css +66 -0
  6. my-cloud-devops-consulting-1.1.202507040019/static/js/counter.js +19 -0
  7. my-cloud-devops-consulting-1.1.202507040019/static/js/typing.js +40 -0
  8. my-cloud-devops-consulting-1.1.202507040019/templates/about.html +35 -0
  9. my-cloud-devops-consulting-1.1.202507040019/templates/assessment.html +22 -0
  10. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/base.html +25 -1
  11. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/index.html +72 -10
  12. my-cloud-devops-consulting-1.1.202507040019/test/test.py +9 -0
  13. my-cloud-devops-consulting-1.1.202507022308/templates/about.html +0 -52
  14. my-cloud-devops-consulting-1.1.202507022308/templates/assessment.html +0 -33
  15. my-cloud-devops-consulting-1.1.202507022308/test/test.py +0 -10
  16. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/MANIFEST.in +0 -0
  17. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/README.md +0 -0
  18. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/app.py +0 -0
  19. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
  20. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
  21. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
  22. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/setup.cfg +0 -0
  23. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/setup.py +0 -0
  24. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/about.css +0 -0
  25. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/assessment.css +0 -0
  26. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/contact-form.css +0 -0
  27. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/login.css +0 -0
  28. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/register.css +0 -0
  29. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/css/services.css +0 -0
  30. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/images/image.jpg +0 -0
  31. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/images/whatspp.jpeg +0 -0
  32. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/js/index.js +0 -0
  33. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/js/login.js +0 -0
  34. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/js/main.js +0 -0
  35. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/js/register.js +0 -0
  36. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/static/js/services.js +0 -0
  37. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/contact-form.html +0 -0
  38. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/login.html +0 -0
  39. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/private-videos.html +0 -0
  40. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/register.html +0 -0
  41. {my-cloud-devops-consulting-1.1.202507022308 → my-cloud-devops-consulting-1.1.202507040019}/templates/services.html +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my-cloud-devops-consulting
3
- Version: 1.1.202507022308
3
+ Version: 1.1.202507040019
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.202507022308
3
+ Version: 1.1.202507040019
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
@@ -17,11 +17,13 @@ static/css/register.css
17
17
  static/css/services.css
18
18
  static/images/image.jpg
19
19
  static/images/whatspp.jpeg
20
+ static/js/counter.js
20
21
  static/js/index.js
21
22
  static/js/login.js
22
23
  static/js/main.js
23
24
  static/js/register.js
24
25
  static/js/services.js
26
+ static/js/typing.js
25
27
  templates/about.html
26
28
  templates/assessment.html
27
29
  templates/base.html
@@ -276,3 +276,19 @@ nav ul.visible {
276
276
  min-height: 180px;
277
277
  }
278
278
  }
279
+
280
+ #dynamic-headline::after {
281
+ content: "|";
282
+ animation: blink 1s infinite;
283
+ margin-left: 5px;
284
+ }
285
+
286
+ @keyframes blink {
287
+ 0%,
288
+ 100% {
289
+ opacity: 1;
290
+ }
291
+ 50% {
292
+ opacity: 0;
293
+ }
294
+ }
@@ -95,3 +95,69 @@ a:hover {
95
95
  nav ul li a i {
96
96
  margin-right: 6px;
97
97
  }
98
+
99
+ .floating-shape {
100
+ position: absolute;
101
+ border-radius: 50%;
102
+ background: radial-gradient(circle at center, #00b4d8, #0077b6);
103
+ width: 200px;
104
+ height: 200px;
105
+ opacity: 0.3;
106
+ animation: float 8s ease-in-out infinite;
107
+ z-index: 0;
108
+ }
109
+
110
+ .floating-shape.one {
111
+ top: -50px;
112
+ left: -50px;
113
+ }
114
+
115
+ .floating-shape.two {
116
+ bottom: -60px;
117
+ right: -40px;
118
+ }
119
+
120
+ @keyframes float {
121
+ 0% {
122
+ transform: translateY(0px) scale(1);
123
+ }
124
+ 50% {
125
+ transform: translateY(-30px) scale(1.05);
126
+ }
127
+ 100% {
128
+ transform: translateY(0px) scale(1);
129
+ }
130
+ }
131
+
132
+ .floating-shape {
133
+ position: absolute;
134
+ width: 60px;
135
+ height: 60px;
136
+ border-radius: 50%;
137
+ opacity: 0.2;
138
+ animation: float 6s ease-in-out infinite;
139
+ z-index: 0;
140
+ }
141
+
142
+ .floating-shape.one {
143
+ top: 20px;
144
+ left: 15%;
145
+ background: radial-gradient(circle at center, #00c6ff, #0072ff);
146
+ }
147
+
148
+ .floating-shape.two {
149
+ bottom: 30px;
150
+ right: 10%;
151
+ background: radial-gradient(circle at center, #ff6a00, #ee0979);
152
+ animation-delay: 3s;
153
+ }
154
+
155
+ @keyframes float {
156
+ 0%,
157
+ 100% {
158
+ transform: translateY(0px);
159
+ }
160
+ 50% {
161
+ transform: translateY(-20px);
162
+ }
163
+ }
@@ -0,0 +1,19 @@
1
+ document.addEventListener("DOMContentLoaded", () => {
2
+ const counters = document.querySelectorAll(".counter");
3
+ counters.forEach(counter => {
4
+ const updateCount = () => {
5
+ const target = +counter.getAttribute("data-target");
6
+ const count = +counter.innerText;
7
+ const increment = target / 200; // smaller = slower
8
+
9
+ if (count < target) {
10
+ counter.innerText = Math.ceil(count + increment);
11
+ setTimeout(updateCount, 20);
12
+ } else {
13
+ counter.innerText = target;
14
+ }
15
+ };
16
+ updateCount();
17
+ });
18
+ });
19
+
@@ -0,0 +1,40 @@
1
+ document.addEventListener("DOMContentLoaded", () => {
2
+ const text = [
3
+ "Empowering Your Cloud Journey 🚀",
4
+ "Automate. Scale. Secure. 🔐",
5
+ "From Dev to Ops — Faster ⚙️",
6
+ ];
7
+ let i = 0;
8
+ let j = 0;
9
+ let isDeleting = false;
10
+ const element = document.getElementById("dynamic-headline");
11
+
12
+ function typeEffect() {
13
+ const currentPhrase = text[i];
14
+ const fullLength = currentPhrase.length;
15
+
16
+ if (!isDeleting) {
17
+ j++;
18
+ } else {
19
+ j--;
20
+ }
21
+
22
+ element.innerText = currentPhrase.substring(0, j);
23
+
24
+ let delay = isDeleting ? 80 : 160; // base typing/deleting speed
25
+
26
+ if (!isDeleting && j === fullLength) {
27
+ isDeleting = true;
28
+ delay = 2000; // pause after typing
29
+ } else if (isDeleting && j === 0) {
30
+ isDeleting = false;
31
+ i = (i + 1) % text.length;
32
+ delay = 600; // pause before next phrase
33
+ }
34
+
35
+ setTimeout(typeEffect, delay);
36
+ }
37
+
38
+ typeEffect();
39
+ });
40
+
@@ -0,0 +1,35 @@
1
+ {% extends "base.html" %} {% block main %}
2
+ <main class="container my-5">
3
+ <section class="about-hero">
4
+ <div class="about-container">
5
+ <h1>🚀 About CDC Firm</h1>
6
+ <p>
7
+ At CDC Firm, we are a passionate team of cloud and DevOps engineers
8
+ committed to helping businesses embrace modern, scalable, and secure
9
+ solutions.
10
+ </p>
11
+ <p>
12
+ Our expertise spans across cloud architecture, CI/CD automation,
13
+ Kubernetes deployments, infrastructure-as-code, and DevSecOps practices
14
+ — all tailored to accelerate your digital transformation.
15
+ </p>
16
+
17
+ {% if message %}
18
+ <p style="font-weight: bold; color: hotpink">{{ message }}</p>
19
+ {% endif %}
20
+
21
+ <form action="{{ url_for('about') }}" method="post">
22
+ <label for="mood">What's your mood?</label>
23
+ <input
24
+ type="text"
25
+ name="mood"
26
+ id="mood"
27
+ placeholder="excited / curious / other"
28
+ required
29
+ />
30
+ <button type="submit">Submit</button>
31
+ </form>
32
+ </div>
33
+ </section>
34
+ </main>
35
+ {% endblock %}
@@ -0,0 +1,22 @@
1
+ {% extends "base.html" %} {% block main %}
2
+ <main class="container my-5">
3
+ <h1>Cloud Readiness Assessment</h1>
4
+
5
+ <form method="POST" class="mb-4">
6
+ <label for="client_name">Client Name:</label>
7
+ <input type="text" name="client_name" id="client_name" required />
8
+
9
+ <label for="score">Readiness Score (0–100):</label>
10
+ <input type="number" name="score" id="score" required />
11
+
12
+ <button type="submit">Assess</button>
13
+ </form>
14
+
15
+ {% if result %}
16
+ <div class="result">
17
+ <h2>Assessment Result:</h2>
18
+ <p>{{ result }}</p>
19
+ </div>
20
+ {% endif %}
21
+ </main>
22
+ {% endblock %}
@@ -14,7 +14,6 @@
14
14
  referrerpolicy="no-referrer"
15
15
  />
16
16
 
17
- <!-- ✅ Core CSS -->
18
17
  <link
19
18
  rel="stylesheet"
20
19
  href="{{ url_for('static', filename='css/main.css') }}"
@@ -23,6 +22,8 @@
23
22
  rel="stylesheet"
24
23
  href="{{ url_for('static', filename='css/index.css') }}"
25
24
  />
25
+ <!-- ✅ AOS Animation Styles -->
26
+ <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet" />
26
27
 
27
28
  <!-- ✅ Load services.css only on /services route -->
28
29
  {% if request.endpoint == 'services' %}
@@ -40,6 +41,14 @@
40
41
  />
41
42
  {% endif %}
42
43
 
44
+ <!-- ✅ Load about.css only on /about route -->
45
+ {% if request.endpoint == 'about' %}
46
+ <link
47
+ rel="stylesheet"
48
+ href="{{ url_for('static', filename='css/about.css') }}"
49
+ />
50
+ {% endif %}
51
+
43
52
  <style>
44
53
  /* CSS for Moving Image */
45
54
  .moving-image-container {
@@ -213,6 +222,21 @@
213
222
  ></script>
214
223
  <script src="{{ url_for('static', filename='js/main.js') }}"></script>
215
224
 
225
+ <!-- ✅ Load typing.js only on homepage -->
226
+ {% if request.endpoint == 'home' %}
227
+ <script src="{{ url_for('static', filename='js/typing.js') }}"></script>
228
+ <script src="{{ url_for('static', filename='js/counter.js') }}"></script>
229
+ {% endif %}
230
+
231
+ <!-- ✅ AOS Animation Script -->
232
+ <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
233
+ <script>
234
+ AOS.init({
235
+ duration: 800,
236
+ once: true,
237
+ });
238
+ </script>
239
+
216
240
  <!-- ✅ Tidio Live Chat Widget -->
217
241
  <script
218
242
  src="//code.tidio.co/nm9da68kwarxu4poexeqqsiblocw7heq.js"
@@ -2,15 +2,25 @@
2
2
 
3
3
  <main>
4
4
  <!-- Hero Section -->
5
- <section class="hero">
6
- <h2>Empowering Your Cloud & DevOps Journey</h2>
7
- <p>
5
+ <section class="hero-section" style="position: relative; text-align: center; padding: 60px 20px">
6
+ <!-- Floating Shapes -->
7
+ <div class="floating-shape one"></div>
8
+ <div class="floating-shape two"></div>
9
+
10
+
11
+ <h1 data-aos="fade-up" id="dynamic-headline"></h1>
12
+ <p data-aos="fade-up" data-aos-delay="200">
8
13
  We specialize in delivering Cloud and DevOps consulting services tailored
9
- to meet your unique business needs.
14
+ to your unique business needs.
10
15
  </p>
11
- <button onclick="window.location.href='{{ url_for('services') }}'">
12
- Explore our Services
13
- </button>
16
+ <a
17
+ href="{{ url_for('services') }}"
18
+ class="btn btn-primary mt-3"
19
+ data-aos="zoom-in"
20
+ data-aos-delay="400"
21
+ >
22
+ Explore Our Services
23
+ </a>
14
24
  </section>
15
25
 
16
26
  <!-- add demo -->
@@ -101,20 +111,71 @@
101
111
  </div>
102
112
  </div>
103
113
  </section>
114
+
115
+ <!-- me added -->
116
+ <!-- Impact Stats Section -->
117
+ <section
118
+ class="stats-section"
119
+ style="background: #f9f9f9; padding: 60px 20px; text-align: center"
120
+ >
121
+ <h2 data-aos="fade-up">Our Impact in Numbers</h2>
122
+ <div
123
+ class="stats-grid"
124
+ style="
125
+ display: flex;
126
+ justify-content: center;
127
+ gap: 40px;
128
+ flex-wrap: wrap;
129
+ margin-top: 40px;
130
+ "
131
+ >
132
+ <div class="stat" data-aos="fade-up" data-aos-delay="100">
133
+ <div
134
+ class="counter"
135
+ data-target="150"
136
+ style="font-size: 48px; font-weight: bold"
137
+ >
138
+ 0
139
+ </div>
140
+ <p>Projects Delivered</p>
141
+ </div>
142
+ <div class="stat" data-aos="fade-up" data-aos-delay="200">
143
+ <div
144
+ class="counter"
145
+ data-target="95"
146
+ style="font-size: 48px; font-weight: bold"
147
+ >
148
+ 0
149
+ </div>
150
+ <p>Happy Clients</p>
151
+ </div>
152
+ <div class="stat" data-aos="fade-up" data-aos-delay="300">
153
+ <div
154
+ class="counter"
155
+ data-target="24"
156
+ style="font-size: 48px; font-weight: bold"
157
+ >
158
+ 0
159
+ </div>
160
+ <p>Supported Regions</p>
161
+ </div>
162
+ </div>
163
+ </section>
164
+
104
165
  <!--add testimony-->
105
166
  <section class="testimonials-carousel">
106
167
  <h3>What Our Clients Say</h3>
107
168
  <div class="carousel">
108
169
  <div class="testimonial active">
109
- <p>"CDC helped us streamline our cloud migration. Highly recommend!"</p>
170
+ <p>CDC helped us streamline our cloud migration. Highly recommend!</p>
110
171
  <span>– <strong>Jane D.</strong></span>
111
172
  </div>
112
173
  <div class="testimonial">
113
- <p>"Professional, reliable, and skilled team."</p>
174
+ <p>Professional, reliable, and skilled team.</p>
114
175
  <span>– <strong>TechCorp Inc.</strong></span>
115
176
  </div>
116
177
  <div class="testimonial">
117
- <p>"Their DevOps support transformed our infrastructure!"</p>
178
+ <p>Their DevOps support transformed our infrastructure!</p>
118
179
  <span>– <strong>DevOps Solutions</strong></span>
119
180
  </div>
120
181
  </div>
@@ -175,6 +236,7 @@
175
236
  </button>
176
237
  </form>
177
238
  </section>
239
+
178
240
  <!-- Subscription Section -->
179
241
  </main>
180
242
 
@@ -0,0 +1,9 @@
1
+ def create_hero(name, power, city):
2
+ return f"Captain {name} has the {power} of fire and protects New {city}"
3
+ message = create_hero("Flames", "power","York")
4
+ print(message)
5
+
6
+ def hero_intro(hero_description):
7
+ return message
8
+ new_message = hero_intro(message)
9
+ print(new_message)
@@ -1,52 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <title>About Us - CDC Firm</title>
6
- <link
7
- rel="stylesheet"
8
- href="{{ url_for('static', filename='css/main.css') }}"
9
- />
10
- <link
11
- rel="stylesheet"
12
- href="{{ url_for('static', filename='css/about.css') }}"
13
- />
14
- </head>
15
-
16
- <body>
17
- <section class="about-hero">
18
- <div class="about-container">
19
- <h1>🚀 About CDC Firm</h1>
20
- <p>
21
- At CDC Firm, we are a passionate team of cloud and DevOps engineers
22
- committed to helping businesses embrace modern, scalable, and secure
23
- solutions.
24
- </p>
25
- <p>
26
- Our expertise spans across cloud architecture, CI/CD automation,
27
- Kubernetes deployments, infrastructure-as-code, and DevSecOps
28
- practices — all tailored to accelerate your digital transformation.
29
- </p>
30
- <p style="font-weight: bold; color: hotpink">{{ message }}</p>
31
-
32
- <!-- templates/about.html -->
33
- <form action="/about" method="post">
34
- <label for="mood">What's your mood?</label>
35
- <input
36
- type="text"
37
- name="mood"
38
- placeholder="excited / curious / other"
39
- required
40
- />
41
- <button type="submit">Submit</button>
42
- </form>
43
-
44
- <hr />
45
-
46
- {% if message %}
47
- <p><strong>Message:</strong> {{ message }}</p>
48
- {% endif %}
49
- </div>
50
- </section>
51
- </body>
52
- </html>
@@ -1,33 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <title>Client Cloud Readiness Assessment</title>
6
- <link
7
- rel="stylesheet"
8
- href="{{ url_for('static', filename='css/assessment.css') }}"
9
- />
10
- </head>
11
- <body>
12
- <div class="container">
13
- <h1>Cloud Readiness Assessment</h1>
14
-
15
- <form method="POST">
16
- <label for="client_name">Client Name:</label>
17
- <input type="text" name="client_name" id="client_name" required />
18
-
19
- <label for="score">Readiness Score (0–100):</label>
20
- <input type="number" name="score" id="score" required />
21
-
22
- <button type="submit">Assess</button>
23
- </form>
24
-
25
- {% if result %}
26
- <div class="result">
27
- <h2>Assessment Result:</h2>
28
- <p>{{ result }}</p>
29
- </div>
30
- {% endif %}
31
- </div>
32
- </body>
33
- </html>
@@ -1,10 +0,0 @@
1
- def full_name(first_name,last_name):
2
- return f"Hello {first_name} {last_name}"
3
- message = full_name("Betrand ", "Mutagha ")
4
- print(message)
5
- if message == message:
6
- print(" yes ")
7
- elif message != message:
8
- print("No")
9
- else:
10
- print("All wrong")