my-cloud-devops-consulting 1.1.202507022317__tar.gz → 1.1.202507040117__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.202507022317/my_cloud_devops_consulting.egg-info → my-cloud-devops-consulting-1.1.202507040117}/PKG-INFO +1 -1
  2. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
  3. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/my_cloud_devops_consulting.egg-info/SOURCES.txt +2 -0
  4. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/index.css +16 -0
  5. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/main.css +66 -0
  6. my-cloud-devops-consulting-1.1.202507040117/static/js/counter.js +19 -0
  7. my-cloud-devops-consulting-1.1.202507040117/static/js/typing.js +40 -0
  8. my-cloud-devops-consulting-1.1.202507040117/templates/about.html +35 -0
  9. my-cloud-devops-consulting-1.1.202507040117/templates/assessment.html +22 -0
  10. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/base.html +25 -1
  11. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/index.html +71 -7
  12. my-cloud-devops-consulting-1.1.202507040117/test/test.py +9 -0
  13. my-cloud-devops-consulting-1.1.202507022317/templates/about.html +0 -52
  14. my-cloud-devops-consulting-1.1.202507022317/templates/assessment.html +0 -33
  15. my-cloud-devops-consulting-1.1.202507022317/test/test.py +0 -10
  16. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/MANIFEST.in +0 -0
  17. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/README.md +0 -0
  18. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/app.py +0 -0
  19. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
  20. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
  21. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
  22. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/setup.cfg +0 -0
  23. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/setup.py +0 -0
  24. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/about.css +0 -0
  25. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/assessment.css +0 -0
  26. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/contact-form.css +0 -0
  27. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/login.css +0 -0
  28. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/register.css +0 -0
  29. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/css/services.css +0 -0
  30. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/images/image.jpg +0 -0
  31. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/images/whatspp.jpeg +0 -0
  32. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/js/index.js +0 -0
  33. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/js/login.js +0 -0
  34. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/js/main.js +0 -0
  35. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/js/register.js +0 -0
  36. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/static/js/services.js +0 -0
  37. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/contact-form.html +0 -0
  38. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/login.html +0 -0
  39. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/private-videos.html +0 -0
  40. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/templates/register.html +0 -0
  41. {my-cloud-devops-consulting-1.1.202507022317 → my-cloud-devops-consulting-1.1.202507040117}/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.202507022317
3
+ Version: 1.1.202507040117
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.202507022317
3
+ Version: 1.1.202507040117
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,27 @@
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
6
+ class="hero-section"
7
+ style="position: relative; text-align: center; padding: 60px 20px"
8
+ >
9
+ <!-- ✨ Floating Shapes -->
10
+ <div class="floating-shape one"></div>
11
+ <div class="floating-shape two"></div>
12
+
13
+ <h1 data-aos="fade-up" id="dynamic-headline"></h1>
14
+ <p data-aos="fade-up" data-aos-delay="200">
8
15
  We specialize in delivering Cloud and DevOps consulting services tailored
9
- to meet your unique business needs.
16
+ to your unique business needs.
10
17
  </p>
11
- <button onclick="window.location.href='{{ url_for('services') }}'">
12
- Explore our Services
13
- </button>
18
+ <a
19
+ href="{{ url_for('services') }}"
20
+ class="btn btn-primary mt-3"
21
+ data-aos="zoom-in"
22
+ data-aos-delay="400"
23
+ >
24
+ Explore Our Services
25
+ </a>
14
26
  </section>
15
27
 
16
28
  <!-- add demo -->
@@ -101,6 +113,57 @@
101
113
  </div>
102
114
  </div>
103
115
  </section>
116
+
117
+ <!-- me added -->
118
+ <!-- Impact Stats Section -->
119
+ <section
120
+ class="stats-section"
121
+ style="background: #f9f9f9; padding: 60px 20px; text-align: center"
122
+ >
123
+ <h2 data-aos="fade-up">Our Impact in Numbers</h2>
124
+ <div
125
+ class="stats-grid"
126
+ style="
127
+ display: flex;
128
+ justify-content: center;
129
+ gap: 40px;
130
+ flex-wrap: wrap;
131
+ margin-top: 40px;
132
+ "
133
+ >
134
+ <div class="stat" data-aos="fade-up" data-aos-delay="100">
135
+ <div
136
+ class="counter"
137
+ data-target="1000"
138
+ style="font-size: 48px; font-weight: bold"
139
+ >
140
+ 0
141
+ </div>
142
+ <p>Projects Delivered</p>
143
+ </div>
144
+ <div class="stat" data-aos="fade-up" data-aos-delay="200">
145
+ <div
146
+ class="counter"
147
+ data-target="700"
148
+ style="font-size: 48px; font-weight: bold"
149
+ >
150
+ 0
151
+ </div>
152
+ <p>Happy Clients</p>
153
+ </div>
154
+ <div class="stat" data-aos="fade-up" data-aos-delay="300">
155
+ <div
156
+ class="counter"
157
+ data-target="950"
158
+ style="font-size: 48px; font-weight: bold"
159
+ >
160
+ 0
161
+ </div>
162
+ <p>Supported Regions</p>
163
+ </div>
164
+ </div>
165
+ </section>
166
+
104
167
  <!--add testimony-->
105
168
  <section class="testimonials-carousel">
106
169
  <h3>What Our Clients Say</h3>
@@ -175,6 +238,7 @@
175
238
  </button>
176
239
  </form>
177
240
  </section>
241
+
178
242
  <!-- Subscription Section -->
179
243
  </main>
180
244
 
@@ -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")