Training: Comprehensive training programs tailored to Intel technologies.
+
Products: Access to Intel products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kaspersky/Kaspersky_logo.png b/Kaspersky/Kaspersky_logo.png
new file mode 100644
index 00000000..92ba6d45
Binary files /dev/null and b/Kaspersky/Kaspersky_logo.png differ
diff --git a/Kaspersky/index.html b/Kaspersky/index.html
new file mode 100644
index 00000000..e44826d8
--- /dev/null
+++ b/Kaspersky/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ Kaspersky
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Kaspersky page
+
This is the landing page for Kaspersky.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Kaspersky technologies.
+
Products: Access to Kaspersky products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Lenovo/Lenovo_logo.png b/Lenovo/Lenovo_logo.png
new file mode 100644
index 00000000..8de7b0b8
Binary files /dev/null and b/Lenovo/Lenovo_logo.png differ
diff --git a/Lenovo/index.html b/Lenovo/index.html
new file mode 100644
index 00000000..90394195
--- /dev/null
+++ b/Lenovo/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ Lenovo
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Lenovo page
+
This is the landing page for Lenovo.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Lenovo technologies.
+
Products: Access to Lenovo products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Linode/Linode_logo.png b/Linode/Linode_logo.png
new file mode 100644
index 00000000..795804bc
Binary files /dev/null and b/Linode/Linode_logo.png differ
diff --git a/Linode/index.html b/Linode/index.html
new file mode 100644
index 00000000..a6b234dd
--- /dev/null
+++ b/Linode/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ Linode
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Linode page
+
This is the landing page for Linode.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Linode technologies.
+
Products: Access to Linode products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/McAfee/McAfee_logo.png b/McAfee/McAfee_logo.png
new file mode 100644
index 00000000..4555358e
Binary files /dev/null and b/McAfee/McAfee_logo.png differ
diff --git a/McAfee/index.html b/McAfee/index.html
new file mode 100644
index 00000000..31e8a473
--- /dev/null
+++ b/McAfee/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ McAfee
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the McAfee page
+
This is the landing page for McAfee.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to McAfee technologies.
+
Products: Access to McAfee products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Microsoft/Microsoft_Azure_logo.png b/Microsoft/Microsoft_Azure_logo.png
new file mode 100644
index 00000000..89ec8b16
Binary files /dev/null and b/Microsoft/Microsoft_Azure_logo.png differ
diff --git a/Microsoft/index.html b/Microsoft/index.html
new file mode 100644
index 00000000..6f61c4a6
--- /dev/null
+++ b/Microsoft/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ Microsoft Azure
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Microsoft Azure page
+
This is the landing page for Microsoft Azure.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Microsoft Azure technologies.
+
Products: Access to Microsoft Azure products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Microsoft/microsoft.html b/Microsoft/microsoft.html
new file mode 100644
index 00000000..de87c086
--- /dev/null
+++ b/Microsoft/microsoft.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+Microsoft Training and Services | Skunkworks
+
+
+
+
+
+
+
+
+
Microsoft Training and Services
+
At Skunkworks, we offer comprehensive training and services for Microsoft technologies. Our experienced trainers and consultants are ready to help you master Microsoft products and services to enhance your business operations.
+
+
Training Services
+
+
Microsoft Azure
+
+
Azure Fundamentals
+
Azure Solutions Architect
+
Azure DevOps
+
+
+
Microsoft 365
+
+
Microsoft 365 Fundamentals
+
Microsoft 365 Security Administration
+
Microsoft Teams Training
+
+
+
Microsoft Dynamics 365
+
+
Dynamics 365 Fundamentals
+
Dynamics 365 Customer Engagement
+
Dynamics 365 Finance and Operations
+
+
+
Microsoft Power Platform
+
+
Power BI Training
+
Power Apps Training
+
Power Automate Training
+
+
+
+
+
Consulting Services
+
+
Cloud Strategy and Planning
+
Migration Services
+
+
On-premises to Azure
+
Microsoft 365 Migration
+
+
+
Security and Compliance
+
+
Azure Security Assessment
+
Microsoft 365 Security Best Practices
+
+
+
Custom Development
+
+
Azure App Services
+
Microsoft 365 Custom Solutions
+
+
+
+
+
Benefits of Our Services
+
+
Expert trainers and consultants with extensive Microsoft experience
+
Customized training programs tailored to your organization's needs
+
Comprehensive support for Microsoft products and services
+
Enhanced productivity and efficiency through mastery of Microsoft technologies
+
Improved security and compliance with industry standards
Research the educational and service platform landscape.
+
Identify Outerbox's USPs.
+
+
+
+
+
UX Planning
+
+
+
Define user personas.
+
Map user journeys.
+
Sketch site maps for both domains.
+
+
+
+
+
UI Design
+
+
+
Create wireframes for core pages.
+
Select color scheme and typography.
+
Develop high-fidelity prototypes.
+
+
+
+
+
+
Content Development
+
+
+
Draft content for offerings and values.
+
Plan multimedia elements.
+
Optimize content for SEO.
+
+
+
+
+
Technical Setup
+
+
+
Select an appropriate CMS.
+
Set up hosting and domains.
+
+
+
+
+
Development and Testing
+
+
+
Develop website code.
+
Conduct usability and performance tests.
+
Ensure functionality of all website forms.
+
+
+
+
+
Review and Iterate
+
+
+
Gather user feedback.
+
Iterate design based on feedback.
+
Prepare for official launch.
+
+
+
+
+
Launch and Marketing
+
+
+
Plan launch strategy.
+
Monitor website performance.
+
Implement digital marketing.
+
+
+
+
+
Maintenance and Updates
+
+
+
Regularly update content.
+
Perform routine maintenance.
+
Stay updated with trends.
+
+
+
+
+
+
+
+
Suggestions for Outerbox Website and Content Creation
+
+ When building out the website and content for Outerbox, consider the following suggestions to enhance user engagement and provide valuable resources:
+
+
+
+Interactive Tools: Incorporate tools such as calculators, quizzes, or learning games that align with the educational content.
+
+
+Resource Library: Create a comprehensive library of articles, tutorials, and guides related to the courses and services offered.
+
+
+Community Engagement: Facilitate a community platform for students and professionals to interact, share experiences, and collaborate.
+
+
+Visual Content: Use infographics, videos, and interactive media to explain complex concepts in an easily digestible format.
+
+
+Regular Updates: Keep the content fresh with regular updates, new courses, and timely articles that reflect current industry trends.
+
+
+SEO Strategy: Develop a strong SEO strategy to improve the visibility of the website and attract organic traffic.
+
+
+Mobile Optimization: Ensure that the website and all its resources are fully optimized for a seamless mobile user experience.
+
+
+User Feedback: Implement mechanisms for users to provide feedback on the content, usability, and services offered.
+
+
+Accessibility: Adhere to web accessibility guidelines to make the website usable by as wide an audience as possible.
+
Training: Comprehensive training programs tailored to Sophos technologies.
+
Products: Access to Sophos products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Symantec/Symantec_logo.png b/Symantec/Symantec_logo.png
new file mode 100644
index 00000000..7ee9f190
Binary files /dev/null and b/Symantec/Symantec_logo.png differ
diff --git a/Symantec/index.html b/Symantec/index.html
new file mode 100644
index 00000000..f875e7fb
--- /dev/null
+++ b/Symantec/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ Symantec
+
+
+
+
+
+
+
+
+
+
+
+
+
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Symantec page
+
This is the landing page for Symantec.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Symantec technologies.
+
Products: Access to Symantec products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/about-us.html b/about-us.html
new file mode 100644
index 00000000..b970dd1c
--- /dev/null
+++ b/about-us.html
@@ -0,0 +1,332 @@
+
+
+
+
+
+
+ About Us - Skunkworks (Pty) Ltd
+
+
+
+
+
+
+
+
+
+
Skunkworks EdTech IBM Course Catalog
+
+
+
+
+
+
Welcome to Skunkworks
+
Innovative Technology, Education Solutions, and Placement Services for Tomorrow's Businesses
+
+
+
+
+
Dear Visitor,
+
I'm Raydo Matthee, and I'm thrilled to welcome you to Skunkworks, where the intersection of education and technology is our passion and our purpose.
+
As the CEO of Skunkworks, I proudly wear multiple hats, overseeing all aspects of our business operations. From guiding our technological direction to managing financial planning and reporting, my mission is to provide a clear vision for our team, ensuring effective resource utilization, and keeping all our teams aligned with our mission.
Blended Learning: We design and implement blended learning programs that combine online digital media with traditional classroom methods. Personalized learning paths ensure each learner's unique needs are met.
+
Course Development: Custom eLearning courses are developed to meet specific client objectives, ensuring engaging and interactive content.
+
Project Mentoring: Our Project Mentoring service offers guided support throughout training engagements, ensuring successful implementation and application of new skills.
+
Performance Support Tools: We create custom job aids and guides to help employees apply new skills to real-world tasks.
+
Training Programs: Comprehensive training in soft skills, compliance, and boot camps, with outsourcing services available.
+
LMS Development and Management: Custom Learning Management System (LMS) development and management for efficient content delivery, tracking, and reporting.
+
+
+
+
Technology Solutions
+
+
Software Development: Our experienced developers design and develop custom software solutions, including web and mobile app development, software development, and application modernization.
+
Hardware and Software: We provide hardware and software products from major technology vendors, including servers, storage solutions, networking equipment, and software licenses.
+
Managed Cloud Services: Cloud-based solutions for businesses of all sizes, including mixed cloud models, cloud infrastructure management, security, disaster recovery, and cloud migration services.
+
Technical Support Services: Our technical support team provides timely and effective solutions to ensure your systems run smoothly. We offer 24/7 support, troubleshooting, and maintenance services.
At Skunkworks, we are proud to collaborate with industry leaders and technology giants to deliver the best solutions to our clients. Our partners include:
+
+
+
+
+
Amazon Web Services (AWS)
+
+
+
+
Microsoft Azure
+
+
+
+
Google Cloud Platform (GCP)
+
+
+
+
IBM Cloud
+
+
+
+
Oracle Cloud
+
+
+
+
DigitalOcean
+
+
+
+
Linode
+
+
+
+
McAfee
+
+
+
+
Symantec
+
+
+
+
Trend Micro
+
+
+
+
Fortinet
+
+
+
+
Palo Alto Networks
+
+
+
+
Checkpoint
+
+
+
+
CrowdStrike
+
+
+
+
FireEye
+
+
+
+
Kaspersky
+
+
+
+
Sophos
+
+
+
+
Dell
+
+
+
+
HP (Hewlett-Packard)
+
+
+
+
Lenovo
+
+
+
+
HashiCorp
+
+
+
+
Red Hat
+
+
+
+
SAP
+
+
+
+
Microsoft
+
+
+
+
GitHub
+
+
+
+
Atlassian
+
+
+
+
+
+
+
Our Achievements
+
+
+
+
+
+ 80
+
Instructors: Over 80 instructors and experts.
+
+
+
+
+
+
+
+ 40
+
Partnerships: More than 40 strategic partnerships.
+
+
+
+
+
+
+
+ 1000
+
Courses: Over 1000 courses offered.
+
+
+
+
+
+
+
About Us
+
Our team is dedicated to providing top-notch services, and our expertise spans various domains including education, technology, and business development.
+
+
Approach
+
We take a collaborative approach to every project, working closely with our clients to understand their needs and goals. We are committed to delivering solutions that meet or exceed our clients' expectations. Our team is responsive and accessible, and we pride ourselves on delivering exceptional customer service.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addIcons.js b/addIcons.js
new file mode 100644
index 00000000..2d39c5a8
--- /dev/null
+++ b/addIcons.js
@@ -0,0 +1,30 @@
+document.addEventListener('DOMContentLoaded', function () {
+ // Define the base URL for fetching the icons
+ const baseURL = 'https://raw.githubusercontent.com/skunkworksza/www/dc3276070f277756eceb712d3027dd8ba85ecccb/assets/icons/';
+
+ // Define the icons to be used and their corresponding classes or ids
+ const icons = {
+ 'accelerated-computing.svg': 'icon-computing',
+ 'ai--transparency.svg': 'icon-ai',
+ 'analyze.svg': 'icon-analyze',
+ 'blockchain.svg': 'icon-blockchain',
+ // Add more mappings here as needed
+ };
+
+ // Function to add icons to the page
+ function addIcons() {
+ for (const [filename, className] of Object.entries(icons)) {
+ const elements = document.querySelectorAll(`.${className}`);
+ elements.forEach(element => {
+ const img = document.createElement('img');
+ img.src = `${baseURL}${filename}`;
+ img.alt = className;
+ img.classList.add('icon');
+ element.appendChild(img);
+ });
+ }
+ }
+
+ // Call the function to add icons
+ addIcons();
+});
diff --git a/add_assets_to_html.py b/add_assets_to_html.py
new file mode 100644
index 00000000..d9dedef9
--- /dev/null
+++ b/add_assets_to_html.py
@@ -0,0 +1,44 @@
+import os
+
+def add_assets_to_html(directory, css_directory, js_directory):
+ css_files = [f for f in os.listdir(css_directory) if f.endswith('.css')]
+ js_files = [f for f in os.listdir(js_directory) if f.endswith('.js')]
+
+ css_links = [f'\n' for css_file in css_files]
+ js_scripts = [f'\n' for js_file in js_files]
+
+ for root, dirs, files in os.walk(directory):
+ for filename in files:
+ if filename.endswith(".html"):
+ filepath = os.path.join(root, filename)
+
+ with open(filepath, 'r', encoding='utf-8') as file:
+ lines = file.readlines()
+
+ # Add CSS links before the closing tag if not already present
+ head_index = next((i for i, line in enumerate(lines) if '' in line.lower()), None)
+ if head_index is not None:
+ for css_link in css_links:
+ if css_link not in lines:
+ lines.insert(head_index, css_link)
+ head_index += len(css_links) # Update head_index after insertion
+
+ # Add JS scripts before the closing
+>
+
+
+
+
+
+
+
+
+
+
Welcome to the Arista Networks page
+
This is the landing page for Arista Networks.
+
+
+
Training, Products, and Services
+
+
Training: Comprehensive training programs tailored to Arista Networks technologies.
+
Products: Access to Arista Networks products with expert guidance and support.
+
Services: Customized solutions and services to enhance your business operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
tag if not already present
+ body_index = next((i for i, line in enumerate(lines) if '' in line.lower()), None)
+ if body_index is not None:
+ for js_script in js_scripts:
+ if js_script not in lines:
+ lines.insert(body_index, js_script)
+
+ # Write the modified content back to the HTML file
+ with open(filepath, 'w', encoding='utf-8') as file:
+ file.writelines(lines)
+
+ print(f"Updated assets in {filepath}")
+
+# Set the directories where your HTML, CSS, and JS files are located
+html_directory = "./"
+css_directory = os.path.join(html_directory, "css")
+js_directory = os.path.join(html_directory, "js")
+
+add_assets_to_html(html_directory, css_directory, js_directory)
diff --git a/add_header_include.py b/add_header_include.py
new file mode 100644
index 00000000..cd6de542
--- /dev/null
+++ b/add_header_include.py
@@ -0,0 +1,137 @@
+import os
+import requests
+from bs4 import BeautifulSoup
+from PIL import Image
+from io import BytesIO
+import shutil
+
+def download_image(url, path):
+ try:
+ response = requests.get(url, stream=True)
+ if response.status_code == 200:
+ response.raw.decode_content = True
+ with open(path, 'wb') as out_file:
+ shutil.copyfileobj(response.raw, out_file)
+ return path
+ else:
+ print(f"Failed to download image from {url}: Status code {response.status_code}")
+ except Exception as e:
+ print(f"Failed to download image from {url}: {e}")
+ return None
+
+def resize_image(path, sizes):
+ try:
+ img = Image.open(path)
+ for size in sizes:
+ img.thumbnail(size, Image.ANTIALIAS)
+ img.save(f"{os.path.splitext(path)[0]}_{size[0]}x{size[1]}.png")
+ except Exception as e:
+ print(f"Failed to resize image {path}: {e}")
+
+def process_images(soup, base_directory):
+ for img_tag in soup.find_all('img'):
+ img_src = img_tag.get('src')
+ if img_src:
+ img_name = os.path.basename(img_src)
+ img_path = os.path.join(base_directory, 'assets', 'downloaded', img_name)
+ if not os.path.exists(img_path):
+ img_path = download_image(img_src, img_path)
+ if img_path and not img_path.endswith('.svg'): # Only resize if not an SVG
+ resize_image(img_path, [(16, 16), (32, 32), (128, 128)])
+ if img_path:
+ img_tag['src'] = os.path.relpath(img_path, base_directory)
+ else:
+ print(f"Image {img_src} could not be processed. Please check the URL or provide a valid image.")
+
+def update_html_files_with_header(header_file, base_directory):
+ with open(header_file, 'r', encoding='utf-8') as file:
+ header_content = file.read()
+
+ for root, dirs, files in os.walk(base_directory):
+ for filename in files:
+ if filename.endswith('.html') and filename != 'header.html':
+ filepath = os.path.join(root, filename)
+
+ with open(filepath, 'r', encoding='utf-8') as file:
+ content = file.read()
+
+ soup = BeautifulSoup(content, 'html.parser')
+ process_images(soup, base_directory)
+
+ new_header = BeautifulSoup(header_content, 'html.parser')
+ old_header = soup.find('header')
+ if old_header:
+ old_header.replace_with(new_header)
+ else:
+ body = soup.find('body')
+ if body:
+ body.insert(0, new_header)
+
+ with open(filepath, 'w', encoding='utf-8') as file:
+ file.write(str(soup))
+
+ print(f'Updated {filepath}')
+
+def remove_include_directives(base_directory):
+ for root, dirs, files in os.walk(base_directory):
+ for filename in files:
+ if filename.endswith('.html'):
+ filepath = os.path.join(root, filename)
+
+ with open(filepath, 'r', encoding='utf-8') as file:
+ content = file.readlines()
+
+ new_content = []
+ for line in content:
+ if "@@include('partials/header.html')" not in line:
+ new_content.append(line)
+
+ with open(filepath, 'w', encoding='utf-8') as file:
+ file.writelines(new_content)
+
+ print(f'Removed include directive from {filepath}')
+
+def add_assets_to_html_files(base_directory, css_files, js_files):
+ for root, dirs, files in os.walk(base_directory):
+ for filename in files:
+ if filename.endswith('.html'):
+ filepath = os.path.join(root, filename)
+
+ with open(filepath, 'r', encoding='utf-8') as file:
+ content = file.read()
+
+ soup = BeautifulSoup(content, 'html.parser')
+
+ # Add CSS links
+ head = soup.find('head')
+ if head:
+ for css_file in css_files:
+ link_tag = soup.new_tag('link', rel='stylesheet', href=css_file)
+ head.append(link_tag)
+
+ # Add JS scripts
+ body = soup.find('body')
+ if body:
+ for js_file in js_files:
+ script_tag = soup.new_tag('script', src=js_file)
+ body.append(script_tag)
+
+ with open(filepath, 'w', encoding='utf-8') as file:
+ file.write(str(soup))
+
+ print(f'Added assets to {filepath}')
+
+# Update the base_directory with the path to your project's root directory
+base_directory = './'
+header_file = os.path.join(base_directory, 'partials', 'header.html')
+css_files = ['./css/main.css', './css/header.css', './css/footer.css', './css/sidebar.css', './css/forms.css']
+js_files = ['./js/include-header.js', './js/partnerSearchFilter.js', './js/partnerFilter.js', './js/mobileDropdown.js', './js/main.js', './js/formHandler.js', './js/combinedPartnerFilter.js']
+
+# Remove include directives
+remove_include_directives(base_directory)
+
+# Update HTML files with the header
+update_html_files_with_header(header_file, base_directory)
+
+# Add CSS and JS assets to HTML files
+add_assets_to_html_files(base_directory, css_files, js_files)
diff --git a/arista-networks/Arista_Networks_logo.png b/arista-networks/Arista_Networks_logo.png
new file mode 100644
index 00000000..aa92930a
Binary files /dev/null and b/arista-networks/Arista_Networks_logo.png differ
diff --git a/arista-networks/Arista_Networks_logo_A.png b/arista-networks/Arista_Networks_logo_A.png
new file mode 100644
index 00000000..518a13fc
Binary files /dev/null and b/arista-networks/Arista_Networks_logo_A.png differ
diff --git a/arista-networks/arista-logo.jpeg b/arista-networks/arista-logo.jpeg
new file mode 100644
index 00000000..4f327a46
Binary files /dev/null and b/arista-networks/arista-logo.jpeg differ
diff --git a/arista-networks/index.html b/arista-networks/index.html
new file mode 100644
index 00000000..eeafaf44
--- /dev/null
+++ b/arista-networks/index.html
@@ -0,0 +1,184 @@
+
+
+
+