mirror of
https://github.com/mileswolfallen2/miles-web.git
synced 2026-09-08 11:23:17 +00:00
155 lines
7.1 KiB
HTML
155 lines
7.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>FEDL | Miles Wolf Allen</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body>
|
|
<div class="mesh-bg"></div>
|
|
<div class="grid-overlay"></div>
|
|
<div class="noise"></div>
|
|
|
|
<div class="container">
|
|
<nav>
|
|
<a href="../index.html" class="nav-logo"><span class="logo-dot"></span> miles.dev</a>
|
|
<div class="nav-links">
|
|
<a href="../index.html#about">About</a>
|
|
<a href="../index.html#skills">Skills</a>
|
|
<a href="../index.html#projects">Projects</a>
|
|
<a href="../index.html#contact">Contact</a>
|
|
</div>
|
|
</nav>
|
|
|
|
<section class="project-hero">
|
|
<div class="breadcrumb">
|
|
<a href="../index.html">Home</a>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
|
|
<span>FEDL</span>
|
|
</div>
|
|
|
|
<h1>FEDL</h1>
|
|
<p class="tagline">A Geometry Dash demon list site with ranked levels, run submissions, admin moderation, accounts, and community features.</p>
|
|
|
|
<div class="project-meta-bar">
|
|
<a href="https://github.com/mileswolfallen2/fedl" class="meta-chip primary" target="_blank">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22"/></svg>
|
|
View on GitHub
|
|
</a>
|
|
<a href="https://fedl.site" class="meta-chip" target="_blank">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg>
|
|
Live Site
|
|
</a>
|
|
<span class="meta-chip">HTML / JS / CSS</span>
|
|
<span class="meta-chip">196 commits</span>
|
|
<span class="meta-chip">2 stars</span>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="reveal">
|
|
<div class="section-divider"></div>
|
|
<h2 class="section-title">What It Includes</h2>
|
|
<p class="section-subtitle">Full-featured list site with frontend and backend</p>
|
|
|
|
<div class="feature-grid">
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
|
|
Ranked List Browser
|
|
</h3>
|
|
<p>Browse the ranked demon list with search, filters, and video playback for each level.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 5v14M5 12h14"/></svg>
|
|
Run Submissions
|
|
</h3>
|
|
<p>Submit runs for review. Admins can approve, reject, or bulk-approve submissions.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/></svg>
|
|
Accounts & Auth
|
|
</h3>
|
|
<p>Signup, login, and synced user state. Bearer token authentication with session management.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/></svg>
|
|
Community
|
|
</h3>
|
|
<p>Community posts, bug reports, and private direct messages between users.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
|
Rank Guesser
|
|
</h3>
|
|
<p>A guessing game where you try to identify the rank of demon levels on the list.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>
|
|
Demon Roulette
|
|
</h3>
|
|
<p>Randomly pick a demon level to play. Uses level ID lookup for fast selection.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><line x1="9" y1="3" x2="9" y2="21"/></svg>
|
|
Admin Panel
|
|
</h3>
|
|
<p>Admin moderation page for list editing, run management, and AREDL/Pointercrate imports.</p>
|
|
</div>
|
|
<div class="feature-card">
|
|
<h3>
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 10h-1.26A8 8 0 109 20h9a5 5 0 000-10z"/></svg>
|
|
Live Updates
|
|
</h3>
|
|
<p>Server-Sent Events for real-time list data updates across connected clients.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="reveal">
|
|
<div class="section-divider"></div>
|
|
<h2 class="section-title">Tech Stack</h2>
|
|
<div class="tech-stack">
|
|
<span class="tech-badge">HTML (49.8%)</span>
|
|
<span class="tech-badge">JavaScript (29.8%)</span>
|
|
<span class="tech-badge">CSS (20.4%)</span>
|
|
<span class="tech-badge">Node.js</span>
|
|
<span class="tech-badge">Server-Sent Events</span>
|
|
<span class="tech-badge">localStorage</span>
|
|
<span class="tech-badge">JSON</span>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="reveal">
|
|
<div class="section-divider"></div>
|
|
<h2 class="section-title">Local Setup</h2>
|
|
<code-block>
|
|
<span class="comment"># Make sure Node.js is installed, then:</span><br>
|
|
<span class="cmd">node server/server.js</span><br><br>
|
|
<span class="comment"># Open the site at:</span><br>
|
|
http://127.0.0.1:8090/fedl/<br><br>
|
|
<span class="comment"># Expose on local network:</span><br>
|
|
HOST=0.0.0.0 PORT=8090 <span class="cmd">node server/server.js</span>
|
|
</code-block>
|
|
</section>
|
|
|
|
<footer>
|
|
<a href="../index.html" style="color: var(--accent); text-decoration: none;">Back to Home</a> · Built by Miles · 2026
|
|
</footer>
|
|
</div>
|
|
|
|
<script>
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });
|
|
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });
|
|
document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
|
|
</script>
|
|
</body>
|
|
</html>
|