simulations / index.html
jnm-itb
feat: update remote journaling link and enhance simulation description in index.html
f746138
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Jatnikonm's Simulation Showcase</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
--space-blue: #0d0221;
--neon-purple: #9d00ff;
--cosmic-blue: #2b00ff;
--starlight: #f8f8ff;
--mystic-purple: #6a00f4;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Courier New', monospace;
}
body {
background-color: var(--space-blue);
color: var(--starlight);
overflow-x: hidden;
min-height: 100vh;
perspective: 1000px;
background-image:
radial-gradient(circle at 20% 30%, rgba(154, 0, 255, 0.15) 0%, transparent 30%),
radial-gradient(circle at 80% 70%, rgba(43, 0, 255, 0.15) 0%, transparent 30%);
}
.spiral-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0.3;
}
.spiral {
position: absolute;
border-radius: 50%;
border: 1px solid var(--neon-purple);
animation: spin var(--duration) linear infinite;
filter: blur(0.5px);
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
position: relative;
z-index: 1;
}
header {
text-align: center;
margin-bottom: 3rem;
position: relative;
}
h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
color: var(--starlight);
text-shadow: 0 0 10px var(--neon-purple), 0 0 20px var(--cosmic-blue);
position: relative;
display: inline-block;
}
h1::after {
content: '';
position: absolute;
bottom: -10px;
left: 50%;
transform: translateX(-50%);
width: 60%;
height: 3px;
background: linear-gradient(90deg, transparent, var(--neon-purple), var(--cosmic-blue), transparent);
border-radius: 50%;
}
.cat-icon {
position: absolute;
font-size: 1.8rem;
animation: float 3s ease-in-out infinite;
opacity: 0.8;
}
.cat-icon:nth-child(1) {
top: -20px;
left: 10%;
color: var(--neon-purple);
animation-delay: 0s;
}
.cat-icon:nth-child(2) {
top: 50px;
right: 15%;
color: var(--cosmic-blue);
animation-delay: 0.5s;
}
.cat-icon:nth-child(3) {
bottom: -30px;
left: 20%;
color: var(--mystic-purple);
animation-delay: 1s;
}
@keyframes float {
0%, 100% { transform: translateY(0) rotate(0deg); }
50% { transform: translateY(-10px) rotate(5deg); }
}
.subtitle {
font-style: italic;
color: var(--mystic-purple);
margin-bottom: 2rem;
text-align: center;
}
.links-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
}
.card-link {
text-decoration: none; /* Remove underline from link */
color: inherit; /* Inherit text color */
display: block; /* Make the link a block element */
transition: transform 0.3s ease, box-shadow 0.3s ease; /* Add transitions here */
}
.card-link:hover {
transform: translateY(-5px) rotate(1deg); /* Move hover effect here */
box-shadow: 0 5px 15px var(--neon-purple); /* Move hover effect here */
}
.link-card {
background: rgba(13, 2, 33, 0.7);
border: 1px solid var(--neon-purple);
border-radius: 10px;
padding: 1.5rem;
position: relative;
overflow: hidden;
backdrop-filter: blur(5px);
height: 100%; /* Ensure cards fill the link height */
}
.card-link:hover .link-card { /* Apply border color change on link hover */
border-color: var(--cosmic-blue);
}
.link-card::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: radial-gradient(circle, var(--neon-purple), transparent 70%);
opacity: 0;
transition: opacity 0.5s ease;
}
.card-link:hover .link-card::before {
opacity: 0.1;
}
.link-title {
font-size: 1.2rem;
margin-bottom: 0.5rem;
color: var(--starlight);
display: flex;
align-items: center;
}
.link-icon {
margin-right: 0.5rem;
color: var(--cosmic-blue);
}
.link-description {
font-size: 0.9rem;
color: rgba(248, 248, 255, 0.7);
margin-bottom: 1rem;
}
footer {
text-align: center;
margin-top: 3rem;
font-size: 0.8rem;
color: var(--mystic-purple);
opacity: 0.7;
}
.stars {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -2;
}
.star {
position: absolute;
width: 2px;
height: 2px;
background: white;
border-radius: 50%;
animation: twinkle 5s infinite;
}
@keyframes twinkle {
0%, 100% { opacity: 0.2; }
50% { opacity: 1; }
}
.mystic-eye {
position: fixed;
bottom: 20px;
right: 20px;
width: 60px;
height: 60px;
background: radial-gradient(circle, var(--neon-purple) 0%, var(--space-blue) 70%);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
box-shadow: 0 0 15px var(--neon-purple);
z-index: 10;
transition: all 0.3s ease;
}
.mystic-eye:hover {
transform: scale(1.1);
}
.eye-pupil {
width: 15px;
height: 15px;
background-color: var(--space-blue);
border-radius: 50%;
position: relative;
animation: blink 5s infinite;
}
@keyframes blink {
0%, 48%, 52%, 100% { transform: scaleY(1); }
50% { transform: scaleY(0.1); }
}
@media (max-width: 600px) {
h1 {
font-size: 1.8rem;
}
.links-container {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<div class="stars" id="stars"></div>
<div class="spiral-bg" id="spiral-bg"></div>
<div class="container">
<header>
<i class="fas fa-cogs cat-icon"></i>
<i class="fas fa-atom cat-icon"></i>
<i class="fas fa-project-diagram cat-icon"></i>
<h1>Jatnikonm's Simulation Showcase</h1>
<p class="subtitle">Exploring various simulation examples</p>
</header>
<div class="links-container">
<!-- Wrap each card in an anchor tag -->
<a href="dt_preservasi.html" class="card-link"> <!-- Updated href -->
<div class="link-card">
<h3 class="link-title"><i class="fas fa-archive link-icon"></i> Digital Twin Preservasi Arsip</h3> <!-- Updated icon and title -->
<p class="link-description">Simulasi digital twin untuk manajemen dan preservasi arsip statis.</p> <!-- Updated description -->
<!-- Removed inner link -->
</div>
</a>
<a href="remote_journaling.html" class="card-link"> <!-- Updated href -->
<div class="link-card">
<h3 class="link-title"><i class="fas fa-sync-alt link-icon"></i> Remote Journaling Simulation</h3> <!-- Updated icon and title -->
<p class="link-description">Simulasi proses remote journaling untuk disaster recovery.</p> <!-- Updated description -->
<!-- Removed inner link -->
</div>
</a>
<a href="blockchain.html" class="card-link"> <!-- Updated href -->
<div class="link-card">
<h3 class="link-title"><i class="fas fa-cubes link-icon"></i> Blockchain Simulation</h3> <!-- Updated icon and title -->
<p class="link-description">Visualisasi alur penyimpanan arsip menggunakan IPFS dan Blockchain.</p> <!-- Updated description -->
<!-- Removed inner link -->
</div>
</a>
<a href="#" class="card-link">
<div class="link-card">
<h3 class="link-title"><i class="fas fa-leaf link-icon"></i> Ecosystem Simulation</h3>
<p class="link-description">A model demonstrating predator-prey dynamics.</p>
<!-- Removed inner link -->
</div>
</a>
<a href="#" class="card-link">
<div class="link-card">
<h3 class="link-title"><i class="fas fa-network-wired link-icon"></i> Network Traffic</h3>
<p class="link-description">Simulate data flow and congestion in networks.</p>
<!-- Removed inner link -->
</div>
</a>
<a href="#" class="card-link">
<div class="link-card">
<h3 class="link-title"><i class="fas fa-car link-icon"></i> Traffic Simulation</h3>
<p class="link-description">Model vehicle movement and traffic light systems.</p>
<!-- Removed inner link -->
</div>
</a>
<a href="unet.html" class="card-link">
<div class="link-card">
<h3 class="link-title"><i class="fas fa-brain link-icon"></i> Simulasi Arsitektur U-Net</h3>
<p class="link-description">Visualisasi arsitektur U-Net yang umum digunakan untuk segmentasi gambar biomedis.</p>
<!-- Removed inner link -->
</div>
</a>
</div>
<footer>
<p>🌀 Created by jatnikonm · 2024 · Simulation Examples ⚙️</p>
</footer>
</div>
<div class="mystic-eye">
<div class="eye-pupil"></div>
</div>
<script>
// Create spirals in background
const spiralBg = document.getElementById('spiral-bg');
for (let i = 0; i < 10; i++) {
const spiral = document.createElement('div');
spiral.classList.add('spiral');
const size = Math.random() * 300 + 100;
const x = Math.random() * 100;
const y = Math.random() * 100;
const duration = Math.random() * 60 + 60;
spiral.style.width = `${size}px`;
spiral.style.height = `${size}px`;
spiral.style.left = `${x}%`;
spiral.style.top = `${y}%`;
spiral.style.borderWidth = `${Math.random() * 3 + 1}px`;
spiral.style.setProperty('--duration', `${duration}s`);
spiralBg.appendChild(spiral);
}
// Create stars
const starsContainer = document.getElementById('stars');
for (let i = 0; i < 200; i++) {
const star = document.createElement('div');
star.classList.add('star');
const size = Math.random() * 3;
const x = Math.random() * 100;
const y = Math.random() * 100;
const delay = Math.random() * 5;
const duration = Math.random() * 5 + 5;
star.style.width = `${size}px`;
star.style.height = `${size}px`;
star.style.left = `${x}%`;
star.style.top = `${y}%`;
star.style.animationDelay = `${delay}s`;
star.style.animationDuration = `${duration}s`;
starsContainer.appendChild(star);
}
// Mystic eye interaction
const mysticEye = document.querySelector('.mystic-eye');
mysticEye.addEventListener('click', () => {
document.body.classList.toggle('show-secret');
alert('⚙️ Welcome to the simulation hub! Created by jatnikonm. ✨');
// Create a temporary spiral effect
for (let i = 0; i < 10; i++) {
const spiral = document.createElement('div');
spiral.classList.add('spiral');
const size = Math.random() * 200 + 50;
const x = Math.random() * 80 + 10;
const y = Math.random() * 80 + 10;
const duration = Math.random() * 40 + 20;
spiral.style.width = `${size}px`;
spiral.style.height = `${size}px`;
spiral.style.left = `${x}%`;
spiral.style.top = `${y}%`;
spiral.style.borderColor = `hsl(${Math.random() * 60 + 270}, 100%, 70%)`;
spiral.style.position = 'fixed';
spiral.style.zIndex = '5';
spiral.style.setProperty('--duration', `${duration}s`);
document.body.appendChild(spiral);
// Remove after animation completes
setTimeout(() => {
spiral.remove();
}, duration * 1000);
}
});
</script>
</body>
</html>