my-cloud-devops-consulting 1.1.202506162331__tar.gz → 1.1.202506182347__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 (38) hide show
  1. {my-cloud-devops-consulting-1.1.202506162331/my_cloud_devops_consulting.egg-info → my-cloud-devops-consulting-1.1.202506182347}/PKG-INFO +1 -1
  2. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/app.py +12 -0
  3. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347/my_cloud_devops_consulting.egg-info}/PKG-INFO +1 -1
  4. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/my_cloud_devops_consulting.egg-info/SOURCES.txt +2 -0
  5. my-cloud-devops-consulting-1.1.202506182347/static/css/assessment.css +129 -0
  6. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/index.css +17 -0
  7. my-cloud-devops-consulting-1.1.202506182347/static/css/main.css +93 -0
  8. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/js/main.js +17 -0
  9. my-cloud-devops-consulting-1.1.202506182347/templates/assessment.html +33 -0
  10. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/base.html +1 -0
  11. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/index.html +18 -0
  12. my-cloud-devops-consulting-1.1.202506182347/test/test.py +3 -0
  13. my-cloud-devops-consulting-1.1.202506162331/static/css/main.css +0 -41
  14. my-cloud-devops-consulting-1.1.202506162331/test/test.py +0 -16
  15. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/MANIFEST.in +0 -0
  16. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/README.md +0 -0
  17. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/my_cloud_devops_consulting.egg-info/dependency_links.txt +0 -0
  18. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/my_cloud_devops_consulting.egg-info/requires.txt +0 -0
  19. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/my_cloud_devops_consulting.egg-info/top_level.txt +0 -0
  20. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/setup.cfg +0 -0
  21. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/setup.py +0 -0
  22. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/about.css +0 -0
  23. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/contact-form.css +0 -0
  24. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/login.css +0 -0
  25. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/register.css +0 -0
  26. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/css/services.css +0 -0
  27. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/images/image.jpg +0 -0
  28. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/images/whatspp.jpeg +0 -0
  29. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/js/index.js +0 -0
  30. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/js/login.js +0 -0
  31. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/js/register.js +0 -0
  32. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/static/js/services.js +0 -0
  33. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/about.html +0 -0
  34. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/contact-form.html +0 -0
  35. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/login.html +0 -0
  36. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/private-videos.html +0 -0
  37. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/templates/register.html +0 -0
  38. {my-cloud-devops-consulting-1.1.202506162331 → my-cloud-devops-consulting-1.1.202506182347}/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.202506162331
3
+ Version: 1.1.202506182347
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
@@ -159,6 +159,18 @@ def about():
159
159
  return render_template('about.html', message=message)
160
160
 
161
161
 
162
+ @app.route('/assessment', methods=['GET', 'POST'])
163
+ def assessment():
164
+ result = None
165
+ if request.method == 'POST':
166
+ name = request.form['client_name']
167
+ score = int(request.form['score'])
168
+ if score >= 70:
169
+ result = f"{name} is Cloud Ready ✅"
170
+ else:
171
+ result = f"{name} needs more preparation ❌"
172
+ return render_template('assessment.html', result=result)
173
+
162
174
 
163
175
  if __name__ == '__main__':
164
176
  app.run(debug=True, host='0.0.0.0', port=50)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: my-cloud-devops-consulting
3
- Version: 1.1.202506162331
3
+ Version: 1.1.202506182347
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
@@ -8,6 +8,7 @@ my_cloud_devops_consulting.egg-info/dependency_links.txt
8
8
  my_cloud_devops_consulting.egg-info/requires.txt
9
9
  my_cloud_devops_consulting.egg-info/top_level.txt
10
10
  static/css/about.css
11
+ static/css/assessment.css
11
12
  static/css/contact-form.css
12
13
  static/css/index.css
13
14
  static/css/login.css
@@ -22,6 +23,7 @@ static/js/main.js
22
23
  static/js/register.js
23
24
  static/js/services.js
24
25
  templates/about.html
26
+ templates/assessment.html
25
27
  templates/base.html
26
28
  templates/contact-form.html
27
29
  templates/index.html
