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() {
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 path from "path";
export default function FilePage({ params }: { params: { path?: string[] } }) {
const filePath = params.path?.join("/") || "";
export default async function FilePage({
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);
// If folder or file missing
// 404
if (!fs.existsSync(fullPath)) {
return (
<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()) {
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");
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
pwd Print working directory
whoami Identify yourself
motivation Generate motivation (may crash)
motivation Generate motivation
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
`,
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: () => [
"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',
'"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\'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"
},
"dependencies": {
"@uiw/react-markdown-preview": "^5.1.5",
"@uiw/react-md-editor": "^4.0.11",
"next": "16.0.7",
"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": {
"@tailwindcss/postcss": "^4",

View file

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