Skip to content

Commit 36a45fd

Browse files
Added project card for GameSnap X-Ray. Create case study of this project.
1 parent 0442fbe commit 36a45fd

File tree

1 file changed

+48
-34
lines changed

1 file changed

+48
-34
lines changed

frontend/index.html

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -185,22 +185,18 @@ <h2 class="text-3xl font-bold mb-12 text-center text-teal-600 dark:text-teal-300
185185
<div class="md:w-3/5">
186186
<h2 class="text-3xl font-bold mb-6 text-teal-600 dark:text-teal-300">About Me</h2>
187187

188-
189188
<p class="text-gray-700 dark:text-white/85 leading-relaxed mb-4">
190189
I’m Ryan Hopkins — an <strong>AI systems engineer & context architect</strong> with an M.S. in Industrial‑Organizational Psychology. I focus on building <strong>reliable LLM features</strong> by pairing clear context patterns with small, testable delivery steps.
191190
</p>
192191

193-
194192
<p class="text-gray-700 dark:text-white/85 leading-relaxed mb-4">
195-
I work across the stack with <strong>Node/Express</strong>, <strong>MongoDB</strong>, and EJS + Bootstrap, and I keep model behavior consistent with lightweight evaluation loops. I develop on <strong>WSL2 (Ubuntu)</strong>, containerize with <strong>Docker</strong>, and wire basic <strong>CI checks</strong> around model calls.
193+
I work across the stack: <strong>Node/Express</strong> with <strong>MongoDB</strong> and EJS/Bootstrap for server‑rendered apps, and <strong>Next.js + TypeScript</strong> with Tailwind/Framer Motion for newer builds like <em>GameSnap X‑Ray</em>. I develop on <strong>WSL2 (Ubuntu)</strong>, use <strong>Docker</strong> for both hot‑reload dev and multi‑stage production images, and keep LLM features honest with small eval/regression checks plus basic CI gates (lint/format, unit/E2E tests).
196194
</p>
197195

198-
199196
<p class="text-gray-700 dark:text-white/85 leading-relaxed mb-6">
200197
Recent work includes <strong>Snapshot X‑Ray</strong> (a new app exploring faster spec‑to‑code loops) and <strong>Achieve Reentry</strong> (AI‑assisted job tools). I’m currently exploring <strong>multi‑agent workflows</strong> and <strong>LLM observability</strong>.
201198
</p>
202199

203-
204200
<h3 class="font-semibold mb-2">How I build with LLMs</h3>
205201
<ol class="list-decimal pl-5 space-y-1 text-sm text-gray-700 dark:text-white/80 mb-6">
206202
<li><strong>Discuss & design:</strong> iterate on ideas; write a clear problem statement and solution outline.</li>
@@ -210,7 +206,6 @@ <h3 class="font-semibold mb-2">How I build with LLMs</h3>
210206
<li><strong>Verify:</strong> keep regression sets, logs, and guardrails; refine prompts/context when tests fail.</li>
211207
</ol>
212208

213-
214209
<!-- Compact skill badges (optional) -->
215210
<div class="flex flex-wrap gap-2">
216211
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Prompt/Context Patterns</span>
@@ -229,7 +224,7 @@ <h3 class="font-semibold mb-2">How I build with LLMs</h3>
229224
<h2 class="text-3xl font-bold mb-10 text-center text-teal-600 dark:text-teal-300">Featured Projects</h2>
230225
<div class="grid gap-8 sm:grid-cols-2 lg:grid-cols-3">
231226
<!-- project card component -->
232-
<!-- Achieve Reentry (rich project card) -->
227+
<!-- Achieve Reentry -->
233228
<article class="group bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/15 shadow-lg transition-all duration-500 hover:shadow-teal-500/20 dark:hover:shadow-teal-500/30 hover:-translate-y-2">
234229
<a href="#achieve-reentry" class="block">
235230
<img
@@ -274,6 +269,51 @@ <h3 class="text-xl font-semibold mb-2 group-hover:text-teal-600 dark:group-hover
274269
</a>
275270
</article>
276271

