diff --git a/index.html b/index.html index 9071e5e..2d30f2f 100644 --- a/index.html +++ b/index.html @@ -4,76 +4,26 @@ Miles Wolf Allen | Developer & 3D Artist + + -
-
-
+
+
+
-
- +
+ Available to collaborate
-

Hi, I'm Miles

-

Developer and 3D artist interested in coding, games, and websites. Currently learning backend development with JavaScript.

-
-
+
+
+
--
+
Repos
+
+
+
--
+
Stars
+
+
+
--
+
Followers
+
+
+
--
+
Following
+
+
+ +
+
Miles

Miles Wolf Allen

-
@mileswolfallen2
-

Working on stuff. Looking to collaborate on games or websites.

+
@mileswolfallen2
+
Building cool stuff on the web. Games, tools, and whatever catches my interest.
-
142 repos
-
91 stars
-
12 followers
-
36 following
+
142 repos
+
91 stars
+
12 followers
- -
+
- + Pull Shark x2
- + YOLO
- + Quickdraw
-
-

Skills & Tech

-

Technologies I work with and tools I know

- -
-
Proficient In
-
-
- - JavaScript -
-
- - HTML -
-
- - CSS -
-
- - Python -
-
- - Git -
-
- - Blender -
-
- - Unity -
-
- - Unreal -
-
- - Cloudflare -
-
- - Linux -
-
- - Netlify -
-
- - Replit -
-
- - VS Code -
-
- - Bash -
-
- - npm -
-
- - GitHub -
-
+
+
+
+

Skills & Tech

+

Technologies, tools, and things I work with

-
-
Currently Learning
-
-
- - PHP -
-
- - .NET -
-
- - Nix -
-
- - Yarn -
-
- - Backend JS -
-
+
Proficient In
+
+
JavaScript
+
HTML
+
CSS
+
Python
+
Git
+
Blender
+
Unity
+
Unreal
+
Cloudflare
+
Linux
+
Netlify
+
Bash
+
GitHub
+
+ +
Currently Learning
+
+
PHP
+
.NET
+
Nix
+
Yarn
+
Backend JS
-
-

Projects

-

Things I've built

+
+
+
+

Projects

+

Things I've built and forked

+
-
-
- -
- Active Development +
+
+ Active

OmniEmu 2.0

Cross-platform emulator manager and game launcher. Install 20+ emulators, scan ROMs, and launch games from a unified library.

-
- - - 1 - - MIT License - v0.3.2 -
+
★ 1MITv0.3.2
-
-
- -
- Community Project +
+
+ Community

FEDL

Geometry Dash demon list site with ranked levels, run submissions, admin moderation, and community features.

-
- - - 2 - - 196 commits - Live -
+
★ 2196 commitsLive
+ -
-
- -
- Active Development +
+
+ Active

Noto

-

AI-powered note-taking app built with Flutter and Dart. Features Cortex AI integration, Markdown support, and Pi compatibility.

-
- - - 1 - - MIT License - -
+

AI-powered note-taking app built with Flutter and Dart. Features Cortex AI integration and Markdown support.

+
★ 1MIT
+ -
-
- -
- Python +
+
+ Python

Nova AI

Voice/text AI assistant with desktop GUI, web interface, and CLI. Runs locally on Ollama with multiple model support.

-
- - - 1 - - MIT License -
+
★ 1MIT
-
-
- -
- JavaScript +
+
+ JavaScript

Music App

Ad-free music player web app inspired by YouTube Music. Stream music without interruptions.

-
- - - 1 - - Apache-2.0 -
+
★ 1Apache-2.0
-
-
-

Get In Touch

-

Let's build something together

+
+
+
+

Get In Touch

+

Let's build something together

+
- Built by Miles · 2026 + Built by Miles · 2026 · Powered by GitHub API
+ diff --git a/projects/decompilations.html b/projects/decompilations.html index ef4e2f5..abff477 100644 --- a/projects/decompilations.html +++ b/projects/decompilations.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

What It Includes

@@ -80,14 +84,16 @@
-
+
+

How to Help

Share projects with others, help with development or bug fixes, keep information up to date, and contribute additional project details.

-
+
+

Tech Stack

