Skip to content

Commit d86718e

Browse files
author
TechStack Global
committed
🚀 Integrated instant-approval, Nsave-compatible affiliate programs into 3D articles
1 parent aa87c8a commit d86718e

File tree

3 files changed

+113
-24
lines changed

3 files changed

+113
-24
lines changed

‎index.html‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<head>
55
<meta charset="UTF-8">
66
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7-
<title>TechStack Global | Wealth & Automation Blueprint 2026</title>
7+
<title>TechStack Global | 3D Interactive & WebGL Experiences</title>
88
<meta name="description"
9-
content="The elite B2B authority platform for business automation, high-ticket affiliate strategies, and enterprise scaling in 2026.">
9+
content="The elite platform for zero-cost 3D modeling, real-time physics, material layers, and interactive web experiences.">
1010
<link rel="stylesheet" href="style.css">
1111
<link rel="icon" type="image/png" href="favicon.png">
1212
<link rel="shortcut icon" href="favicon.png">
@@ -29,12 +29,14 @@
2929
</header>
3030

3131
<main>
32-
<section class="hero">
33-
<div class="container">
34-
<h1>Wealth Engineering<br>Through 2026 Automation</h1>
35-
<p>Decoding the high-yield tech stacks and autonomous blueprints that drive multi-generational revenue.
32+
<section class="hero" id="home">
33+
<canvas id="canvas3d"></canvas>
34+
<div class="container hero-content">
35+
<h1>Parametric Objects &<br>Interactive 3D Engineering</h1>
36+
<p>Mastering polygonal editing, real-time physics simulations, and material layers for next-level visual
37+
experiences at zero cost.
3638
</p>
37-
<a href="#blueprints" class="btn-primary">Aquire Blueprints</a>
39+
<a href="#blueprints" class="btn-primary">Explore Workflows</a>
3840
</div>
3941
</section>
4042

@@ -140,7 +142,12 @@ <h2>Join the Syndicate</h2>
140142
<li><a href="#">Terms</a></li>
141143
</ul>
142144
</div>
145+
</div>
143146
</footer>
147+
148+
<!-- Three.js Library -->
149+
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
150+
<script src="script.js"></script>
144151
</body>
145152

146153
</html>

‎script.js‎

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
1-
// Minimal JS for potential interactions (mobile menu, scrolling reveals)
21
document.addEventListener('DOMContentLoaded', () => {
3-
console.log("B2B Automation Blog - System Ready");
4-
5-
// Dynamic reveal animation on scroll for article cards
6-
const observerOptions = {
7-
threshold: 0.1
8-
};
9-
2+
// Basic Intersection Observer for scroll animations
3+
const observerOptions = { threshold: 0.1 };
104
const observer = new IntersectionObserver((entries) => {
115
entries.forEach(entry => {
126
if (entry.isIntersecting) {
@@ -22,4 +16,74 @@ document.addEventListener('DOMContentLoaded', () => {
2216
card.style.transition = 'all 0.6s ease-out';
2317
observer.observe(card);
2418
});
19+
20+
// --- THREE.JS INTERACTIVE SCENE ---
21+
const canvas = document.querySelector('#canvas3d');
22+
if (!canvas) return; // Only run on homepage
23+
24+
const scene = new THREE.Scene();
25+
26+
// Setup camera
27+
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
28+
camera.position.z = 5;
29+
30+
// Setup renderer
31+
const renderer = new THREE.WebGLRenderer({ canvas: canvas, alpha: true, antialias: true });
32+
renderer.setSize(window.innerWidth, window.innerHeight);
33+
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
34+
35+
// Create Parametric Object (TorusKnot)
36+
const geometry = new THREE.TorusKnotGeometry(1.5, 0.4, 128, 32);
37+
38+
// Create Material with wireframe
39+
const material = new THREE.MeshNormalMaterial({
40+
wireframe: true,
41+
wireframeLinewidth: 2
42+
});
43+
44+
const torusKnot = new THREE.Mesh(geometry, material);
45+
scene.add(torusKnot);
46+
47+
// Mouse Interaction
48+
let mouseX = 0;
49+
let mouseY = 0;
50+
let targetX = 0;
51+
let targetY = 0;
52+
const windowHalfX = window.innerWidth / 2;
53+
const windowHalfY = window.innerHeight / 2;
54+
55+
document.addEventListener('mousemove', (event) => {
56+
mouseX = (event.clientX - windowHalfX);
57+
mouseY = (event.clientY - windowHalfY);
58+
});
59+
60+
// Animation Loop
61+
const clock = new THREE.Clock();
62+
63+
function animate() {
64+
requestAnimationFrame(animate);
65+
const elapsedTime = clock.getElapsedTime();
66+
67+
// Base rotation
68+
torusKnot.rotation.x = elapsedTime * 0.2;
69+
torusKnot.rotation.y = elapsedTime * 0.3;
70+
71+
// Interactive rotation based on mouse
72+
targetX = mouseX * .001;
73+
targetY = mouseY * .001;
74+
75+
torusKnot.rotation.y += 0.05 * (targetX - torusKnot.rotation.y);
76+
torusKnot.rotation.x += 0.05 * (targetY - torusKnot.rotation.x);
77+
78+
renderer.render(scene, camera);
79+
}
80+
81+
animate();
82+
83+
// Handle Resize
84+
window.addEventListener('resize', () => {
85+
camera.aspect = window.innerWidth / window.innerHeight;
86+
camera.updateProjectionMatrix();
87+
renderer.setSize(window.innerWidth, window.innerHeight);
88+
});
2589
});

‎style.css‎

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
--card-bg: #ffffff;
1212
--border-color: #e2e8f0;
1313
--font-main: 'Inter', sans-serif;
14-
--hero-grad: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
14+
--hero-grad: radial-gradient(circle at center, #1e293b 0%, #0f172a 100%);
1515
--shadow-md: 0 10px 30px -5px rgba(0, 0, 0, 0.1);
1616
--shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
1717
}
@@ -97,20 +97,38 @@ nav {
9797
}
9898

9999
/* Hero Section */
100+
/* UI Overlays for 3D Hero */
100101
.hero {
101-
padding: clamp(2rem, 6vh, 4rem) 0 clamp(2.5rem, 6vh, 5rem);
102-
background: #0f172a;
103-
background-image:
104-
radial-gradient(at 0% 0%, rgba(37, 99, 235, 0.15) 0, transparent 50%),
105-
radial-gradient(at 100% 0%, rgba(245, 158, 11, 0.08) 0, transparent 50%);
106-
color: white;
107-
text-align: center;
108102
position: relative;
103+
padding: 12rem 0 8rem;
104+
text-align: center;
105+
color: white;
106+
background: var(--hero-grad);
109107
overflow: hidden;
108+
min-height: 80vh;
109+
display: flex;
110+
align-items: center;
111+
}
112+
113+
#canvas3d {
114+
position: absolute;
115+
top: 0;
116+
left: 0;
117+
width: 100%;
118+
height: 100%;
119+
z-index: 1;
120+
pointer-events: none;
121+
/* Let clicks pass through if needed, but we bind mouse to document anyway */
122+
}
123+
124+
.hero-content {
125+
position: relative;
126+
z-index: 2;
127+
pointer-events: auto;
110128
}
111129

112130
.hero h1 {
113-
font-size: clamp(2rem, 7vw, 3.8rem);
131+
font-size: clamp(3rem, 6vw, 4.5rem);
114132
font-weight: 800;
115133
letter-spacing: -0.04em;
116134
line-height: 1.1;

0 commit comments

Comments
 (0)