anycoder-61ca6d4b / index.html
SilentShado's picture
Upload folder using huggingface_hub
79d91a7 verified
Raw
History Blame Contribute Delete
12.5 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LinuxZoo Access Portal</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
:root {
--primary: #2c3e50;
--secondary: #3498db;
--accent: #e74c3c;
--light: #ecf0f1;
--dark: #2c3e50;
--success: #2ecc71;
}
body {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
color: var(--light);
}
.header {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 40px;
position: fixed;
top: 0;
background: rgba(44, 62, 80, 0.9);
backdrop-filter: blur(10px);
z-index: 1000;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.logo {
font-size: 1.8rem;
font-weight: 700;
color: var(--light);
}
.anycoder-link {
color: var(--light);
text-decoration: none;
font-size: 0.9rem;
transition: color 0.3s;
}
.anycoder-link:hover {
color: var(--secondary);
}
.container {
max-width: 900px;
width: 100%;
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(15px);
border-radius: 20px;
padding: 40px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
margin-top: 80px;
}
h1 {
text-align: center;
margin-bottom: 10px;
font-size: 2.5rem;
font-weight: 700;
}
.subtitle {
text-align: center;
margin-bottom: 40px;
font-size: 1.1rem;
opacity: 0.8;
}
.linux-icon {
text-align: center;
font-size: 4rem;
margin-bottom: 30px;
color: var(--secondary);
}
.subscribe-section {
background: rgba(255, 255, 255, 0.15);
border-radius: 15px;
padding: 30px;
margin-bottom: 30px;
text-align: center;
border: 2px solid rgba(255, 255, 255, 0.2);
}
.subscribe-title {
font-size: 1.4rem;
margin-bottom: 15px;
font-weight: 600;
}
.subscribe-desc {
margin-bottom: 25px;
opacity: 0.9;
}
.subscribe-btn {
background: linear-gradient(to right, #e74c3c, #c0392b);
color: white;
border: none;
padding: 14px 30px;
border-radius: 10px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
display: inline-flex;
align-items: center;
gap: 10px;
box-shadow: 0 4px 15px rgba(231, 76, 60, 0.3);
}
.subscribe-btn:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(231, 76, 60, 0.4);
}
.subscribe-btn:active {
transform: translateY(0);
}
.access-form {
display: flex;
flex-direction: column;
gap: 25px;
}
.form-group {
display: flex;
flex-direction: column;
gap: 8px;
}
label {
font-weight: 600;
font-size: 1rem;
}
input,
select {
padding: 15px;
border-radius: 10px;
border: 2px solid rgba(255, 255, 255, 0.2);
background: rgba(255, 255, 255, 0.1);
color: var(--light);
font-size: 1rem;
transition: all 0.3s;
}
input:focus,
select:focus {
outline: none;
border-color: var(--secondary);
background: rgba(255, 255, 255, 0.15);
}
input::placeholder {
color: rgba(255, 255, 255, 0.6);
}
.access-btn {
background: linear-gradient(to right, var(--secondary), #2980b9);
color: white;
border: none;
padding: 16px;
border-radius: 10px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
margin-top: 10px;
box-shadow: 0 4px 15px rgba(52, 152, 219, 0.3);
}
.access-btn:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(52, 152, 219, 0.4);
}
.access-btn:active {
transform: translateY(0);
}
.access-btn:disabled {
background: linear-gradient(to right, #95a5a6, #7f8c8d);
cursor: not-allowed;
transform: none;
box-shadow: none;
}
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin-top: 40px;
}
.feature-card {
background: rgba(255, 255, 255, 0.1);
padding: 25px;
border-radius: 15px;
text-align: center;
transition: transform 0.3s;
}
.feature-card:hover {
transform: translateY(-5px);
}
.feature-icon {
font-size: 2.5rem;
margin-bottom: 15px;
color: var(--secondary);
}
.feature-title {
font-size: 1.2rem;
font-weight: 600;
margin-bottom: 10px;
}
.feature-desc {
font-size: 0.9rem;
opacity: 0.8;
}
.redirecting {
text-align: center;
padding: 40px;
display: none;
}
.spinner {
width: 50px;
height: 50px;
border: 5px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: var(--secondary);
animation: spin 1s linear infinite;
margin: 0 auto 20px;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.countdown {
font-size: 1.2rem;
margin-top: 20px;
}
.subscribed-badge {
background: var(--success);
color: white;
padding: 8px 16px;
border-radius: 20px;
font-size: 0.9rem;
font-weight: 600;
display: inline-flex;
align-items: center;
gap: 8px;
margin-bottom: 15px;
}
@media (max-width: 768px) {
.container {
padding: 30px 20px;
}
h1 {
font-size: 2rem;
}
.header {
padding: 15px 20px;
}
.logo {
font-size: 1.5rem;
}
}
@media (max-width: 480px) {
.container {
padding: 20px 15px;
}
h1 {
font-size: 1.8rem;
}
.linux-icon {
font-size: 3rem;
}
.features {
grid-template-columns: 1fr;
}
.subscribe-section {
padding: 20px 15px;
}
}
</style>
</head>
<body>
<header class="header">
<div class="logo">LinuxZoo Portal</div>
<a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link">Built with anycoder</a>
</header>
<div class="container">
<div class="linux-icon">
<i class="fab fa-linux"></i>
</div>
<h1>LinuxZoo Access Portal</h1>
<p class="subtitle">Subscribe to my channel to unlock access to the LinuxZoo learning environment</p>
<div id="subscribeSection" class="subscribe-section">
<div class="subscribe-title">🔓 Unlock LinuxZoo Access</div>
<p class="subscribe-desc">You need to subscribe to my YouTube channel to access the LinuxZoo environment. Once subscribed, you can proceed with login.</p>
<button id="subscribeBtn" class="subscribe-btn">
<i class="fab fa-youtube"></i> Subscribe to My Channel
</button>
<div id="subscribedStatus" class="subscribed-badge" style="display: none;">
<i class="fas fa-check-circle"></i> Successfully Subscribed!
</div>
</div>
<div id="loginForm" style="display: none;">
<form class="access-form">
<div class="form-group">
<label for="username">Username</label>
<input type="text" id="username" placeholder="Enter your username" required>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" placeholder="Enter your password" required>
</div>
<div class="form-group">
<label for="environment">Select Environment</label>
<select id="environment">
<option value="ubuntu">Ubuntu</option>
<option value="centos">CentOS</option>
<option value="debian">Debian</option>
<option value="fedora">Fedora</option>
</select>
</div>
<button type="submit" class="access-btn">Access LinuxZoo</button>
</form>
<div class="features">
<div class="feature-card">
<div class="feature-icon">
<i class="fas fa-server"></i>
</div>
<h3 class="feature-title">Virtual Machines</h3>
<p class="feature-desc">Access full Linux virtual machines in your browser</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i class="fas fa-terminal"></i>
</div>
<h3 class="feature-title">Command Line</h3>
<p class="feature-desc">Practice Linux commands in a safe environment</p>
</div>
<div class="feature-card">
<div class="feature-icon">
<i class="fas fa-graduation-cap"></i>
</div>
<h3 class="feature-title">Learning Resources</h3>
<p class="feature-desc">Tutorials and exercises for all skill levels</p>
</div>
</div>
</div>
<div id="redirecting" class="redirecting">
<div class="spinner"></div>
<h2>Access Granted!</h2>
<p>Redirecting you to LinuxZoo...</p>
<div class="countdown" id="countdown">5</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const subscribeBtn = document.getElementById('subscribeBtn');
const subscribedStatus = document.getElementById('subscribedStatus');
const subscribeSection = document.getElementById('subscribeSection');
const loginFormContainer = document.getElementById('loginForm');
const loginForm = document.querySelector('.access-form');
const redirectingContainer = document.getElementById('redirecting');
const countdownElement = document.getElementById('countdown');
// Channel link - replace with your actual channel URL
const channelUrl = 'https://www.youtube.com/channel/YOUR_CHANNEL_ID';
// Check if user is already subscribed (localStorage)
const isSubscribed = localStorage.getItem('linuxzoo_subscribed');
if (isSubscribed === 'true') {
showLoginForm();
}
subscribeBtn.addEventListener('click', function() {
// Open channel in new tab
window.open(channelUrl, '_blank');
// Show subscribed status
subscribedStatus.style.display = 'inline-flex';
subscribeBtn.style.display = 'none';
// Store subscription status
localStorage.setItem('linuxzoo_subscribed', 'true');
// Show success message
setTimeout(() => {
showLoginForm();
}, 2000);
});
function showLoginForm() {
subscribeSection.style.display = 'none';
loginFormContainer.style.display = 'block';
}
loginForm.addEventListener('submit', function(e) {
e.preventDefault();
// Get form values
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
const environment = document.getElementById('environment').value;
// Validate form
if (username && password) {
// Show redirecting message
loginFormContainer.style.display = 'none';
redirectingContainer.style.display = 'block';
// Start countdown
let countdown = 5;
const countdownInterval = setInterval(() => {
countdown--;
countdownElement.textContent = countdown;
if (countdown <= 0) {
clearInterval(countdownInterval);
// Redirect to LinuxZoo
window.location.href = 'https://linuxzoo.net/';
}
}, 1000);
} else {
alert('Please fill in all fields');
}
});
});
</script>
</body>
</html>