Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Nexory.org
# nexory.dev
Website for this organisation, informations and more
6 changes: 1 addition & 5 deletions public/dashboard/home.css
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,7 @@ body {
width: 0%;
background: linear-gradient(90deg, var(--color-grad-2), var(--color-grad-3));
border-radius: 99px;
animation: load-bar 1.2s ease forwards;
}

@keyframes load-bar {
to { width: 100%; }
transition: width 0.35s ease;
}

/* -- Hero Section -- */
Expand Down
71 changes: 54 additions & 17 deletions public/dashboard/home.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,73 @@
/* -- React Preloader -- */

const { useEffect, useRef } = React;
const { useEffect, useRef, useState } = React;

function Preloader() {
const ref = useRef(null);
const progressRef = useRef(0);
const [progress, setProgress] = useState(0);

useEffect(() => {
function showPage() {
ref.current.classList.add('hidden');
function advance(value) {
if (value > progressRef.current) {
progressRef.current = value;
setProgress(value);
}
}

setTimeout(() => {
document.getElementById('page').classList.remove('page-hidden');
startAnimations();
}, 500);
advance(5);

const resources = document.querySelectorAll(
'link[rel="stylesheet"], script[src], img[src]'
);
const expectedCount = resources.length;
let loadedCount = 0;

let observer;
try {
observer = new PerformanceObserver((list) => {
loadedCount += list.getEntries().length;
if (expectedCount > 0) {
const pct = Math.min(85, Math.round((loadedCount / expectedCount) * 85));
advance(pct);
}
});
observer.observe({ type: 'resource', buffered: true });
} catch (_) {}

if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => advance(25), { once: true });
} else {
advance(25);
}

function trigger() {
setTimeout(showPage, 1300);
function finishLoading() {
if (observer) observer.disconnect();
advance(100);
setTimeout(() => {
if (ref.current) ref.current.classList.add('hidden');
setTimeout(() => {
document.getElementById('page').classList.remove('page-hidden');
startAnimations();
}, 500);
}, 450);
}

if (document.readyState === 'complete') {
trigger();
setTimeout(finishLoading, 200);
} else {
window.addEventListener('load', trigger, { once: true });
window.addEventListener('load', () => setTimeout(finishLoading, 200), { once: true });
}

return () => {
if (observer) observer.disconnect();
};
}, []);

return (
<div id="preloader" ref={ref}>
<div className="preloader-logo">Nexory.Org</div>
<div className="preloader-logo">nexory.dev</div>
<div className="preloader-bar">
<div className="preloader-bar-inner"></div>
<div className="preloader-bar-inner" style={{ width: progress + '%' }}></div>
</div>
</div>
);
Expand All @@ -42,7 +79,7 @@ ReactDOM.createRoot(document.getElementById('preloader-root')).render(<Preloader
function startAnimations() {
const canvas = document.getElementById('code-canvas');
const ctx = canvas.getContext('2d');
const PARTICLE_COUNT = 100;
const PARTICLE_COUNT = 150;
const CONNECTION_DIST = 200;
const SPEED = 0.4;
let particles = [];
Expand Down Expand Up @@ -108,7 +145,7 @@ function startAnimations() {
draw();

const CODE =
`class NexoryOrg:
`class nexory:
def __init__(self, org_name):
self.org = org_name
self.people = []
Expand All @@ -118,7 +155,7 @@ function startAnimations() {
print(f"Welcome to {self.org}, {new_user}!")

if __name__ == "__main__":
org = NexoryOrg("Nexory.Org")
org = NexoryOrg("nexory.dev")
org.join("Your Name")
org.run()`;

Expand Down
6 changes: 3 additions & 3 deletions public/dashboard/home.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
<title data-i18n="home.title"><?= e(t('home.title')) ?></title>
<script>
window.__i18nPage = {
de: { 'home.title': 'Nexory.Org' },
en: { 'home.title': 'Nexory.Org \u2013 Open Source Projects' }
de: { 'home.title': 'nexory.dev' },
en: { 'home.title': 'nexory.dev' }
};
</script>
<link rel="stylesheet" href="../dashboard/home.css">
Expand All @@ -33,7 +33,7 @@

<div class="hero-content">
<div class="info">
<h1>Nexory.Org</h1>
<h1>nexory.dev</h1>
<p>Open source projects &middot; Python, JavaScript, PHP and more</p>
</div>

Expand Down
117 changes: 117 additions & 0 deletions public/footer/footer.css
Original file line number Diff line number Diff line change
@@ -1 +1,118 @@
/* -- Footer -- */

.footer {
border-top: 1px solid var(--color-border);
background: var(--color-bg-surface);
font-family: 'Fira Code', monospace;
color: var(--color-text);
}

.footer-container {
display: flex;
flex-wrap: wrap;
gap: 3rem;
justify-content: space-between;
align-items: flex-start;
max-width: 1100px;
margin: 0 auto;
padding: 3rem 2rem 2rem;
}

/* -- Brand -- */

.footer-brand {
display: flex;
flex-direction: column;
gap: 0.6rem;
max-width: 260px;
}

.footer-logo {
font-size: 1.2rem;
font-weight: 600;
background: linear-gradient(135deg, var(--color-grad-1) 0%, var(--color-grad-2) 35%, var(--color-grad-3) 70%, var(--color-grad-4) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}

.footer-tagline {
font-size: 0.78rem;
color: var(--color-text-muted);
margin: 0;
line-height: 1.6;
}

/* -- Sections -- */

.footer-section {
display: flex;
flex-direction: column;
gap: 0.75rem;
}

.footer-section-title {
font-size: 0.72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--color-text-muted);
margin: 0 0 0.25rem;
}

.footer-nav-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 0.55rem;
}

.footer-nav-list li a {
text-decoration: none;
color: var(--color-text-muted);
font-size: 0.85rem;
transition: color 0.25s ease;
}

.footer-nav-list li a:hover {
color: var(--color-accent);
}

/* -- Social link -- */

.footer-social-link {
display: inline-flex;
align-items: center;
gap: 0.45rem;
}

/* -- Bottom bar -- */

.footer-bottom {
border-top: 1px solid var(--color-border-subtle);
text-align: center;
padding: 1rem 2rem;
}

.footer-bottom p {
margin: 0;
font-size: 0.78rem;
color: var(--color-text-muted);
}

/* -- Responsive -- */

@media (max-width: 640px) {
.footer-container {
flex-direction: column;
gap: 2rem;
padding: 2rem 1.25rem 1.5rem;
}

.footer-brand {
max-width: 100%;
}
}

36 changes: 36 additions & 0 deletions public/footer/footer.php
Original file line number Diff line number Diff line change
@@ -1 +1,37 @@
<footer class="footer">
<div class="footer-container">

<div class="footer-brand">
<span class="footer-logo">nexory.dev</span>
<p class="footer-tagline"><?= e(t('footer.tagline')) ?></p>
</div>

<div class="footer-section">
<h4 class="footer-section-title"><?= e(t('footer.nav_heading')) ?></h4>
<ul class="footer-nav-list">
<li><a href="<?= e(with_language('../dashboard/home.php')) ?>"><?= e(t('nav.home')) ?></a></li>
<li><a href="<?= e(with_language('../github/github.php')) ?>"><?= e(t('nav.github')) ?></a></li>
<li><a href="<?= e(with_language('../contact/contact.php')) ?>"><?= e(t('nav.contact')) ?></a></li>
</ul>
</div>

<div class="footer-section">
<h4 class="footer-section-title"><?= e(t('footer.links_heading')) ?></h4>
<ul class="footer-nav-list">
<li>
<a href="https://github.com/NexoryOrg" target="_blank" rel="noopener noreferrer" class="footer-social-link">
<svg aria-hidden="true" width="16" height="16" viewBox="0 0 16 16" fill="currentColor">
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"/>
</svg>
NexoryOrg
</a>
</li>
</ul>
</div>

</div>

<div class="footer-bottom">
<p>© <?= date('Y') ?> nexory.dev</p>
</div>
</footer>
2 changes: 1 addition & 1 deletion public/init.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
$rawHost = (string)($_SERVER['HTTP_HOST'] ?? '');
$cookieHost = (string)parse_url(($secure ? 'https' : 'http') . '://' . $rawHost, PHP_URL_HOST);

$allowedCookieBaseDomains = ['nexory.org'];
$allowedCookieBaseDomains = ['nexory.dev'];

if ($cookieHost !== '' && filter_var($cookieHost, FILTER_VALIDATE_IP) === false) {
foreach ($allowedCookieBaseDomains as $baseDomain) {
Expand Down
10 changes: 8 additions & 2 deletions public/language.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,20 @@ function t($key) {
'nav.github' => 'Github',
'nav.contact' => 'Kontakt',
'nav.language_switcher' => 'Sprachwechsel',
'home.title' => 'Nexory.Org',
'home.title' => 'nexory.dev',
'footer.tagline' => 'Open-Source-Projekte · Python, JavaScript, PHP und mehr',
'footer.nav_heading' => 'Navigation',
'footer.links_heading' => 'Links',
],
'en' => [
'nav.home' => 'Home',
'nav.github' => 'Github',
'nav.contact' => 'Contact',
'nav.language_switcher' => 'Language Switcher',
'home.title' => 'Nexory.Org',
'home.title' => 'nexory.dev',
'footer.tagline' => 'Open source projects · Python, JavaScript, PHP and more',
'footer.nav_heading' => 'Navigation',
'footer.links_heading' => 'Links',
]
];

Expand Down
Loading