From 2c0dcc1c76aa56e3c69a9f3d8d67f29da2dcdfad Mon Sep 17 00:00:00 2001
From: Luca <87448287+LUCA-PYTHON@users.noreply.github.com>
Date: Fri, 3 Apr 2026 13:39:44 +0200
Subject: [PATCH 1/3] Update home.css
---
public/dashboard/home.css | 69 ++++++++++++++++++++++++++++++++++++---
1 file changed, 64 insertions(+), 5 deletions(-)
diff --git a/public/dashboard/home.css b/public/dashboard/home.css
index cc99a61..f50441a 100644
--- a/public/dashboard/home.css
+++ b/public/dashboard/home.css
@@ -10,6 +10,67 @@ body {
background-color: #0d1117;
}
+/* -- Preloader -- */
+
+.page-hidden {
+ opacity: 0;
+ visibility: hidden;
+}
+
+#page {
+ transition: opacity 0.4s ease;
+}
+
+#preloader {
+ position: fixed;
+ inset: 0;
+ z-index: 9999;
+ background: #0d1117;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 1.5rem;
+ transition: opacity 0.5s ease, visibility 0.5s ease;
+}
+
+#preloader.hidden {
+ opacity: 0;
+ visibility: hidden;
+}
+
+.preloader-logo {
+ font-size: 2rem;
+ font-weight: 600;
+ background: linear-gradient(135deg, #7ee8fa 0%, #58a6ff 35%, #a78bfa 70%, #c084fc 100%);
+ background-size: 200% auto;
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ animation: shimmer 2s linear infinite;
+}
+
+.preloader-bar {
+ width: 200px;
+ height: 3px;
+ background: #21262d;
+ border-radius: 99px;
+ overflow: hidden;
+}
+
+.preloader-bar-inner {
+ height: 100%;
+ width: 0%;
+ background: linear-gradient(90deg, #58a6ff, #a78bfa);
+ border-radius: 99px;
+ animation: load-bar 1.2s ease forwards;
+}
+
+@keyframes load-bar {
+ to { width: 100%; }
+}
+
+/* -- Hero Section -- */
.hero {
position: relative;
width: 100vw;
@@ -25,7 +86,7 @@ body {
inset: 0;
width: 100%;
height: 100%;
- opacity: 0.3;
+ opacity: 0.7;
pointer-events: none;
}
@@ -38,7 +99,6 @@ body {
z-index: 1;
}
-/* ── Content ────────────────────────────────────────── */
.hero-content {
position: relative;
z-index: 2;
@@ -51,7 +111,6 @@ body {
max-width: 680px;
}
-/* ── Info ───────────────────────────────────────────── */
.info {
text-align: center;
}
@@ -80,7 +139,7 @@ body {
letter-spacing: 0.04em;
}
-/* ── Terminal ───────────────────────────────────────── */
+/* -- Coding animation -- */
.terminal {
width: 100%;
background: rgba(22, 27, 34, 0.92);
@@ -145,4 +204,4 @@ body {
@keyframes blink {
50% { opacity: 0; }
-}
\ No newline at end of file
+}
From a816c6fbdd91f9f94b8ed792522203e1cb9c17e4 Mon Sep 17 00:00:00 2001
From: Luca <87448287+LUCA-PYTHON@users.noreply.github.com>
Date: Fri, 3 Apr 2026 13:39:58 +0200
Subject: [PATCH 2/3] Update home.js
---
public/dashboard/home.js | 290 ++++++++++++++++++++++++++++++++-------
1 file changed, 242 insertions(+), 48 deletions(-)
diff --git a/public/dashboard/home.js b/public/dashboard/home.js
index c2df9ac..ae0a107 100644
--- a/public/dashboard/home.js
+++ b/public/dashboard/home.js
@@ -1,46 +1,114 @@
-// ── Canvas Rain ──────────────────────────────────────────────────────────────
-const canvas = document.getElementById('code-canvas');
-const ctx = canvas.getContext('2d');
+/* -- React Preloader -- */
-function resizeCanvas() {
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
-}
-resizeCanvas();
+const { useEffect, useRef } = React;
+
+function Preloader() {
+ const ref = useRef(null);
+
+ useEffect(() => {
+ function showPage() {
+ ref.current.classList.add('hidden');
+
+ setTimeout(() => {
+ document.getElementById('page').classList.remove('page-hidden');
+ startAnimations();
+ }, 500);
+ }
+
+ function trigger() {
+ setTimeout(showPage, 1300);
+ }
-const FONT_SIZE = 14;
-const CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789<>=+-*/[]{}();:#'.split('');
-let drops = [];
+ if (document.readyState === 'complete') {
+ trigger();
+ } else {
+ window.addEventListener('load', trigger, { once: true });
+ }
+ }, []);
-function initDrops() {
- const cols = Math.floor(canvas.width / FONT_SIZE);
- drops = Array.from({ length: cols }, () => Math.floor(Math.random() * -(canvas.height / FONT_SIZE)));
+ return (
+
+ );
}
-initDrops();
-window.addEventListener('resize', () => { resizeCanvas(); initDrops(); });
+ReactDOM.createRoot(document.getElementById('preloader-root')).render();
+
+/* -- start animation for home page after page loaded -- */
+
+function startAnimations() {
+ const canvas = document.getElementById('code-canvas');
+ const ctx = canvas.getContext('2d');
+ const PARTICLE_COUNT = 100;
+ const CONNECTION_DIST = 200;
+ const SPEED = 0.4;
+ let particles = [];
+
+ function resize() {
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+ }
+ resize();
+ window.addEventListener('resize', resize);
+
+ for (let i = 0; i < PARTICLE_COUNT; i++) {
+ particles.push({
+ x: Math.random() * canvas.width,
+ y: Math.random() * canvas.height,
+ vx: (Math.random() - 0.5) * SPEED,
+ vy: (Math.random() - 0.5) * SPEED,
+ r: Math.random() * 1.8 + 1.2,
+ });
+ }
+
+ function draw() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
-function drawRain() {
- ctx.fillStyle = 'rgba(13, 17, 23, 0.07)';
- ctx.fillRect(0, 0, canvas.width, canvas.height);
- ctx.font = `${FONT_SIZE}px "Fira Code", monospace`;
+ particles.forEach(p => {
+ p.x += p.vx;
+ p.y += p.vy;
+ if (p.x < 0 || p.x > canvas.width) p.vx *= -1;
+ if (p.y < 0 || p.y > canvas.height) p.vy *= -1;
+ });
- drops.forEach((y, i) => {
- const char = CHARS[Math.floor(Math.random() * CHARS.length)];
- const alpha = Math.random() * 0.5 + 0.05;
- ctx.fillStyle = `rgba(88, 166, 255, ${alpha})`;
- ctx.fillText(char, i * FONT_SIZE, y * FONT_SIZE);
+ for (let i = 0; i < particles.length; i++) {
+ for (let j = i + 1; j < particles.length; j++) {
+ const dx = particles[i].x - particles[j].x;
+ const dy = particles[i].y - particles[j].y;
+ const dist = Math.sqrt(dx * dx + dy * dy);
- if (y * FONT_SIZE > canvas.height && Math.random() > 0.975) {
- drops[i] = 0;
+ if (dist < CONNECTION_DIST) {
+ const alpha = 1 - dist / CONNECTION_DIST;
+ ctx.beginPath();
+ ctx.moveTo(particles[i].x, particles[i].y);
+ ctx.lineTo(particles[j].x, particles[j].y);
+ ctx.strokeStyle = `rgba(88, 166, 255, ${alpha * 0.6})`;
+ ctx.lineWidth = 1;
+ ctx.stroke();
+ }
+ }
}
- drops[i]++;
- });
-}
-setInterval(drawRain, 40);
+ particles.forEach(p => {
+ ctx.beginPath();
+ ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
+ ctx.fillStyle = 'rgba(167, 139, 250, 0.95)';
+ ctx.shadowColor = 'rgba(167, 139, 250, 0.6)';
+ ctx.shadowBlur = 6;
+ ctx.fill();
+ ctx.shadowBlur = 0;
+ });
-const CODE = `class NexoryOrg:
+ requestAnimationFrame(draw);
+ }
+ draw();
+
+ const CODE =
+`class NexoryOrg:
def __init__(self, org_name):
self.org = org_name
self.people = []
@@ -57,24 +125,150 @@ if __name__ == "__main__":
org.join("Your Name")
org.run()`;
-const output = document.getElementById('code-output');
-const TYPE_SPEED = 58;
-const WAIT_MS = 20000;
-
-function startTyping() {
- output.textContent = '';
- let i = 0;
+ const output = document.getElementById('code-output');
+ const TYPE_SPEED = 58;
+ const WAIT_MS = 20000;
- function type() {
- if (i < CODE.length) {
- output.textContent = CODE.slice(0, i + 1);
- i++;
- setTimeout(type, TYPE_SPEED);
- } else {
- setTimeout(startTyping, WAIT_MS);
+ function startTyping() {
+ output.textContent = '';
+ let i = 0;
+ function type() {
+ if (i < CODE.length) {
+ output.textContent = CODE.slice(0, i + 1);
+ i++;
+ setTimeout(type, TYPE_SPEED);
+ } else {
+ setTimeout(startTyping, WAIT_MS);
+ }
}
+ type();
}
- type();
+ startTyping();
+}
+
+/* -- Hero Section with Canvas and Typewriter -- */
+function Hero() {
+ const canvasRef = useRef(null);
+ const outputRef = useRef(null);
+
+ useEffect(() => {
+ const canvas = canvasRef.current;
+ const ctx = canvas.getContext('2d');
+ const FONT_SIZE = 14;
+ const CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789<>=+-*/[]{}();:#'.split('');
+ let drops = [];
+
+ function resize() {
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+ const cols = Math.floor(canvas.width / FONT_SIZE);
+ drops = Array.from({ length: cols }, () =>
+ Math.floor(Math.random() * -(canvas.height / FONT_SIZE))
+ );
+ }
+ resize();
+ window.addEventListener('resize', resize);
+
+ const interval = setInterval(() => {
+ ctx.fillStyle = 'rgba(13, 17, 23, 0.07)';
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
+ ctx.font = `${FONT_SIZE}px "Fira Code", monospace`;
+
+ drops.forEach((y, i) => {
+ const char = CHARS[Math.floor(Math.random() * CHARS.length)];
+ const alpha = Math.random() * 0.5 + 0.05;
+ ctx.fillStyle = `rgba(88, 166, 255, ${alpha})`;
+ ctx.fillText(char, i * FONT_SIZE, y * FONT_SIZE);
+ if (y * FONT_SIZE > canvas.height && Math.random() > 0.975) drops[i] = 0;
+ drops[i]++;
+ });
+ }, 40);
+
+ return () => {
+ clearInterval(interval);
+ window.removeEventListener('resize', resize);
+ };
+ }, []);
+
+ useEffect(() => {
+ const CODE =
+`class NexoryOrg:
+ def __init__(self, org_name):
+ self.org = org_name
+ self.people = []
+
+ def join(self, new_user):
+ self.people.append(new_user)
+ print(f"Success, {new_user} joined")
+
+ def run(self):
+ print(f"Welcome to {self.org}!")
+
+if __name__ == "__main__":
+ org = NexoryOrg("Nexory.Org")
+ org.join("Your Name")
+ org.run()`;
+
+ const TYPE_SPEED = 58;
+ const WAIT_MS = 20000;
+ let timeout;
+
+ function startTyping() {
+ outputRef.current.textContent = '';
+ let i = 0;
+ function type() {
+ if (i < CODE.length) {
+ outputRef.current.textContent = CODE.slice(0, i + 1);
+ i++;
+ timeout = setTimeout(type, TYPE_SPEED);
+ } else {
+ timeout = setTimeout(startTyping, WAIT_MS);
+ }
+ }
+ type();
+ }
+ startTyping();
+
+ return () => clearTimeout(timeout);
+ }, []);
+
+ return (
+
+
+
+
+
+
Nexory.Org
+
Open source projects · Python, JavaScript, PHP and more
+
+
+
+
+
+
+
+ nexory.py
+
+
+
+
+
+ );
+}
+
+/* -- App -- */
+function App() {
+ const [loaded, setLoaded] = useState(false);
+
+ return (
+ <>
+ {!loaded && setLoaded(true)} />}
+
+ >
+ );
}
-startTyping();
\ No newline at end of file
+ReactDOM.createRoot(document.getElementById('root')).render();
From db20dd48e26d9484a440f32329f1b45fbea8be48 Mon Sep 17 00:00:00 2001
From: Luca <87448287+LUCA-PYTHON@users.noreply.github.com>
Date: Fri, 3 Apr 2026 13:40:09 +0200
Subject: [PATCH 3/3] Update home.php
---
public/dashboard/home.php | 49 ++++++++++++++++++++++-----------------
1 file changed, 28 insertions(+), 21 deletions(-)
diff --git a/public/dashboard/home.php b/public/dashboard/home.php
index a6fbeca..868cbc0 100644
--- a/public/dashboard/home.php
+++ b/public/dashboard/home.php
@@ -17,34 +17,41 @@
-
+
-
-
+
+
-
-
-
Nexory.Org
-
Open source projects · Python, JavaScript, PHP and more
-
+