Merge pull request #10 from MealCraft/feature/moredeployments

Feature/moredeployments
This commit is contained in:
Jun-te Kim 2025-12-07 15:02:55 +00:00 committed by GitHub
commit 870bb1b31c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 2370 additions and 18 deletions

View file

@ -1,3 +1,26 @@
export default function About() { export default function About() {
return <h1>Everything you need to know about me will be here</h1>; return (
<>
<h1 className="text-2xl font-bold mb-4">Under construction</h1>
<div className="flex flex-col space-y-2">
<a
href="https://www.linkedin.com/in/juntekim"
target="_blank"
rel="noopener noreferrer"
className="text-blue-500 underline"
>
LinkedIn
</a>
<a
href="https://www.youtube.com/@ThePragmaticAutomator"
target="_blank"
rel="noopener noreferrer"
className="text-red-500 underline"
>
YouTube
</a>
</div>
</>
);
} }

View file

@ -0,0 +1,23 @@
- Engineering management for the rest of us
- Next.js Pages Router Tutorial — <https://nextjs.org/learn/pages-router>
- Next.js Dashboard App Tutorial — <https://nextjs.org/learn/dashboard-app>
- MDN: Using Promises — <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises>
- TCP/IP Illustrated, Volume 1 — Create a GitHub repo summarizing each chapter
- CPU/Memory FreeBSD Optimization Article — <https://people.freebsd.org/~lstewart/articles/cpumemory.pdf>
- Operating Systems: Three Easy Pieces (OSTEP) — <https://pages.cs.wisc.edu/~remzi/OSTEP/>
- cURL Man Page — <https://curl.se/docs/manpage.html>
- How Linux Works — <https://www.amazon.com/How-Linux-Works-3rd-Superuser/dp/1718500408>
- Linux Bible — <https://www.amazon.com/Linux-Bible-Christopher-Negus/dp/1119578884>
- Linux Journey — <https://linuxjourney.com/>
- btop Documentation — <https://github.com/aristocratos/btop>
- k9s Documentation — <https://k9scli.io/>
- JSConf: Event Loop — <https://www.youtube.com/watch?v=8aGhZQkoFbQ>
- Event Loop Playlist — <https://www.youtube.com/watch?v=HjneAhCy2N4&list=PL9vTTBa7QaQOoMfpP3ztvgyQkPWDPfJez>
- JavaScript Visualized — <https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif>
- RealPython: Async IO — <https://realpython.com/async-io-python/>
- AWS Documentation — <https://docs.aws.amazon.com/>
- SVG Animations (Book) — <https://www.amazon.com/SVG-Animations-Implementations-Responsive-Animation/dp/1491939702>
- Antifrafile
- Re read pragmatic automator
- unix and linux system adminstration handbook
- pandas text book i bought

View file

@ -0,0 +1,17 @@
import fs from "fs";
import path from "path";
import MarkdownRenderer from "../components/MardownRenderer";
export default function LearningPage() {
const filePath = path.join(process.cwd(), "app/Learning/Todo.md");
const markdown = fs.readFileSync(filePath, "utf8");
return (
<div className="p-8">
<h1 className="text-3xl font-bold mb-6 text-zinc-900 dark:text-zinc-100">
📘 Learning To Do List:
</h1>
<MarkdownRenderer content={markdown} />
</div>
);
}

View file

@ -1,13 +1,18 @@
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
export default function FilePage({ params }: { params: { path?: string[] } }) { export default async function FilePage({
const filePath = params.path?.join("/") || ""; params,
}: {
params: Promise<{ path?: string[] }>;
}) {
const { path: segments = [] } = await params; // <-- FIXED
const filePath = segments.join("/") || "";
// Resolve to actual file in public folder // Resolve to actual file in /public
const fullPath = path.join(process.cwd(), "public", filePath); const fullPath = path.join(process.cwd(), "public", filePath);
// If folder or file missing // 404
if (!fs.existsSync(fullPath)) { if (!fs.existsSync(fullPath)) {
return ( return (
<div className="p-6 font-mono text-red-400"> <div className="p-6 font-mono text-red-400">
@ -16,7 +21,7 @@ export default function FilePage({ params }: { params: { path?: string[] } }) {
); );
} }
// If it's a folder, list its contents // Directory → list contents
if (fs.lstatSync(fullPath).isDirectory()) { if (fs.lstatSync(fullPath).isDirectory()) {
const files = fs.readdirSync(fullPath); const files = fs.readdirSync(fullPath);
@ -30,7 +35,7 @@ export default function FilePage({ params }: { params: { path?: string[] } }) {
); );
} }
// Read file contents // File → read contents
const content = fs.readFileSync(fullPath, "utf8"); const content = fs.readFileSync(fullPath, "utf8");
return ( return (

View file

@ -0,0 +1,13 @@
import React from "react";
import ReactMarkdown from "react-markdown";
import remarkGfm from "remark-gfm";
export default function MarkdownRenderer({ content }: { content: string }) {
return (
<div className="prose prose-zinc dark:prose-invert max-w-none">
<ReactMarkdown remarkPlugins={[remarkGfm]}>
{content}
</ReactMarkdown>
</div>
);
}

View file

@ -101,16 +101,19 @@ Available commands:
cd <path> Playful message about not leaving cd <path> Playful message about not leaving
pwd Print working directory pwd Print working directory
whoami Identify yourself whoami Identify yourself
motivation Generate motivation (may crash) motivation Generate motivation
vibecheck Check the vibe vibecheck Check the vibe
clear I will not clear your history :) clear Clears the screen
history Look into the past
exit You can't exit, it's a website exit You can't exit, it's a website
`, `,
pwd: () => "/home/juntekim/site", pwd: () => "/home/juntekim/site",
whoami: () => "juntekim", whoami: () => "I suspect you know who you are.",
clear: () => "no ❤️ you need to face your past commands.", history: () => "If we keep looking back, we won't see the glory of now",
clear: () => "no takebacks, face your past commands.",
motivation: () => [ motivation: () => [
"Compiling motivation…", "Compiling motivation…",

View file

@ -4,4 +4,5 @@ export const QUOTES = [
'"Nothing like a health problem to turn up the contrast dial on the rest of life." - Naval Ravikant', '"Nothing like a health problem to turn up the contrast dial on the rest of life." - Naval Ravikant',
'"If you want to go fast, go alone; if you want to go far, go together" - Unknown', '"If you want to go fast, go alone; if you want to go far, go together" - Unknown',
'“I dont know if it happened for the best — but I know Ill make the best out of whatever happens.” - Unknown', '“I dont know if it happened for the best — but I know Ill make the best out of whatever happens.” - Unknown',
'"I\'m a idiot! I\m a genius!" - Jun-te Kim',
]; ];

File diff suppressed because it is too large Load diff

View file

@ -9,9 +9,13 @@
"lint": "eslint" "lint": "eslint"
}, },
"dependencies": { "dependencies": {
"@uiw/react-markdown-preview": "^5.1.5",
"@uiw/react-md-editor": "^4.0.11",
"next": "16.0.7", "next": "16.0.7",
"react": "19.2.0", "react": "19.2.0",
"react-dom": "19.2.0" "react-dom": "19.2.0",
"react-syntax-highlighter": "^16.1.0",
"rehype-sanitize": "^6.0.0"
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "^4", "@tailwindcss/postcss": "^4",

View file

@ -0,0 +1,5 @@
module.exports = {
content: ["./app/**/*.{ts,tsx}", "./components/**/*.{ts,tsx}"],
theme: { extend: {} },
plugins: [require("@tailwindcss/typography")],
};