272+
<!-- GameSnap X-Ray -->
273+
<article class="group bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/15 shadow-lg transition-all duration-500 hover:shadow-teal-500/20 dark:hover:shadow-teal-500/30 hover:-translate-y-2">
274+
<a href="#gamesnap-xray" class="block">
275+
<img
276+
src="assets/gamesnap-hero.png"
277+
alt="GameSnap X-Ray — upload to poster preview"
278+
class="w-full aspect-[16/9] object-contain rounded-xl mb-4 ring-1 ring-gray-200 dark:ring-white/10 bg-gray-50 dark:bg-slate-800"
279+
loading="lazy"
280+
/>
281+
<h3 class="text-xl font-semibold mb-2 group-hover:text-teal-600 dark:group-hover:text-teal-300 transition">
282+
GameSnap X-Ray — One Image → Instant Sports Context
283+
</h3>
284+
<p class="text-gray-600 dark:text-white/80 text-sm mb-4">
285+
Next.js app that turns a single game screenshot into instant sports context and a share-ready poster—detects the scorebug, identifies the game, and renders clean templates; includes upload API, demo gallery, and Dockerized builds.
286+
</p>
287+
288+
<!-- Buttons -->
289+
<div class="flex flex-wrap gap-3">
290+
<a href="https://github.com/ProCO-RPHopkins/gamesnap-xray"
291+
target="_blank"
292+
class="inline-flex items-center gap-2 px-3 py-2 rounded-lg bg-gradient-to-r from-teal-600 to-cyan-600 text-white text-xs font-semibold shadow-md hover:scale-105 transition ring-1 ring-teal-500">
293+
<i class="ti ti-rocket"></i>
294+
Open Source
295+
</a>
296+
<a href="#"
297+
target="_blank"
298+
class="inline-flex items-center gap-2 px-3 py-2 rounded-lg bg-gradient-to-r from-purple-600 to-pink-600 text-white text-xs font-semibold shadow-md hover:scale-105 transition ring-1 ring-purple-500">
299+
<i class="ti ti-headphones"></i>
300+
Play Podcast
301+
</a>
302+
</div>
303+
304+
<!-- Tech Stack Chips -->
305+
<div class="flex flex-wrap gap-2 mt-4">
306+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Next.js</span>
307+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">TypeScript</span>
308+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Tailwind</span>
309+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Framer Motion</span>
310+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Route Handlers (Node)</span>
311+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Docker</span>
312+
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Demo Gallery API</span>
313+
</div>
314+
</a>
315+
</article>
316+
277317
<!-- Capstone: Redirecting Authoritarian Leadership -->
278318
<article class="group bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/15 shadow-lg transition-all duration-500 hover:shadow-teal-500/20 dark:hover:shadow-teal-500/30 hover:-translate-y-2">
279319
<!-- Video thumbnail -->
@@ -412,33 +452,7 @@ <h3 class="text-xl font-semibold mb-2 group-hover:text-teal-600 dark:group-hover
412452
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">C#</span>
413453
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">AI Agents</span>
414454
</div>
415-
</article>
416-
<article class="group bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/15 shadow-lg transition-all duration-500 hover:shadow-teal-500/20 dark:hover:shadow-teal-500/30 hover:-translate-y-2">
417-
<div class="bg-gray-200 dark:bg-slate-700 border-2 border-dashed rounded-xl w-full aspect-video mb-4 flex items-center justify-center text-gray-500">
418-
<i class="ti ti-robot text-4xl"></i>
419-
</div>
420-
<h3 class="text-xl font-semibold mb-2 group-hover:text-teal-600 dark:group-hover:text-teal-300 transition">SkillSprint Coach</h3>
421-
<p class="text-gray-600 dark:text-white/80 text-sm mb-4">Custom GPT for micro‑learning sprint planning.</p>
422-
<div class="flex flex-wrap gap-2">
423-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">OpenAI API</span>
424-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Python</span>
425-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">LLM Fine-tuning</span>
426-
</div>
427-
</article>
428-
<article class="group bg-white dark:bg-slate-800 rounded-2xl p-6 ring-1 ring-gray-200 dark:ring-white/15 shadow-lg transition-all duration-500 hover:shadow-teal-500/20 dark:hover:shadow-teal-500/30 hover:-translate-y-2">
429-
<div class="bg-gray-200 dark:bg-slate-700 border-2 border-dashed rounded-xl w-full aspect-video mb-4 flex items-center justify-center text-gray-500">
430-
<i class="ti ti-code text-4xl"></i>
431-
</div>
432-
<h3 class="text-xl font-semibold mb-2 group-hover:text-teal-600 dark:group-hover:text-teal-300 transition">AI‑Assisted Thematic Analyzer</h3>
433-
<p class="text-gray-600 dark:text-white/80 text-sm mb-4">Six‑step, code‑assisted qualitative research workflow.</p>
434-
<div class="flex flex-wrap gap-2">
435-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">NLP</span>
436-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Python</span>
437-
<span class="px-2 py-1 bg-gray-200 dark:bg-slate-700 text-xs rounded">Data Analysis</span>
438-
</div>
439-
</article>
440-
</div>
441-
</div>
455+
</article>
442456
</section>
443457

444458
<!-- ════════ CASE STUDY: ACHIEVE REENTRY ════════ -->

0 commit comments

Comments
 (0)