diff --git a/files.zip b/files.zip new file mode 100644 index 0000000..b3d3f0d Binary files /dev/null and b/files.zip differ diff --git a/index.html b/index.html index ba8cbdd..dde8eae 100755 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ @@ -54,7 +54,7 @@

Personal Projects

- +
discord bot picture
@@ -64,7 +64,7 @@
- +
ToDo List picture
@@ -74,7 +74,7 @@
- +
Under Construction
@@ -84,7 +84,7 @@
- +
api project picture
@@ -94,7 +94,7 @@
- +
project picture
diff --git a/project.html b/project.html deleted file mode 100755 index b400fb1..0000000 --- a/project.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - - - - - - - Lew's Portfolio - - -
- -
- -
-
- - - - - - - - - - - - - - - - -
- -
- -
-

© 2024 LewisPriceDev, All rights reserved.

- -
- - \ No newline at end of file diff --git a/project_pages/css/project1Style.css b/project_pages/css/project1Style.css new file mode 100644 index 0000000..dd8734b --- /dev/null +++ b/project_pages/css/project1Style.css @@ -0,0 +1,13 @@ +/* project1Style.css — Web Scraper / Discord Bot + Accent: Discord purple-ish teal, keeps primary blue family */ +@import "projectDetailStyle.css"; + +.project-hero .hero-overlay { + background: linear-gradient(to top, rgba(10, 15, 40, 0.93) 0%, transparent 100%); +} + +.project-tag { + color: #7EB8FF; + background: rgba(126, 184, 255, 0.12); + border-color: rgba(126, 184, 255, 0.4); +} diff --git a/project_pages/css/project2Style.css b/project_pages/css/project2Style.css new file mode 100644 index 0000000..a147e32 --- /dev/null +++ b/project_pages/css/project2Style.css @@ -0,0 +1,27 @@ +/* project2Style.css — To-Do List + Warm green accent to evoke task completion */ +@import "projectDetailStyle.css"; + +.project-hero .hero-overlay { + background: linear-gradient(to top, rgba(10, 30, 20, 0.93) 0%, transparent 100%); +} + +.project-tag { + color: #7ED4A0; + background: rgba(126, 212, 160, 0.12); + border-color: rgba(126, 212, 160, 0.4); +} + +.detail-section h2 { + color: #2a8a58; +} + +.tech-pills span { + background-color: rgba(42, 138, 88, 0.1); + border-color: rgba(42, 138, 88, 0.3); + color: #1e6b42; +} + +.feature-list li::before { + color: #2a8a58; +} diff --git a/project_pages/css/project3Style.css b/project_pages/css/project3Style.css new file mode 100644 index 0000000..d4e028f --- /dev/null +++ b/project_pages/css/project3Style.css @@ -0,0 +1,32 @@ +/* project3Style.css — API Accessing Practice (Go) + Golang's cyan/teal brand feel */ +@import "projectDetailStyle.css"; + +.project-hero .hero-overlay { + background: linear-gradient(to top, rgba(0, 25, 35, 0.93) 0%, transparent 100%); +} + +.project-tag { + color: #00D4CF; + background: rgba(0, 212, 207, 0.1); + border-color: rgba(0, 212, 207, 0.4); +} + +.detail-section h2 { + color: #007a7a; +} + +.tech-pills span { + background-color: rgba(0, 180, 175, 0.1); + border-color: rgba(0, 180, 175, 0.3); + color: #005f5e; +} + +.feature-list li::before { + color: #00a8a4; +} + +code { + background: rgba(0, 180, 175, 0.08); + color: #005f5e; +} diff --git a/project_pages/css/project4Style.css b/project_pages/css/project4Style.css new file mode 100644 index 0000000..77fb5af --- /dev/null +++ b/project_pages/css/project4Style.css @@ -0,0 +1,41 @@ +/* project4Style.css — Graph Theory: Flat Buffer + Deep indigo / data-structures feel */ +@import "projectDetailStyle.css"; + +.project-hero .hero-overlay { + background: linear-gradient(to top, rgba(15, 10, 40, 0.95) 0%, transparent 100%); +} + +.project-tag { + color: #B39DFF; + background: rgba(179, 157, 255, 0.1); + border-color: rgba(179, 157, 255, 0.4); +} + +.detail-section h2 { + color: #5c35cc; +} + +.tech-pills span { + background-color: rgba(92, 53, 204, 0.1); + border-color: rgba(92, 53, 204, 0.3); + color: #3e1f9e; +} + +.feature-list li::before { + color: #5c35cc; +} + +code { + background: rgba(92, 53, 204, 0.07); + color: #3e1f9e; +} + +/* Animate the dashed SVG lines in the placeholder hero */ +.placeholder-graphic svg line { + animation: dash-flow 3s linear infinite; +} + +@keyframes dash-flow { + to { stroke-dashoffset: -24; } +} diff --git a/project_pages/css/project5Style.css b/project_pages/css/project5Style.css new file mode 100644 index 0000000..6281f31 --- /dev/null +++ b/project_pages/css/project5Style.css @@ -0,0 +1,12 @@ +/* project5Style.css — Coming Soon / Under Construction */ +@import "projectDetailStyle.css"; + +/* Spin the dashed circle on the under-construction SVG */ +.coming-soon-icon svg circle { + animation: spin-ring 12s linear infinite; + transform-origin: 40px 40px; +} + +@keyframes spin-ring { + to { transform: rotate(360deg); } +} diff --git a/project_pages/css/projectDetailStyle.css b/project_pages/css/projectDetailStyle.css new file mode 100644 index 0000000..a54c37e --- /dev/null +++ b/project_pages/css/projectDetailStyle.css @@ -0,0 +1,260 @@ +/* ============================================================ + Shared Project Detail Styles + Include AFTER projectStyle.css + ============================================================ */ + +/* --- Hero -------------------------------------------------- */ +.project-detail { + flex: 1; + display: flex; + flex-direction: column; + gap: 3rem; + max-width: 1000px; + margin: 0 auto; + width: 100%; + padding: 2rem 2rem 4rem; +} + +.project-hero { + position: relative; + border-radius: 20px; + overflow: hidden; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); + min-height: 320px; +} + +.hero-image { + width: 100%; + height: 360px; +} + +.hero-image img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} + +/* Placeholder hero for projects without an image */ +.hero-image--placeholder { + background: linear-gradient(135deg, #1B3A4B 0%, #0d2233 100%); + display: flex; + align-items: center; + justify-content: center; +} + +.placeholder-graphic { + width: 280px; + opacity: 0.7; +} + +.placeholder-graphic svg { + width: 100%; + height: auto; +} + +/* Gradient overlay + text on hero */ +.hero-overlay { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 2rem 2rem 2rem; + background: linear-gradient(to top, rgba(10, 20, 30, 0.92) 0%, transparent 100%); + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.project-tag { + font-family: 'Quicksand', sans-serif; + font-size: 0.78rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--clr-accent-light); + background: rgba(240, 155, 0, 0.15); + border: 1px solid rgba(240, 155, 0, 0.4); + border-radius: 20px; + padding: 0.2rem 0.8rem; + width: fit-content; +} + +.hero-overlay h1 { + font-family: 'Oswald', sans-serif; + font-size: clamp(1.6rem, 4vw, 2.6rem); + font-weight: 600; + color: #fff; + line-height: 1.15; + margin: 0; +} + +.hero-sub { + color: rgba(255, 255, 255, 0.75); + font-size: 1rem; + margin: 0; +} + +/* --- Buttons ----------------------------------------------- */ +.btn-primary { + display: inline-block; + margin-top: 0.5rem; + padding: 0.55rem 1.4rem; + background-color: var(--clr-primary); + color: #fff; + font-weight: 700; + font-size: 0.9rem; + border-radius: 10px; + text-decoration: none; + transition: background-color 0.25s ease, transform 0.2s ease; + width: fit-content; +} + +.btn-primary:hover { + background-color: #007ec0; + transform: translateY(-2px); +} + +.btn-secondary { + display: inline-block; + padding: 0.55rem 1.4rem; + border: 2px solid var(--clr-primary); + color: var(--clr-primary); + font-weight: 700; + font-size: 0.9rem; + border-radius: 10px; + text-decoration: none; + transition: background-color 0.25s ease, color 0.25s ease, transform 0.2s ease; +} + +.btn-secondary:hover { + background-color: var(--clr-primary); + color: #fff; + transform: translateY(-2px); +} + +/* --- Detail grid ------------------------------------------- */ +.detail-grid { + display: grid; + grid-template-columns: 1fr; + gap: 2rem; +} + +.detail-section { + background-color: var(--clr-card-background); + border-radius: 16px; + padding: 1.75rem; + box-shadow: 0 2px 10px rgba(91, 127, 161, 0.18); +} + +.detail-section h2 { + font-family: 'Oswald', sans-serif; + font-size: 1.25rem; + font-weight: 500; + color: var(--clr-primary); + text-transform: uppercase; + letter-spacing: 0.06em; + margin-bottom: 0.9rem; +} + +.detail-section p { + color: var(--clr-text-light); + line-height: 1.7; +} + +/* Feature list */ +.feature-list { + list-style: none; + display: flex; + flex-direction: column; + gap: 0.6rem; + padding: 0; +} + +.feature-list li { + color: var(--clr-text-light); + padding-left: 1.4rem; + position: relative; + line-height: 1.6; +} + +.feature-list li::before { + content: "▸"; + position: absolute; + left: 0; + color: var(--clr-primary); + font-size: 0.85rem; +} + +/* Tech pills */ +.tech-pills { + display: flex; + flex-wrap: wrap; + gap: 0.6rem; +} + +.tech-pills span { + font-family: 'Quicksand', sans-serif; + font-size: 0.85rem; + font-weight: 600; + padding: 0.35rem 0.9rem; + border-radius: 20px; + background-color: rgba(0, 157, 240, 0.12); + border: 1px solid rgba(0, 157, 240, 0.35); + color: #005f90; +} + +/* Inline code */ +code { + font-family: 'Courier New', monospace; + font-size: 0.88em; + background: rgba(0, 157, 240, 0.08); + border-radius: 4px; + padding: 0.1em 0.4em; + color: #005f90; +} + +/* --- Project prev/next nav --------------------------------- */ +.project-nav { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + gap: 1rem; +} + +/* --- Coming soon page -------------------------------------- */ +.coming-soon-wrapper { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 1.2rem; + padding: 4rem 2rem; +} + +.coming-soon-icon svg { + width: 90px; + height: 90px; +} + +.coming-soon-wrapper h1 { + font-family: 'Oswald', sans-serif; + font-size: 2.2rem; + font-weight: 500; + color: var(--clr-text-main); +} + +.coming-soon-wrapper p { + color: var(--clr-text-light); + font-size: 1.05rem; + max-width: 40ch; +} + +/* --- Responsive ------------------------------------------- */ +@media (min-width: 700px) { + .detail-grid { + grid-template-columns: repeat(2, 1fr); + } +} diff --git a/project_pages/project1.html b/project_pages/project1.html new file mode 100644 index 0000000..c44ff41 --- /dev/null +++ b/project_pages/project1.html @@ -0,0 +1,104 @@ + + + + + + + + + + + Web Scraper / Discord Bot – Lew's Portfolio + + + +
+ +
+ +
+ +
+
+ Web Scraper / Discord Bot +
+
+ Golang · Web Scraping · Discord API +

Web Scraper / Discord Bot

+

Automated SHiFT code delivery straight to your Discord server.

+ View Release ↗ +
+
+ +
+ +
+

Overview

+

+ This project combines a web scraper with a Discord bot to automatically surface + SHiFT codes for Borderlands 4. When a user triggers the bot on Discord, it + scrapes the latest codes and returns them instantly — no manual hunting required. +

+
+ +
+

Features

+
    +
  • On-demand scraping triggered by Discord command
  • +
  • Parses and formats code lists for readability
  • +
  • Error handling for network / parse failures
  • +
  • Lightweight — runs on a small VPS or home server
  • +
+
+ +
+

Tech Stack

+
+ Golang + Discord Go + GoColly + Request/Response +
+
+ +
+

Challenges & Learnings

+

+ Navigating the structure of a dynamically rendered page required careful selector + targeting. Integrating the scraper output into Discord's message format taught + clean separation of concerns between data retrieval and presentation layers. +

+
+ +
+ + + +
+ +
+

© 2024 LewisPriceDev, All rights reserved.

+ +
+ + + diff --git a/project_pages/project2.html b/project_pages/project2.html new file mode 100644 index 0000000..ad74880 --- /dev/null +++ b/project_pages/project2.html @@ -0,0 +1,103 @@ + + + + + + + + + + + To-Do List – Lew's Portfolio + + + +
+ +
+ +
+ +
+
+ To-Do List +
+
+ JavaScript · CSS · HTML +

To-Do List

+

Stay organised with priority, date, and category sorting.

+ View Release ↗ +
+
+ +
+ +
+

Overview

+

+ A fully interactive To-Do list application that lets users add, edit, and + remove tasks while sorting them by priority level, due date, or custom + category. Built to explore front-end state management without a framework. +

+
+ +
+

Features

+
    +
  • Add, edit, complete, and delete tasks
  • +
  • Sort by priority (High / Medium / Low), date, or category
  • +
  • Persistent storage via localStorage
  • +
  • Responsive layout for mobile and desktop
  • +
+
+ +
+

Tech Stack

+
+ Object Oriented Java Proframming + Local Storage +
+
+ +
+

Challenges & Learnings

+

+ Managing sort state across multiple criteria without a reactive framework + required thoughtful event delegation and a clear data model. This project + solidified foundational DOM manipulation skills and reinforced mobile-first + CSS practices. +

+
+ +
+ + + +
+ +
+

© 2024 LewisPriceDev, All rights reserved.

+ +
+ + + diff --git a/project_pages/project3.html b/project_pages/project3.html new file mode 100644 index 0000000..ffeafd7 --- /dev/null +++ b/project_pages/project3.html @@ -0,0 +1,106 @@ + + + + + + + + + + + API Accessing Practice – Lew's Portfolio + + + +
+ +
+ +
+ +
+
+ API Accessing Practice +
+
+ Golang · REST API · JSON +

API Accessing Practice

+

Fetching, parsing, and displaying live data with Go.

+ View Release ↗ +
+
+ +
+ +
+

Overview

+

+ A command-line program written in Go that connects to a public REST API, + retrieves JSON payloads, and displays the parsed data in a clean, formatted + output. The project demonstrates practical API consumption and Go's standard + library for HTTP and JSON. +

+
+ +
+

Features

+
    +
  • HTTP GET requests using Go's net/http package
  • +
  • JSON unmarshalling into typed structs
  • +
  • Formatted terminal output with error reporting
  • +
  • Configurable endpoint via CLI flags
  • +
+
+ +
+

Tech Stack

+
+ Go (Golang) + net/http + encoding/json + REST APIs +
+
+ +
+

Challenges & Learnings

+

+ Learning Go's strict typing system alongside JSON decoding required careful + struct design to match API schemas. This project built confidence in Go's + idioms — error handling patterns, struct tags, and the standard library's + power for network tasks. +

+
+ +
+ + + +
+ +
+

© 2024 LewisPriceDev, All rights reserved.

+ +
+ + + diff --git a/project_pages/project4.html b/project_pages/project4.html new file mode 100644 index 0000000..038c69b --- /dev/null +++ b/project_pages/project4.html @@ -0,0 +1,117 @@ + + + + + + + + + + + Graph Theory: Flat Buffer – Lew's Portfolio + + + +
+ +
+ +
+ +
+
+
+ +
+
+
+ Data Structures · Memory Management +

Graph Theory: Flat Buffer

+

A memory-consistent graph implementation with zero object duplication.

+ View Repository ↗ +
+
+ +
+ +
+

Overview

+

+ This project explores graph theory through the lens of memory efficiency. + The flat buffer architecture ensures a consistent, predictable memory + footprint — no object duplication, only controlled growth, reduction, + or deletion of nodes and edges. +

+
+ +
+

Design Goals

+
    +
  • Flat contiguous buffer — no pointer-chasing heap fragmentation
  • +
  • Strict no-duplication contract for all graph objects
  • +
  • Deterministic add / grow / shrink / delete lifecycle
  • +
  • Suitable for use in performance-sensitive or embedded contexts
  • +
+
+ +
+

Tech Stack

+
+ C / C++ + Graph Theory + Memory Layouts + Data Structures +
+
+ +
+

Challenges & Learnings

+

+ Designing a flat buffer that still supports dynamic graph mutations required + rethinking typical pointer-based graph representations. The key insight was + using index-based references within the buffer rather than raw pointers, + enabling safe resizing without invalidating existing relationships. +

+
+ +
+ + + +
+ +
+

© 2024 LewisPriceDev, All rights reserved.

+ +
+ + + diff --git a/project_pages/project5.html b/project_pages/project5.html new file mode 100644 index 0000000..f98cad9 --- /dev/null +++ b/project_pages/project5.html @@ -0,0 +1,57 @@ + + + + + + + + + + + Coming Soon – Lew's Portfolio + + + +
+ +
+ +
+ +
+ +

Under Construction

+

Something new is being built here. Check back soon!

+ ← Back to Projects +
+ +
+ +
+

© 2024 LewisPriceDev, All rights reserved.

+ +
+ + + diff --git a/projects.html b/projects.html new file mode 100644 index 0000000..488c9b4 --- /dev/null +++ b/projects.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + Lew's Portfolio + + + + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
+ +
+ + + +