HTML (100%) @@ -100,5 +106,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/fedl.html b/projects/fedl.html index e0ef9d2..cebe29f 100644 --- a/projects/fedl.html +++ b/projects/fedl.html @@ -7,13 +7,13 @@ -
-
-
+
+
+
-
+
+

What It Includes

Full-featured list site with frontend and backend

@@ -111,7 +112,8 @@
-
+
+

Tech Stack

HTML (49.8%) @@ -124,21 +126,29 @@
-
+
+

Local Setup

-
+ # Make sure Node.js is installed, then:
node server/server.js

# Open the site at:
http://127.0.0.1:8090/fedl/

# Expose on local network:
HOST=0.0.0.0 PORT=8090 node server/server.js -
+
+ + diff --git a/projects/geode-mod.html b/projects/geode-mod.html index 0c4dfd4..b1f426c 100644 --- a/projects/geode-mod.html +++ b/projects/geode-mod.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Features

@@ -77,7 +81,8 @@
-
+
+

Settings

Configure the mod in Geode mod settings:

@@ -98,14 +103,16 @@
-
+
+

API Integration

Connects to the FEDL server API at fedl.site with endpoints for login, signup, user state, and the demon list.

-
+
+

Tech Stack

C++ (98.2%) @@ -115,7 +122,8 @@
-
+
+

Build

# Install Geode CLI if you haven't already
@@ -130,5 +138,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/issue-tracker.html b/projects/issue-tracker.html index 4be634d..f4ee974 100644 --- a/projects/issue-tracker.html +++ b/projects/issue-tracker.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

About

A custom issue tracker built as a learning project. Features a Node.js server backend with a clean HTML/CSS/JavaScript frontend for creating, viewing, and managing issues.

-
+
+

Features

@@ -83,7 +88,8 @@
-
+
+

Tech Stack

HTML (91.1%) @@ -97,5 +103,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/moon-gaming.html b/projects/moon-gaming.html index e015b43..f5ea329 100644 --- a/projects/moon-gaming.html +++ b/projects/moon-gaming.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

About

A passion project for browser-based gaming

@@ -71,7 +75,8 @@
-
+
+

Tech Stack

@@ -102,7 +107,8 @@
-
+
+

Quick Start

@@ -123,5 +129,11 @@ Back to Home
+ \ No newline at end of file diff --git a/projects/music-app.html b/projects/music-app.html index 7b2fd4d..2d498c1 100644 --- a/projects/music-app.html +++ b/projects/music-app.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Features

@@ -80,7 +84,8 @@
-
+
+

Project Files

@@ -101,7 +106,8 @@ -
+
+

Tech Stack

JavaScript (89.7%) @@ -117,5 +123,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/noto.html b/projects/noto.html index f9bb543..58d3531 100644 --- a/projects/noto.html +++ b/projects/noto.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Features

Your second brain, everywhere

@@ -111,7 +115,8 @@
-
+
+

AI Configuration

@@ -133,7 +138,8 @@
-
+
+

Tech Stack

Dart (74.4%) @@ -148,7 +154,8 @@
-
+
+

Quick Start

# Prerequisites: Flutter 3.44+

@@ -162,5 +169,11 @@ Back to Home · Built by Miles · 2025
+ diff --git a/projects/nova.html b/projects/nova.html index cf5c9e4..961f199 100644 --- a/projects/nova.html +++ b/projects/nova.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Entry Points

Multiple interfaces for different use cases

@@ -72,7 +76,8 @@
-
+
+

Features

@@ -120,7 +125,8 @@
-
+
+

Quick Start

pip install -r requirements.txt
@@ -129,7 +135,8 @@
-
+
+

Tech Stack

Python (100%) @@ -145,5 +152,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/omniemu.html b/projects/omniemu.html index 4f6a281..002c9b5 100644 --- a/projects/omniemu.html +++ b/projects/omniemu.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Features

Everything you need to manage your game library

@@ -112,7 +116,8 @@
-
+
+

Supported Emulators

20+ emulators across Windows, macOS, and Linux

@@ -146,7 +151,8 @@
-
+
+

Tech Stack

TypeScript (91.4%) @@ -160,7 +166,8 @@
-
+
+