@@ -0,0 +1,129 @@
1
+ /* body {
2
+ font-family: Arial, sans-serif;
3
+ background-color: #f8f9fa;
4
+ color: #333;
5
+ }
6
+
7
+ .container {
8
+ width: 60%;
9
+ margin: 50px auto;
10
+ background: white;
11
+ padding: 30px;
12
+ border-radius: 8px;
13
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
14
+ }
15
+
16
+ label {
17
+ display: block;
18
+ margin-top: 20px;
19
+ }
20
+
21
+ input[type="text"],
22
+ input[type="number"] {
23
+ width: 100%;
24
+ padding: 8px;
25
+ margin-top: 5px;
26
+ }
27
+
28
+ button {
29
+ margin-top: 20px;
30
+ padding: 10px 20px;
31
+ background-color: #0077cc;
32
+ color: white;
33
+ border: none;
34
+ border-radius: 5px;
35
+ cursor: pointer;
36
+ }
37
+
38
+ .result {
39
+ margin-top: 30px;
40
+ padding: 20px;
41
+ background-color: #eef;
42
+ border-left: 5px solid #0077cc;
43
+ } */
44
+ body {
45
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
46
+ background-color: #f0f4f8;
47
+ color: #333;
48
+ margin: 0;
49
+ padding: 0;
50
+ }
51
+
52
+ .container {
53
+ max-width: 600px;
54
+ margin: 60px auto;
55
+ padding: 40px;
56
+ background: #fff;
57
+ border-radius: 12px;
58
+ box-shadow: 0 4px 25px rgba(0, 0, 0, 0.1);
59
+ }
60
+
61
+ h1 {
62
+ text-align: center;
63
+ color: #0077cc;
64
+ margin-bottom: 30px;
65
+ }
66
+
67
+ form label {
68
+ font-weight: 600;
69
+ display: block;
70
+ margin-top: 20px;
71
+ margin-bottom: 8px;
72
+ }
73
+
74
+ input[type="text"],
75
+ input[type="number"] {
76
+ width: 100%;
77
+ padding: 12px;
78
+ border: 1px solid #ccc;
79
+ border-radius: 6px;
80
+ font-size: 16px;
81
+ box-sizing: border-box;
82
+ }
83
+
84
+ button {
85
+ display: block;
86
+ width: 100%;
87
+ margin-top: 30px;
88
+ background-color: #0077cc;
89
+ color: white;
90
+ font-size: 16px;
91
+ padding: 14px 0;
92
+ border: none;
93
+ border-radius: 6px;
94
+ cursor: pointer;
95
+ transition: background-color 0.3s ease;
96
+ }
97
+
98
+ button:hover {
99
+ background-color: #005fa3;
100
+ }
101
+
102
+ .result {
103
+ margin-top: 40px;
104
+ padding: 25px;
105
+ background-color: #eaf2ff;
106
+ border-left: 5px solid #0077cc;
107
+ border-radius: 6px;
108
+ font-size: 18px;
109
+ }
110
+
111
+ .result h2 {
112
+ margin-top: 0;
113
+ color: #333;
114
+ }
115
+
116
+ @media (max-width: 600px) {
117
+ .container {
118
+ padding: 25px;
119
+ margin: 20px;
120
+ }
121
+
122
+ h1 {
123
+ font-size: 24px;
124
+ }
125
+
126
+ .result {
127
+ font-size: 16px;
128
+ }
129
+ }
@@ -259,3 +259,20 @@ nav ul.visible {
259
259
  .scroll-to-top:hover {
260
260
  background: #e07a35;
261
261
  }
262
+
263
+ @media (max-width: 768px) {
264
+ .testimonials-carousel h3 {
265
+ font-size: 1.5rem;
266
+ padding: 0 15px;
267
+ }
268
+
269
+ .testimonial {
270
+ font-size: 1rem;
271
+ padding: 20px;
272
+ margin: 0 10px;
273
+ }
274
+
275
+ .carousel {
276
+ min-height: 180px;
277
+ }
278
+ }
@@ -0,0 +1,93 @@
1
+ .card {
2
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
3
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
4
+ }
5
+ .card:hover {
6
+ transform: translateY(-5px);
7
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
8
+ }
9
+ html {
10
+ scroll-behavior: smooth;
11
+ }
12
+ .container {
13
+ display: flex;
14
+ flex-wrap: wrap;
15
+ gap: 20px;
16
+ margin: 0 auto;
17
+ max-width: 1200px;
18
+ }
19
+ button,
20
+ .btn {
21
+ background: #17a2b8;
22
+ color: #fff;
23
+ border: none;
24
+ padding: 10px 20px;
25
+ border-radius: 5px;
26
+ cursor: pointer;
27
+ transition: background 0.3s ease, transform 0.3s ease;
28
+ }
29
+ button:hover,
30
+ .btn:hover {
31
+ background: #138496;
32
+ transform: translateY(-3px);
33
+ }
34
+ a {
35
+ color: #17a2b8;
36
+ text-decoration: none;
37
+ transition: color 0.3s ease;
38
+ }
39
+ a:hover {
40
+ color: #138496;
41
+ }
42
+
43
+ .testimonials-carousel {
44
+ background: linear-gradient(to right, #eaf4f4, #fefefe);
45
+ padding: 60px 20px;
46
+ text-align: center;
47
+ }
48
+
49
+ .testimonials-carousel h3 {
50
+ font-size: 2.2rem;
51
+ margin-bottom: 40px;
52
+ color: #05445e;
53
+ font-weight: 600;
54
+ }
55
+
56
+ .carousel {
57
+ position: relative;
58
+ max-width: 700px;
59
+ margin: auto;
60
+ overflow: hidden;
61
+ min-height: 160px;
62
+ }
63
+
64
+ .testimonial {
65
+ position: absolute;
66
+ opacity: 0;
67
+ transition: opacity 1s ease-in-out;
68
+ background-color: white;
69
+ padding: 25px 30px;
70
+ margin: 0 auto;
71
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
72
+ border-left: 5px solid #189ab4;
73
+ border-radius: 12px;
74
+ width: 100%;
75
+ }
76
+
77
+ .testimonial.active {
78
+ opacity: 1;
79
+ position: relative;
80
+ }
81
+
82
+ .testimonial p {
83
+ font-size: 1.2rem;
84
+ font-style: italic;
85
+ color: #333;
86
+ }
87
+
88
+ .testimonial span {
89
+ display: block;
90
+ margin-top: 10px;
91
+ font-weight: bold;
92
+ color: #189ab4;
93
+ }
@@ -72,3 +72,20 @@ document.addEventListener("DOMContentLoaded", () => {
72
72
  document.head.appendChild(styleSheet);
73
73
  });
74
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
+
@@ -0,0 +1,33 @@
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>
@@ -62,6 +62,7 @@
62
62
  <ul>
63
63
  <li><a href="{{ url_for('home') }}">Home</a></li>
64
64
  <li><a href="{{ url_for('about') }}">About</a></li>
65
+ <li><a href="{{ url_for('assessment') }}">Assessment</a></li>
65
66
  <li><a href="{{ url_for('services') }}">Services</a></li>
66
67
  <li><a href="{{ url_for('contact_form') }}">Contact Form</a></li>
67
68
  {% if current_user.is_authenticated %}
@@ -51,6 +51,24 @@
51
51
  </div>
52
52
  </div>
53
53
  </section>
54
+ <!--add testimony-->
55
+ <section class="testimonials-carousel">
56
+ <h3>What Our Clients Say</h3>
57
+ <div class="carousel">
58
+ <div class="testimonial active">
59
+ <p>"CDC helped us streamline our cloud migration. Highly recommend!"</p>
60
+ <span>– <strong>Jane D.</strong></span>
61
+ </div>
62
+ <div class="testimonial">
63
+ <p>"Professional, reliable, and skilled team."</p>
64
+ <span>– <strong>TechCorp Inc.</strong></span>
65
+ </div>
66
+ <div class="testimonial">
67
+ <p>"Their DevOps support transformed our infrastructure!"</p>
68
+ <span>– <strong>DevOps Solutions</strong></span>
69
+ </div>
70
+ </div>
71
+ </section>
54
72
 
55
73
  <!-- Quick Links Section -->
56
74
  <section class="quick-links">
@@ -0,0 +1,3 @@
1
+ with open("myfile.txt", "r") as file:
2
+ content = file.read()
3
+ print(content)
@@ -1,41 +0,0 @@
1
- .card {
2
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
3
- transition: transform 0.3s ease, box-shadow 0.3s ease;
4
- }
5
- .card:hover {
6
- transform: translateY(-5px);
7
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
8
- }
9
- html {
10
- scroll-behavior: smooth;
11
- }
12
- .container {
13
- display: flex;
14
- flex-wrap: wrap;
15
- gap: 20px;
16
- margin: 0 auto;
17
- max-width: 1200px;
18
- }
19
- button,
20
- .btn {
21
- background: #17a2b8;
22
- color: #fff;
23
- border: none;
24
- padding: 10px 20px;
25
- border-radius: 5px;
26
- cursor: pointer;
27
- transition: background 0.3s ease, transform 0.3s ease;
28
- }
29
- button:hover,
30
- .btn:hover {
31
- background: #138496;
32
- transform: translateY(-3px);
33
- }
34
- a {
35
- color: #17a2b8;
36
- text-decoration: none;
37
- transition: color 0.3s ease;
38
- }
39
- a:hover {
40
- color: #138496;
41
- }
@@ -1,16 +0,0 @@
1
- # grocery_list =["milk", "bread", "eggs", "cheese", "apples"]
2
- # print(grocery_list)
3
- # grocery_list.append("chocolate")
4
- # print(grocery_list)
5
- # del(grocery_list[1])
6
- # print(grocery_list)
7
- # print(len(grocery_list))
8
- # grocery_list.sort()
9
- # print(grocery_list)
10
- # print(grocery_list[0])
11
- # print(grocery_list[4])
12
- # print(grocery_list[-1]) # last item
13
- list_numbers =[10,2,45,1,2,4,5,7,9,2,4,790]
14
- list_numbers.sort()
15
- list_numbers.reverse()
16
- print(list_numbers)