Compare commits
5 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3cec6e7758 | ||
|
|
a1c84ccc58 | ||
|
|
75a16af0c4 | ||
|
|
deb370d5af | ||
|
|
8508b679c0 |
|
|
@ -19,25 +19,24 @@ export default function CVPage() {
|
|||
{/* Main Container*/}
|
||||
<div className="bg-white text-slate-900 p-8 md:p-16 rounded-sm shadow-2xl print:shadow-none print:p-12 print:m-0 font-sans print:text-[12pt] leading-normal">
|
||||
<header className="border-b-4 border-slate-900 pb-8 print:pb-4 mb-8 print:mb-6 flex flex-col md:flex-row print:grid print:grid-cols-[1.5fr_1fr] justify-between items-start gap-6">
|
||||
<div className="flex print:flex print:items-center">
|
||||
<div className="mr-3 shrink-0">
|
||||
<div className="flex flex-wrap items-center gap-4 sm:gap-6 mb-4 print:mb-2 print:flex-nowrap">
|
||||
<div className="shrink-0">
|
||||
<img
|
||||
src="/profile.jpg"
|
||||
alt="George A. Webberley"
|
||||
className="w-25 h-25 print:w-16 print:h-16 rounded-full object-cover border-2 border-slate-100 shadow-sm"
|
||||
className="w-20 h-20 md:w-24 md:h-24 print:w-16 print:h-16 rounded-full object-cover border-2 border-slate-100 shadow-sm"
|
||||
/>
|
||||
</div>
|
||||
<div className="min-w-0">
|
||||
<h1 className="text-5xl print:text-3xl font-extrabold tracking-tighter mb-2 text-slate-900 whitespace-nowrap">
|
||||
<div className="min-w-0 flex-1">
|
||||
<h1 className="text-3xl md:text-5xl print:text-3xl font-extrabold tracking-tighter mb-1 text-slate-900 lg:whitespace-nowrap print:whitespace-nowrap">
|
||||
George A. Webberley
|
||||
</h1>
|
||||
<p className="text-2xl print:text-[14pt] text-orange-600 font-bold uppercase tracking-tight whitespace-nowrap">
|
||||
<p className="text-lg md:text-2xl print:text-[14pt] text-orange-600 font-bold uppercase tracking-tight lg:whitespace-nowrap print:whitespace-nowrap">
|
||||
Full Stack Engineer // Systems Architect
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Contact Info - Explicitly right-aligned for print */}
|
||||
{/* Contact Info */}
|
||||
<div className="space-y-1 text-sm print:text-[9px] text-slate-500 font-mono text-right print:w-full print:flex print:flex-col print:items-end">
|
||||
<div className="flex items-center md:justify-end gap-2">
|
||||
<MapPin size={14} /> Copenhagen, Denmark
|
||||
|
|
@ -363,16 +362,12 @@ export default function CVPage() {
|
|||
<p className="text-[12px] print:text-[10px] text-slate-700 mb-3 print:mb-1.5 leading-tight">
|
||||
Detailed architecture diagrams and documentation:
|
||||
</p>
|
||||
|
||||
{/* Web Version: Clickable Link */}
|
||||
<a
|
||||
href="https://georgew.dev"
|
||||
className="text-sm print:hidden font-black flex items-center gap-1 hover:underline text-slate-900"
|
||||
>
|
||||
GEORGEW.DEV <ExternalLink size={14} />
|
||||
</a>
|
||||
|
||||
{/* Print Version: Static text that won't be stripped by "a" selectors */}
|
||||
<div className="hidden print:block text-sm font-black text-slate-900">
|
||||
GEORGEW.DEV
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import Link from "next/link";
|
||||
import { motion, Variants } from "framer-motion";
|
||||
import { Globe, Smartphone, Server, Gamepad2, Hammer } from "lucide-react";
|
||||
import { Globe, Smartphone, Server, Hammer } from "lucide-react";
|
||||
import { useState } from "react";
|
||||
import MonitorCard from "@/components/MonitorCard";
|
||||
import PageLayout from "@/components/PageLayout";
|
||||
|
|
|
|||
|
|
@ -7,17 +7,17 @@ import Image from "next/image";
|
|||
|
||||
const MONITORS = [
|
||||
{ id: 2, name: "Datasaur" },
|
||||
{ id: 12, name: "Observatory" },
|
||||
{ id: 16, name: "Fossil tracker" },
|
||||
{ id: 6, name: "Audiobookshelf" },
|
||||
{ id: 7, name: "Woodpecker CI" },
|
||||
{ id: 8, name: "Forgejo Git" },
|
||||
{ id: 9, name: "Server dashboard" },
|
||||
{ id: 10, name: "Ratoong" },
|
||||
{ id: 3, name: "Dozzle" },
|
||||
{ id: 12, name: "Observatory" },
|
||||
{ id: 13, name: "Surf hub" },
|
||||
{ id: 11, name: "Anime list" },
|
||||
{ id: 5, name: "Wiki" },
|
||||
{ id: 4, name: "Watchtower" },
|
||||
{ id: 14, name: "Paperless" },
|
||||
];
|
||||
|
||||
const ITEMS_PER_PAGE = 6;
|
||||
|
|
|
|||
12
data/lab.ts
12
data/lab.ts
|
|
@ -13,6 +13,18 @@ export const LAB_SERVICES: LabService[] = [
|
|||
image: "/lab/observatory.jpg",
|
||||
uptimeId: 12,
|
||||
},
|
||||
{
|
||||
id: "dino-tracker",
|
||||
name: "GW Paleo",
|
||||
description:
|
||||
"A digital field journal and taxonomic registry for Dinosauria. Designed with a 'Museum Archive' aesthetic, this specimen tracker syncs with the Paleobiology Database (PBDB) to catalog thousands of validated species and genera.",
|
||||
stack: ["Next.js", "Prisma", "SQLite", "Tailwind CSS"],
|
||||
visibility: "public",
|
||||
url: "https://paleo.georgew.dev",
|
||||
gitUrl: "https://git.georgew.dev/georgew/dino-tracker",
|
||||
image: "/lab/dino-tracker.jpg",
|
||||
uptimeId: 16,
|
||||
},
|
||||
{
|
||||
id: "surf-hub",
|
||||
name: "Surf Sentinel",
|
||||
|
|
|
|||
5
public/.well-known/nostr.json
Normal file
5
public/.well-known/nostr.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"names": {
|
||||
"muninn": "44e345442475c960433feb762c9d3f70e4fdb71c2f873a3473358d40e2ae01c1"
|
||||
}
|
||||
}
|
||||
BIN
public/lab/dino-tracker.jpg
Normal file
BIN
public/lab/dino-tracker.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 174 KiB |
Loading…
Reference in a new issue