Quick Start

Download the latest release for your platform, launch OmniEmu, install an emulator from the Library, set your ROMs directory, and start playing.

@@ -180,5 +187,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/rhythm-game.html b/projects/rhythm-game.html index 61a00bf..b50294a 100644 --- a/projects/rhythm-game.html +++ b/projects/rhythm-game.html @@ -7,13 +7,16 @@ +
+
+
-
+
+

Features

@@ -96,7 +100,8 @@
-
+
+

Tech Stack

HTML (96%) @@ -112,5 +117,11 @@ Back to Home · Built by Miles · 2026
+ diff --git a/projects/style.css b/projects/style.css index 6db8094..aac4a8a 100644 --- a/projects/style.css +++ b/projects/style.css @@ -1,17 +1,19 @@ * { margin: 0; padding: 0; box-sizing: border-box; } :root { - --bg: #0a0a0f; - --surface: #12121a; - --surface-hover: #1a1a25; - --border: #1e1e2e; - --text: #e4e4e7; - --text-dim: #71717a; - --accent: #6366f1; - --accent-glow: rgba(99, 102, 241, 0.15); - --green: #22c55e; + --bg: #05050a; + --surface: rgba(15, 15, 25, 0.7); + --surface-solid: #0f0f19; + --border: rgba(255, 255, 255, 0.06); + --border-bright: rgba(255, 255, 255, 0.12); + --text: #f0f0f5; + --text-dim: #6b6b80; + --accent: #7c5cff; + --accent-2: #00d4ff; + --accent-3: #ff5caa; + --green: #00ff88; --purple: #a855f7; - --cyan: #06b6d4; + --glow: rgba(124, 92, 255, 0.4); } body { @@ -20,72 +22,117 @@ body { color: var(--text); line-height: 1.6; overflow-x: hidden; + -webkit-font-smoothing: antialiased; } -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); -.bg-grid { +/* ANIMATED MESH BG */ +.mesh-bg { + position: fixed; + inset: 0; + z-index: 0; + overflow: hidden; +} +.mesh-bg::before { + content: ''; + position: absolute; + width: 150%; + height: 150%; + top: -25%; + left: -25%; + background: + radial-gradient(ellipse 600px 600px at 20% 20%, rgba(124, 92, 255, 0.12) 0%, transparent 70%), + radial-gradient(ellipse 500px 500px at 80% 30%, rgba(0, 212, 255, 0.08) 0%, transparent 70%), + radial-gradient(ellipse 400px 400px at 50% 80%, rgba(255, 92, 170, 0.06) 0%, transparent 70%); + animation: meshMove 20s ease-in-out infinite alternate; +} +@keyframes meshMove { + 0% { transform: translate(0, 0) scale(1); } + 33% { transform: translate(30px, -20px) scale(1.02); } + 66% { transform: translate(-20px, 30px) scale(0.98); } + 100% { transform: translate(10px, -10px) scale(1.01); } +} + +.grid-overlay { position: fixed; inset: 0; background-image: - linear-gradient(rgba(99, 102, 241, 0.03) 1px, transparent 1px), - linear-gradient(90deg, rgba(99, 102, 241, 0.03) 1px, transparent 1px); - background-size: 60px 60px; + linear-gradient(rgba(255, 255, 255, 0.015) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, 0.015) 1px, transparent 1px); + background-size: 80px 80px; + mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%); + -webkit-mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%); pointer-events: none; - z-index: 0; -} - -.bg-glow { - position: fixed; - width: 600px; - height: 600px; - border-radius: 50%; - filter: blur(120px); - opacity: 0.07; - pointer-events: none; - z-index: 0; -} - -.bg-glow-1 { background: var(--accent); top: -200px; left: 10%; } -.bg-glow-2 { background: var(--purple); bottom: -200px; right: 10%; } - -.container { - max-width: 900px; - margin: 0 auto; - padding: 0 24px; - position: relative; z-index: 1; } +.noise { + position: fixed; + inset: 0; + opacity: 0.03; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); + pointer-events: none; + z-index: 1; +} + +.container { + max-width: 1100px; + margin: 0 auto; + padding: 0 28px; + position: relative; + z-index: 2; +} + +/* NAV */ nav { - padding: 32px 0; + padding: 28px 0; display: flex; justify-content: space-between; align-items: center; } .nav-logo { - font-weight: 700; - font-size: 1.1rem; - color: var(--accent); + font-weight: 900; + font-size: 1.2rem; + color: var(--text); text-decoration: none; - letter-spacing: -0.02em; + letter-spacing: -0.03em; + display: flex; + align-items: center; + gap: 8px; +} +.nav-logo .logo-dot { + width: 10px; + height: 10px; + border-radius: 50%; + background: var(--accent); + box-shadow: 0 0 12px var(--glow); + animation: dotPulse 3s ease-in-out infinite; +} +@keyframes dotPulse { + 0%, 100% { box-shadow: 0 0 12px var(--glow); } + 50% { box-shadow: 0 0 24px var(--glow), 0 0 48px rgba(124, 92, 255, 0.2); } } -.nav-links { display: flex; gap: 28px; } - +.nav-links { display: flex; gap: 8px; align-items: center; } .nav-links a { color: var(--text-dim); text-decoration: none; - font-size: 0.875rem; + font-size: 0.85rem; font-weight: 500; - transition: color 0.2s; + padding: 8px 14px; + border-radius: 8px; + transition: all 0.25s; +} +.nav-links a:hover { + color: var(--text); + background: rgba(255, 255, 255, 0.05); } -.nav-links a:hover { color: var(--text); } - +/* PROJECT HERO */ .project-hero { - padding: 60px 0 40px; + padding: 80px 0 40px; } .breadcrumb { @@ -94,25 +141,19 @@ nav { gap: 8px; font-size: 0.85rem; color: var(--text-dim); - margin-bottom: 24px; + margin-bottom: 28px; } - .breadcrumb a { color: var(--text-dim); text-decoration: none; transition: color 0.2s; } - -.breadcrumb a:hover { color: var(--text); } - -.breadcrumb svg { - width: 14px; - height: 14px; -} +.breadcrumb a:hover { color: var(--accent); } +.breadcrumb svg { width: 14px; height: 14px; } .project-hero h1 { - font-size: 2.5rem; - font-weight: 800; + font-size: clamp(2rem, 5vw, 3.5rem); + font-weight: 900; letter-spacing: -0.04em; line-height: 1.1; margin-bottom: 12px; @@ -123,11 +164,12 @@ nav { color: var(--text-dim); max-width: 600px; margin-bottom: 28px; + line-height: 1.7; } .project-meta-bar { display: flex; - gap: 16px; + gap: 10px; flex-wrap: wrap; align-items: center; } @@ -137,138 +179,170 @@ nav { align-items: center; gap: 6px; background: var(--surface); + backdrop-filter: blur(12px); border: 1px solid var(--border); - padding: 6px 14px; - border-radius: 8px; + padding: 8px 16px; + border-radius: 10px; font-size: 0.8rem; + font-weight: 500; color: var(--text-dim); text-decoration: none; - transition: all 0.2s; + transition: all 0.25s; } - .meta-chip:hover { border-color: var(--accent); color: var(--text); + transform: translateY(-1px); } - -.meta-chip svg { - width: 14px; - height: 14px; -} - +.meta-chip svg { width: 14px; height: 14px; } .meta-chip.primary { background: var(--accent); border-color: var(--accent); color: #fff; + box-shadow: 0 0 20px rgba(124, 92, 255, 0.3); } - .meta-chip.primary:hover { - background: #4f46e5; + background: #6a4ae8; + box-shadow: 0 0 30px rgba(124, 92, 255, 0.5); + transform: translateY(-1px); } -section { padding: 40px 0; } +section { padding: 48px 0; } + +.section-divider { + width: 60px; + height: 3px; + background: linear-gradient(90deg, var(--accent), var(--accent-2)); + border-radius: 3px; + margin-bottom: 16px; +} .section-title { - font-size: 1.4rem; - font-weight: 700; - letter-spacing: -0.03em; + font-size: 2rem; + font-weight: 900; + letter-spacing: -0.04em; margin-bottom: 8px; } .section-subtitle { color: var(--text-dim); - font-size: 0.9rem; - margin-bottom: 24px; + font-size: 0.95rem; + margin-bottom: 28px; + line-height: 1.6; } +/* FEATURE GRID */ .feature-grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; } .feature-card { background: var(--surface); + backdrop-filter: blur(16px); border: 1px solid var(--border); - border-radius: 12px; - padding: 20px; + border-radius: 14px; + padding: 24px; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} +.feature-card::after { + content: ''; + position: absolute; + inset: 0; + border-radius: 14px; + padding: 1px; + background: linear-gradient(135deg, var(--accent), var(--accent-2)); + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + opacity: 0; + transition: opacity 0.3s; + pointer-events: none; +} +.feature-card:hover::after { opacity: 1; } +.feature-card:hover { + transform: translateY(-3px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3), 0 0 20px rgba(124, 92, 255, 0.06); } .feature-card h3 { - font-size: 0.95rem; - font-weight: 600; - margin-bottom: 6px; + font-size: 1rem; + font-weight: 700; + margin-bottom: 8px; display: flex; align-items: center; - gap: 8px; + gap: 10px; } - .feature-card h3 svg { - width: 18px; - height: 18px; + width: 20px; + height: 20px; color: var(--accent); flex-shrink: 0; } - .feature-card p { - font-size: 0.82rem; + font-size: 0.85rem; color: var(--text-dim); - line-height: 1.5; + line-height: 1.6; } +/* TECH STACK */ .tech-stack { display: flex; gap: 8px; flex-wrap: wrap; } - .tech-badge { background: var(--surface); + backdrop-filter: blur(12px); border: 1px solid var(--border); - padding: 6px 12px; - border-radius: 8px; - font-size: 0.78rem; - font-weight: 500; + padding: 8px 16px; + border-radius: 10px; + font-size: 0.8rem; + font-weight: 600; + transition: all 0.25s; } - -.table-wrapper { - overflow-x: auto; +.tech-badge:hover { + border-color: var(--accent); + color: var(--text); + transform: translateY(-1px); } +/* TABLE */ +.table-wrapper { overflow-x: auto; } table { width: 100%; border-collapse: collapse; font-size: 0.85rem; } - th, td { text-align: left; - padding: 10px 14px; + padding: 12px 16px; border-bottom: 1px solid var(--border); } - th { color: var(--text-dim); - font-weight: 600; - font-size: 0.75rem; + font-weight: 700; + font-size: 0.72rem; text-transform: uppercase; - letter-spacing: 0.06em; + letter-spacing: 0.08em; } - td { color: var(--text); } - .check { color: var(--green); } .cross { color: var(--text-dim); opacity: 0.4; } +/* CODE BLOCK */ .desc-text { color: var(--text-dim); font-size: 0.9rem; line-height: 1.7; max-width: 680px; } - .desc-text code { - background: var(--surface); + background: var(--surface-solid); border: 1px solid var(--border); padding: 2px 6px; border-radius: 4px; @@ -277,29 +351,43 @@ td { color: var(--text); } code-block { background: var(--surface); + backdrop-filter: blur(12px); border: 1px solid var(--border); - border-radius: 10px; - padding: 16px 20px; + border-radius: 12px; + padding: 20px 24px; font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.82rem; color: var(--text-dim); overflow-x: auto; margin: 12px 0; } - code-block .comment { color: #4a5568; } -code-block .cmd { color: var(--cyan); } +code-block .cmd { color: var(--accent-2); } +/* FOOTER */ footer { text-align: center; - padding: 48px 0; + padding: 60px 0 40px; color: var(--text-dim); font-size: 0.8rem; border-top: 1px solid var(--border); margin-top: 40px; } +footer a { color: var(--accent); text-decoration: none; } + +/* REVEAL */ +.reveal { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.7s cubic-bezier(0.4, 0, 0.2, 1), transform 0.7s cubic-bezier(0.4, 0, 0.2, 1); +} +.reveal.visible { + opacity: 1; + transform: translateY(0); +} @media (max-width: 640px) { - .project-hero h1 { font-size: 1.8rem; } + .project-hero h1 { font-size: 2rem; } .nav-links { display: none; } + .feature-grid { grid-template-columns: 1fr; } }