diff --git a/bun.lockb b/bun.lockb index 2cdc936..c045c3c 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index fb2c75f..9293795 100644 --- a/package.json +++ b/package.json @@ -54,11 +54,9 @@ "jose": "^6.1.3", "mermaid": "^11.12.2", "motion": "^12.23.26", - "pdfjs-dist": "^5.4.449", "solid-js": "^1.9.5", "solid-tiptap": "^0.8.0", "uuid": "^13.0.0", - "valibot": "^0.29.0", "vinxi": "^0.5.7", "zod": "^4.2.1" }, diff --git a/src/routes/resume.tsx b/src/routes/resume.tsx index 723774c..bfc67a6 100644 --- a/src/routes/resume.tsx +++ b/src/routes/resume.tsx @@ -1,61 +1,6 @@ import { Title, Meta } from "@solidjs/meta"; -import { createSignal, onMount, Show, For } from "solid-js"; -import { isServer } from "solid-js/web"; -import { TerminalSplash } from "~/components/TerminalSplash"; -import { PDF_CONFIG } from "~/config"; export default function Resume() { - const [pages, setPages] = createSignal([]); - const [loading, setLoading] = createSignal(true); - const [error, setError] = createSignal(false); - let containerRef: HTMLDivElement | undefined; - - onMount(async () => { - try { - // Dynamically import PDF.js only on client - const pdfjsLib = await import("pdfjs-dist"); - - // Set worker source to local file - pdfjsLib.GlobalWorkerOptions.workerSrc = "/pdf.worker.min.mjs"; - - // Load the PDF - const loadingTask = pdfjsLib.getDocument("/resume.pdf"); - const pdf = await loadingTask.promise; - - const canvases: HTMLCanvasElement[] = []; - - // Render each page - for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { - const page = await pdf.getPage(pageNum); - const viewport = page.getViewport({ scale: PDF_CONFIG.RENDER_SCALE }); - - // Create canvas - const canvas = document.createElement("canvas"); - const context = canvas.getContext("2d"); - if (!context) continue; - - canvas.height = viewport.height; - canvas.width = viewport.width; - canvas.className = "shadow-lg mb-4 mx-auto max-w-full"; - - // Render page - await page.render({ - canvasContext: context, - viewport: viewport - }).promise; - - canvases.push(canvas); - } - - setPages(canvases); - setLoading(false); - } catch (err) { - console.error("Error loading PDF:", err); - setError(true); - setLoading(false); - } - }); - return ( <> Resume | Michael Freno @@ -64,73 +9,30 @@ export default function Resume() { content="View Michael Freno's resume - Software Engineer." /> -
- }> -
-
-

View Resume

-

- Unable to load PDF viewer. -

-
- -
-
- } - > -
+
+ - - - {(canvas) => { - let divRef: HTMLDivElement | undefined; - onMount(() => { - if (divRef) { - divRef.appendChild(canvas); - } - }); - return
; - }} - -
- + Open in New Tab + + + Download PDF + +
+ +
); diff --git a/src/server/api/routers/example.ts b/src/server/api/routers/example.ts deleted file mode 100644 index 7cb60c2..0000000 --- a/src/server/api/routers/example.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { wrap } from "@typeschema/valibot"; -import { string } from "valibot"; -import { - createTRPCRouter, - publicProcedure, - protectedProcedure, - adminProcedure -} from "../utils"; - -export const exampleRouter = createTRPCRouter({ - hello: publicProcedure - .input(wrap(string())) - .query(({ input }) => { - return `Hello ${input}!`; - }), - - // Example of a protected procedure (requires authentication) - getProfile: protectedProcedure.query(({ ctx }) => { - return { - userId: ctx.userId, - privilegeLevel: ctx.privilegeLevel, - message: "You are authenticated!", - }; - }), - - // Example of an admin-only procedure - adminDashboard: adminProcedure.query(({ ctx }) => { - return { - userId: ctx.userId, - message: "Welcome to the admin dashboard!", - isAdmin: true, - }; - }), -});